VBA(Visual Basic for Applications)における組み込み関数 Len
は、文字列の長さや変数のバイト数を取得する関数です。最も基本的で頻繁に使用される関数の1つであり、文字列の処理やデータ検証、ループ制御など、幅広い用途で活用されます。
■ 1. Len関数の概要
Len
関数は、指定された変数または文字列の長さ(バイト数)を返します。
- 文字列に対して使用した場合は、その文字数を返します。
- 変数(たとえば配列、ユーザー定義型など)に対して使用した場合は、そのメモリ上で使用するバイト数を返します。
■ 2. Len関数の構文
Len(expression)
引数:
expression
:文字列、数値、変数、配列、またはオブジェクトなど。省略不可。
戻り値:
- 指定された対象に応じて、文字数またはバイト数を
Long
型で返します。
■ 3. 基本的な使用例(文字列の場合)
Dim str As String
str = "Hello"
MsgBox Len(str) ' 結果:5(H, e, l, l, o の5文字)
空文字列の場合:
MsgBox Len("") ' 結果:0
全角文字(例:「あ」)も1文字としてカウントされます:
MsgBox Len("あいう") ' 結果:3
■ 4. 数値型や変数への使用例
数値に対して使うと、内部的に文字列に変換されたときの桁数が返されます:
MsgBox Len(12345) ' 結果:5
MsgBox Len(-99.9) ' 結果:5(マイナス・小数点も含む)
ユーザー定義型に使用
Type Person
Name As String * 20
Age As Integer
End Type
Sub TestLen()
Dim p As Person
MsgBox Len(p) ' 結果:22(文字列固定長20 + 整数2バイト)
End Sub
このように、文字列固定長が指定されている場合には、構造体のバイト長としての使用もできます。
■ 5. LenとLenBの違い
VBAには、Len
と似た関数に LenB
があります。
関数名 | 返す内容 | 特徴 |
---|---|---|
Len | 文字数(= Unicode 文字数) | 全角・半角関係なく「1文字=1」 |
LenB | バイト数 | 文字列は「1文字=2バイト」 |
例(日本語の全角文字含む)
Dim str As String
str = "あAい"
MsgBox Len(str) ' 結果:3
MsgBox LenB(str) ' 結果:6(Unicodeなので各文字2バイト)
※ LenB
を使うには、バイトベースの環境(Option Base
や Byte
配列など)で有効に使用できます。
■ 6. 応用例
● 入力データのバリデーション
Dim userInput As String
userInput = InputBox("名前を入力してください(10文字以内):")
If Len(userInput) > 10 Then
MsgBox "文字数オーバーです。10文字以内で入力してください。"
Else
MsgBox "入力ありがとうございます。"
End If
● 文字列から末尾のN文字を取り出す
Dim str As String
str = "ABCDEFG"
Dim last3 As String
last3 = Right(str, 3) ' → "EFG"
ここで Len(str)
を使えば、動的に末尾の数を制御できます。
■ 7. 配列やオブジェクトとの関係
● 配列に対しての使用は注意が必要
配列変数に Len
を使うと、配列変数そのもののサイズ(ポインタ情報)を返します。
Dim arr(1 To 5) As Integer
MsgBox Len(arr) ' 結果:4(ポインタサイズ)
要素1つ分のバイトサイズが返るだけで、配列全体の長さを求めるには以下のようにします:
MsgBox (UBound(arr) - LBound(arr) + 1) ' 結果:5(要素数)
■ 8. Lenの活用パターン
活用場面 | 内容 |
---|---|
入力チェック | 文字数制限や空白判定 |
文字列切り取り | Left , Right , Mid と併用 |
フォーマット調整 | 固定長レイアウトへの変換(帳票作成など) |
文字列ループ処理 | For i = 1 To Len(str) で文字ごと処理 |
バイトサイズ確認 | 固定長構造体のサイズ確認 |
■ 9. 注意点
● Null値はエラーになる
引数が Null
の場合は、エラーが発生します。
Dim x As Variant
x = Null
MsgBox Len(x) ' → エラー(型が一致しない)
対処方法(Nz 的な処理)
If Not IsNull(x) Then
MsgBox Len(x)
Else
MsgBox "Null値です"
End If
■ 10. 他の関連関数との比較
関数 | 説明 |
---|---|
Len | 文字数または変数のバイトサイズを返す |
LenB | バイト数(2バイト文字対応) |
InStr | 文字列中の部分文字列の位置を返す |
Left | 左端から指定文字数分を取得 |
Right | 右端から指定文字数分を取得 |
Mid | 中間の部分文字列を取得 |
■ 11. まとめ
VBAの Len
関数は、文字列の文字数、または変数のサイズ(バイト数)を取得する汎用的で便利な関数です。特に文字列処理では、文字数制限、部分文字列の抽出、入力バリデーションなど、多くの場面で役立ちます。
✅ 要点まとめ
- 文字列:
Len("abc")
→ 3 - 数値:桁数として扱われる(”123″ → 3)
- 構造体:バイトサイズを返す
- 配列:要素のサイズではなく、ポインタ情報のサイズが返る
LenB
はバイト数を返す(マルチバイト処理に必要)