ExcelVBAのLen関数で文字列の文字数を取得する方法をご説明します。
指定した文字列の文字数を取得したい場合や、文字列内をループしたい場合にLen関数を使用すると非常に便利です。
また、文字数だけでなく構造体など型のサイズも取得出来ます。
Len関数は使い方が簡単ですが、詳しく理解しようとすると以外と奥が深いです。
1.Len関数の使い方
指定した文字列の文字数を取得します。
構文は次のように記述します。
Len(文字列)
Len(データ型)
「文字列」には文字数を取得したい文字列や変数を指定します。
「データ型」にはDateやLongなどの型を指定します。
空白「””」を指定した場合は0が返されます。
「LenB」関数を使用するとバイト数を返します。
「Len(123)」の様に数値を指定した場合はエラーとなります。
Len関数は文字列か変数、そしてデータ型しか指定できませんので数値を指定した場合は次のようにエラーになります。
2.データ型の大きさ一覧と注意点
データ型を指定した場合に返されるデータ型の大きさです。
型 | コード | 大きさ |
バイト型 | Byte | 1 バイト |
ブール型 | Boolean | 2 バイト |
整数型 | Integer | 2 バイト |
長整数型 | Long | 4 バイト |
単精度浮動小数点数型 | Single | 4 バイト |
倍精度浮動小数点数型 | Double | 8 バイト |
通貨型 | Currency | 8 バイト |
日付型 | Date | 8 バイト |
オブジェクト型 | Object | 4 バイト |
注意点として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