Excel VBA Len関数で文字列の文字数を取得する

VBA関数

ExcelVBAのLen関数で文字列の文字数を取得する方法をご説明します。

指定した文字列の文字数を取得したい場合や、文字列内をループしたい場合にLen関数を使用すると非常に便利です。

また、文字数だけでなく構造体など型のサイズも取得出来ます。

Len関数は使い方が簡単ですが、詳しく理解しようとすると以外と奥が深いです。

1.Len関数の使い方

指定した文字列の文字数を取得します。

構文は次のように記述します。

Len(文字列)
Len(データ型)

「文字列」には文字数を取得したい文字列や変数を指定します。

「データ型」にはDateやLongなどの型を指定します。

空白「””」を指定した場合は0が返されます。

「LenB」関数を使用するとバイト数を返します。

「Len(123)」の様に数値を指定した場合はエラーとなります。

Len関数は文字列か変数、そしてデータ型しか指定できませんので数値を指定した場合は次のようにエラーになります。

2.データ型の大きさ一覧と注意点

データ型を指定した場合に返されるデータ型の大きさです。

コード大きさ
バイト型 Byte1 バイト
ブール型 Boolean2 バイト
整数型 Integer2 バイト
長整数型 Long4 バイト
単精度浮動小数点数型 Single4 バイト
倍精度浮動小数点数型 Double8 バイト
通貨型 Currency8 バイト
日付型 Date8 バイト
オブジェクト型 Object4 バイト

注意点としてString型とVariant型です。

文字列が格納されたString型の変数を指定した場合、型の大きさではなく文字列の文字数が返されます。

Variant型も同様で数値を格納した場合は16バイトとなり、文字列を格納した場合は「22バイト+文字列の文字数」となります。

数値を扱う場合、String型とVariant型を扱う場合は取得する値にはご注意ください。

3.サンプルコード

サンプルコードです。

文字数を取得する
Sub Sample1()

Debug.Print Len("12345") ' 5

Debug.Print Len("ABC") ' 3

Debug.Print Len("") ' 0

End Sub
データ型の大きさを取得する
Sub Sample2()

    Dim A As Byte
    Dim B As Boolean
    Dim C As Integer
    Dim D As Long
    Dim E As Single
    Dim F As Double
    Dim G As Currency
    Dim H As Date
        
    Debug.Print Len(A)
    Debug.Print Len(B)
    Debug.Print Len(C)
    Debug.Print Len(D)
    Debug.Print Len(E)
    Debug.Print Len(F)
    Debug.Print Len(G)
    Debug.Print Len(H)

End Sub
文字数をループする

次のコードは指定した文字列数文ループして、Left関数を使用して文字列を抜き出しています。

Sub Sample3()

Dim i As Integer
Dim MyStr As String

MyStr = "ABCDEF"

For i = 1 To Len(MyStr)

    Debug.Print Left(MyStr, i)

Next i

End Sub
タイトルとURLをコピーしました