Len, LenB 関数には指定可能な引数が2つあり、いずれか1つだけを指定します。
文字列を指定すると、その文字列の文字数を長整数型 (Long) の値で返します。
変数を指定すると、その変数に必要なバイト数を同じく長整数型で返します。
Len、LenB関数の使用方法
引数名 | 省略 | 説明 |
---|---|---|
※いずれか1つを必ず指定 | ||
String | ※ | 任意の文字列式を指定します。 |
Varname | ※ | 任意の変数の名前を指定します。 |
VBAの内部処理では文字列をUnicodeで扱っています。したがって、LenB 関数によりバイト数を単純に取得すると半角・全角にかかわらず1文字2バイトとして返ってきます。もし、半角1バイト、全角2バイトを返してほしい場合は、文字コードをShift_JISに変換した後に LenB 関数を使用してください。
(使用例2参照)
使用例
Len関数の使用例
Len 関数により、文字列の文字数と変数のバイト数を取得する例です。
Sub sample_ef023_01()
Dim wStr As String
Dim wInt As Integer
Dim wLng As Long
wStr = "aあA亜ア"
Debug.Print Len(wStr) '文字列の文字数
Debug.Print Len(wInt) 'Integer型のバイト数
Debug.Print Len(wLng) 'Long型のバイト数
Debug.Print Len(vbCrLf) '組み込み定数の文字数
End Sub
LenB関数の使用例1
LenB 関数により文字列のバイト数を取得する例です。前述の注意書きにも記載したとおり、文字列をUnicodeとして扱いますので、1文字2バイトとしてカウントされます。
Sub sample_ef023_02()
Dim wStr As String
wStr = "aあA亜ア"
Debug.Print LenB(wStr) 'バイト数(Unicode)
End Sub
LenB関数の使用例2
LenB 関数により半角を1バイト、全角を2バイトとしてカウントする例です。文字コードをShift-Jis変換する必要があるので、このマクロはWindows機で実行する必要があります。
Sub sample_ef023_03()
'### このマクロはWindows機で実行してください。###
Dim wStr As String
Dim wStrC As String
wStr = "aあA亜ア"
'Unicode ⇒ システム既定文字コード(Shift_JIS)へ変換
wStrC = StrConv(wStr, vbFromUnicode)
Debug.Print LenB(wStrC) 'バイト数(Shift_JIS)
End Sub