配列の次元数を取得する|Excel VBA |
UBound関数は、配列のインデックスの最大値を返す関数です。
引数dimensionには、調べる次元を指定することができますが、指定した次元が存在しない場合は、実行時エラーが発生します。
これを利用して、配列の次元数を取得することができます。
構文 UBound(arrayname[, dimension])
設定項目 | 内容 |
---|---|
arrayname | 配列変数の名前を指定 |
dimension | 対象となる配列の次元数を指定 |
次のサンプルは、変数ArrayDataを動的配列として宣言し、セルA1:B5の値を代入します。
ワークシートのセル範囲は2次元配列なので、変数ArrayDataは2次元配列となります。
次に、引数dimensionの値を1ずつ増やしながら、次元数をチェックします。
このとき、On Error Resume Nextステートメントを利用して、実行時エラーを回避しておきます。
変数iをインクリメントした後、引数dimensionに指定した次元が存在しない場合、実行時エラーが発生するため、実行時エラーが発生した際の変数iの値から1を引いた数が、配列の次元数になります。
Sub Sample()
Dim ArrayData() As Variant
Dim TempData As Variant
Dim i As Long
ArrayData = Range("A1:B5").Value
On Error Resume Next
Do While Err.Number = 0
i = i + 1
TempData = UBound(ArrayData, i)
Loop
On Error GoTo 0
MsgBox "次元数は " & i - 1 & " です。"
End Sub
UBound関数は予約識別子に分類される特別な関数で、名前付き引数を使って呼び出すことはできません。