
VBAのUBound関数とは?基本的な構文や使い方を解説
テーブルやエクセルからデータを配列に格納して、配列の要素数だけ繰り返し処理をしたいと思ったことはありませんか。
UBound関数、LBound関数を利用すると、配列のインデックス(要素数)の最大値、最小値を取得できます。
ここでは、UBound関数について説明します。
1.UBound関数について
1-1.UBound関数とは
UBound関数とは、配列の指定された次元で使用可能なインデックスの最大値を取得する関数です。主に、配列のインデックス数だけ繰り返し処理を行う際に使用します。最小値の場合は「Lbpound」を使用します。※「配列の最大インデックスに設定されている値」ではありません。
1-2.UBound関数の構文
UBound(配列の名前, 対象の次元)
戻り値はLong形式
「対象の次元」とは、多次元配列の場合に使用します。
2.UBound関数の使用例
2-1.基本的な使用例
Ubound関数の引数一つの例
Sub Sample1() 'インデックスの値が7の配列 Dim arr(7) As Integer MsgBox "インデックスの値は " & UBound(arr) & " です" End Sub
実行結果:配列で宣言した「7」が取得されています
Ubound関数の引数二つの場合
Sub Sample2() '3次元配列で、インデックスが「7, 5, 10」 Dim arr(7, 5, 10) As Integer MsgBox "インデックス1の値は " & UBound(arr, 1) & " です" MsgBox "インデックス2の値は " & UBound(arr, 2) & " です" MsgBox "インデックス3の値は " & UBound(arr, 3) & " です" End Sub
実行結果:配列で宣言した「7」、「5」、「10」が取得されています
2-2.他の関数も使った使用例
★Lboundを使った配列の最小最大値の取得
Sub Sample3() Dim arr(3) As Integer Dim i As Integer For i = LBound(arr) To UBound(arr) MsgBox i + 1 & "回目です" Next End Sub
実行結果:配列で宣言した値+1回ループしています
※配列は、0番目からはじまります
LBoundで取得した値:0
UBounbdで取得した値:3
3.注意すべきこと
下記のように、途中でインデックス数が変更される場合、実際に値を使用する直前で取得する必要があります。
Sub Sample4() Dim arr() As Variant '配列arrをインデックス3つで初期化 arr = Array(1, 2, 3) MsgBox "インデックスの値は " & UBound(arr) + 1 & " です" ‘※1 初期化した3を取得 '配列arrをインデックス4つで初期化 arr = Array(1, 2, 3, 4) MsgBox "インデックスの値は " & UBound(arr) + 1 & " です" ‘※2 初期化した4を取得 End Sub
実行結果:
※1時点での実行結果:
※2時点での実行結果:
4.最後に
UBound関数を使用する場合は、配列の構造や、インデックス数の固定値/可変値に注意して、使ってください。
コメント