●概要●
UBound関数は、配列のインデックスの最大値を返す関数です。引数Dimensionには、調べる次元を指定することができますが、指定した次元が存在しない場合には、実行時エラーが発生します。これを利用して、配列の次元数を取得することができます。
構文 UBound(ArrayName[, Dimension])
設定項目 内容
ArrayName 配列変数の名前を指定
Dimension 対象となる配列の次元数を指定
次のサンプルは、変数ArrayDataを動的配列として宣言し、セルA1〜B5の値を代入します。ワークシートのセル範囲は2次元配列ですから、これで、変数ArrayDataは2次元配列となります。
次に、引数Dimensionの値を変数iを利用して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
MsgBox "次元数は " & i - 1 & " です。"
End Sub