HOME > 即効テクニック > Excel VBA > 文字列操作関連のテクニック > 【Excel VBA】文字列の長さを取得する(Len/LenB関数)

【Excel VBA】文字列の長さを取得する(Len/LenB関数)|Excel VBA

文字列操作関連のテクニック

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

レポート作成やデータ整理でVBAを使っていると、「文字数をどうカウントするの?」という疑問にぶつかることがあります。実は、VBAには文字列の長さを調べるためのLEN関数とLENB関数という2つの方法があります。
本記事では、この2つの違いと使い分けを分かりやすく解説し、文字数カウントの基本を紹介します。入力フォームの設定や、SNS投稿の前に文字数をチェックするときにも役立ちます。

Len関数とLenB関数の違い

Excel VBAのLen関数は、文字列の「文字数」を返します。
一方、LenB関数は、文字列がVBA内部で使用している「バイト数」を返します。

Len関数

Len関数の構文は次のとおりです。
関数のカッコの中には、文字列か変数のどちらかを記載します。

Len(string | varname)

カウントする文字列

変数

Len関数で文字列の文字数をカウントする

例1:文字列「あいうえお」の文字数をカウントします。カウントした文字数をメッセージボックスに表示します。

Sub Len1()
	MsgBox Len("あいうえお")	
End sub

Len関数で変数に格納された文字数をカウントする

変数(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関数

LenB関数の構文は、Len関数と同じです。
関数のカッコの中には、文字列か変数のどちらかを記載します。

LenB(string | varname)

カウントする文字列

変数

Excel VBAのLenB関数は、「文字列がVBA内部で使用しているバイト数」を返します。アルファベット・ひらがな・漢字など多くの文字は全角・半角に関係なく1文字あたり2バイトとしてカウントされます。一方、絵文字など一部の特殊な文字は、1文字あたり4バイトとしてカウントされます。

例5:文字列「あいうえお」のバイト数をLenB関数で取得します。取得したバイト数をメッセージボックスに表示します。

Sub Len5()
	MsgBox LenB("あいうえお")	
End sub

ワークシート関数のLENB

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

「Excel VBA」の即効テクニック人気記事