VBAで配列を扱っていると、次のようなことはありませんか?
- 配列の開始位置が分からない
- ループ処理でエラーになる
- 安全に配列を処理したい
このような場合は、LBound関数を使うことで解決できます。
配列の「最初のインデックス(開始位置)」を取得できる関数です。
この記事では、LBoundの基本から実務での使い方まで分かりやすく解説します。
この記事でできること
- 配列の開始位置を取得できる
- 安全なループ処理が書ける
- Uboundとの組み合わせが分かる
基本:LBoundの使い方
基本構文はこちらです。
LBound(配列, [次元])
例:
Dim arr(1 To 5) As Long
MsgBox LBound(arr)
→ 1(配列の開始位置)
LBoundとは?
配列の最初の要素の番号(インデックス)を取得します。
- 1始まり → 1
- 0始まり → 0
基本例:配列のループ処理
Option Explicit
Sub LoopArray()
Dim arr(1 To 5) As Long
Dim i As Long
For i = LBound(arr) To UBound(arr)
arr(i) = i * 10
Debug.Print arr(i)
Next i
End Sub
安全に配列を処理できます。
Uboundとの組み合わせ(重要)
LBoundとセットで使うのが基本です。
For i = LBound(arr) To UBound(arr)
これにより、配列サイズが変わっても対応できます。
0始まり配列の例
Dim arr(0 To 4) As Long
MsgBox LBound(arr) ' → 0
配列によって開始位置が異なるため注意が必要です。
配列(Array関数)の場合
Dim arr
arr = Array("A", "B", "C")
MsgBox LBound(arr) ' → 0
Array関数は0始まりです。
2次元配列のLBound
次元を指定することもできます。
Dim arr(1 To 3, 1 To 2) As Long
MsgBox LBound(arr, 1) ' 行
MsgBox LBound(arr, 2) ' 列
セル範囲を配列として扱う場合
Dim arr As Variant
arr = Range("A1:B3").Value
MsgBox LBound(arr, 1) ' 行
MsgBox LBound(arr, 2) ' 列
通常は1始まりになります。
実務での活用例
- 配列ループ処理
- データ処理の安全化
- 可変配列対応
- Excelデータの一括処理
配列処理では必須の関数です。
よくあるエラーと対処法
① 配列範囲外エラー
LBoundとUboundを使ってループしてください。
② 0始まりと1始まりの混乱
配列の種類によって変わるので確認が必要です。
③ 次元指定ミス
2次元配列では次元を指定してください。
④ コードは正しいのにエラーになる
コピー時に全角文字や特殊文字が混ざることがあります。
その場合は該当行を手入力し直すと解決することがあります。
まとめ
- LBoundは配列の開始位置を取得
- Uboundとセットで使う
- 0始まり・1始まりに注意
- 配列処理の基本関数
LBoundを使いこなせるようになると、配列処理の安全性と柔軟性が大きく向上します。
VBAでは頻出の関数なので、必ずマスターしておきましょう。


コメント