Excel VBA 文字列の長さを取得する(Len/LenB)

Excel VBA のLen/LenB関数で、文字列の長さを取得するサンプルです。

目次

文字列 文字列の長さを取得する(Len)
  文字列のバイト数を取得する(LenB)

文字列の長さを取得する(Len)

Len(文字列)
  • Len関数は、文字列の長さを取得します。
  • 1文字の半角文字や全角文字は、1として数えます。

文字列の長さを取得するサンプルです。

Sub test1()
    Dim a As String
    a = "abcde"

    Debug.Print Len(a) '5
    
    Dim b As String
    b = "あいうえお"

    Debug.Print Len(b) '5
End Sub

3行目は、半角文字です。
8行目は、全角文字です。

文字列のバイト数を取得する(LenB)

LenB(文字列)
  • LenB関数は、文字列のバイト数を取得します。
  • 1文字の全角文字は2バイトとして数えます。
  • 1文字の半角文字も2バイトになるので注意が必要です。

文字列の長さを取得するサンプルです。

Sub test1()
    Dim a As String
    a = "abcde"

    Debug.Print LenB(a) '10
    
    Dim b As String
    b = "あいうえお"

    Debug.Print LenB(b) '10
    
    Dim c As String
    c = "abcあい"

    Debug.Print LenB(c) '10
    
    Debug.Print LenB(StrConv(a, vbFromUnicode)) '5
    Debug.Print LenB(StrConv(c, vbFromUnicode)) '7
End Sub

3行目は、半角文字ですが5行目は10が表示されます。
8行目は、全角文字です。10行目は10と表示されます。
13行目は、半角文字と全角文字があります。15行目は10と表示されます。

17,18行目のようにStrConv関数で変換すると半角は1バイトで数えます。
vbFromUnicodeは、文字列をUnicodeからシステム既定のものに変換します。(Macintoshは使用不可)。
以下は、MicrosoftのStrConv関数のリンクです。
https://support.microsoft.com/ja-jp/office/strconv-%E9%96%A2%E6%95%B0-19c3816f-dbc9-4adf-891c-fd32734c92e0

関連の記事

Excel VBA 文字列の位置を取得する(InStr/InStrRev)
Excel VBA 文字列を切り出す(Left/Mid/Right)
Excel VBA 英字の大文字と小文字を変換(UCase/LCase)

△上に戻る