【Excel VBA】文字列の長さを取得する(Len/LenB関数)|Excel VBA |
レポート作成やデータ整理でVBAを使っていると、「文字数をどうカウントするの?」という疑問にぶつかることがあります。実は、VBAには文字列の長さを調べるためのLEN関数とLENB関数という2つの方法があります。
本記事では、この2つの違いと使い分けを分かりやすく解説し、文字数カウントの基本を紹介します。入力フォームの設定や、SNS投稿の前に文字数をチェックするときにも役立ちます。
Excel VBAのLen関数は、文字列の「文字数」を返します。
一方、LenB関数は、文字列がVBA内部で使用している「バイト数」を返します。
Len関数の構文は次のとおりです。
関数のカッコの中には、文字列か変数のどちらかを記載します。
Len(string | varname)
カウントする文字列
変数
例1:文字列「あいうえお」の文字数をカウントします。カウントした文字数をメッセージボックスに表示します。
Sub Len1()
MsgBox Len("あいうえお")
End sub

変数(vername)に文字列を格納して、その文字数をカウントすることもできます。
例2:文字列「あいうえお」を変数strMojiに格納して、その文字数をカウントします。カウントした文字数をメッセージボックスに表示します。結果は例1と同じく「5」になります。
Sub Len2 ()
Dim strMoji As String
strMoji = "あいうえお"
MsgBox Len(strMoji)
End Sub
例3:A1セルに入力されている文字数をカウントします。カウントした文字数をメッセージボックスに表示します。
Sub Len3()
Dim strMoji As String
strMoji = Range("A1").Value
MsgBox Len(strMoji)
End Sub
例4:A1セルに入力されている文字数をカウントします。文字数が10文字以下の場合は「OKです」、10文字を超えた場合は「入力は10文字までにしてください」とメッセージボックスに表示します。
Sub Len4()
Dim Mojicount As Long
Mojicount = Len(Range("A1").Value) ' A1セルの文字数を取得
' 条件分岐
If Mojicount <= 10 Then
MsgBox "OKです"
Else
MsgBox "入力は10文字までにしてください"
End If
End Sub
LenB関数の構文は、Len関数と同じです。
関数のカッコの中には、文字列か変数のどちらかを記載します。
LenB(string | varname)
カウントする文字列
変数
Excel VBAのLenB関数は、「文字列がVBA内部で使用しているバイト数」を返します。アルファベット・ひらがな・漢字など多くの文字は全角・半角に関係なく1文字あたり2バイトとしてカウントされます。一方、絵文字など一部の特殊な文字は、1文字あたり4バイトとしてカウントされます。
例5:文字列「あいうえお」のバイト数をLenB関数で取得します。取得したバイト数をメッセージボックスに表示します。
Sub Len5()
MsgBox LenB("あいうえお")
End sub

Excelのワークシート関数にもLEN関数やLENB関数があります。日本語版WindowsのLENB関数は、半角文字を1バイト、全角文字を2バイトでカウントするため、VBAのLenB関数とは基準が異なる点に注意してください。また、絵文字など一部の特殊な文字は、1文字あたりのバイト数が異なる場合があります。
Excel VBAでワークシート関数のLENB関数を実行する際は、ApplicationオブジェクトのEvaluateメソッドを使用します。
例6:A1セルに入力されている文字列をワークシート関数のLENB関数でカウントします。カウントした結果をメッセージボックスに表示します。
Sub Len6()
MsgBox Application.Evaluate("LENB(A1)")
End Sub