組込関数 Len

文字列操作関数

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 BaseByte 配列など)で有効に使用できます。


■ 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 はバイト数を返す(マルチバイト処理に必要)
タイトルとURLをコピーしました