更新日:、 作成日:
VBA LBound 関数:配列の最小インデックスを取得する
はじめに
Excel VBA マクロの LBound 関数から配列の最小インデックスを取得する方法を紹介します。
LBound 関数は、配列の最小インデックスを返します。
(0 To 2) の配列なら 0 を返します。
配列の要素数も取得できます。
配列をループしたいときに使用します。
配列の最大インデックスを取得するには「UBound 関数」を使用します。
配列について詳しくは「配列」をご覧ください。
LBound 関数の引数と戻り値
LBound(配列)
配列の最小のインデックスを取得します。
LBound(配列, 次元)
指定した次元の最小のインデックスを取得します。
引数「配列」 | 配列を指定します。 |
引数「次元」 | 省略できます。引数「配列」の次元を指定します。 |
戻り値の型 | 数値型 (Long) |
解説
引数「配列」のインデックスが 0 To の配列なら 0 を返します。 1 To の配列なら 1 を返します。
引数「次元」を省略すると、一次元目の配列の最小インデックスを返します。これは 1 を指定したのと同じです。
引数「次元」に 2 を指定すると、二次元目の配列の最小インデックスを返します。(0 To 2, 1 To 3) の配列なら 1 を返します。
存在しない次元を指定すると「エラー 9 インデックスが有効範囲にありません。」が発生します。
最大インデックスを取得するには「UBound 関数」を使用します。
要素数
UBound(配列) - LBound(配列) + 1 のように入力して、配列の長さ (要素数) を取得できます。
スポンサーリンク
使用例
LBound 関数の使用例を紹介します。
配列の最小インデックスを取得する
配列の最小インデックスを取得します。
Dim i As Integer
Dim la(2) As Integer ' 0 to 2
Debug.Print(LBound(la)) ' 0、最小インデックス
Debug.Print(UBound(la)) ' 2、最大インデックス
Dim lb(2 To 3) As Integer
Debug.Print(LBound(lb)) ' 2、最小インデックス
Debug.Print(UBound(lb)) ' 3、最大インデックス
Dim lc(0 to 2, 1 To 3) As Integer
Debug.Print(LBound(lc, 1)) ' 0、最小インデックス
Debug.Print(UBound(lc, 1)) ' 2、最大インデックス
Debug.Print(LBound(lc, 2)) ' 1、最小インデックス
Debug.Print(UBound(lc, 2)) ' 3、最大インデックス
配列をループする
LBound 関数と「UBound 関数」を使用して、配列の全要素をループできます。
Dim i As Integer
Dim 配列(3) As Integer
For i = LBound(配列) To UBound(配列)
配列(i) = i
Next
要素数を取得する
LBound 関数と「UBound 関数」を使用して、配列の要素数を取得できます。
Dim 配列(2) As Integer
Dim i As Integer
i = UBound(配列) - LBound(配列) + 1 ' 要素数を取得する
Debug.Print(i) ' 3