HOME > 即効テクニック > Excel VBA > 関数関連のテクニック > 配列の次元数を取得する

配列の次元数を取得する|Excel VBA

関数関連のテクニック

配列の次元数を取得する

(Excel 2000/2002/2003/2007/2010)

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関数は予約識別子に分類される特別な関数で、名前付き引数を使って呼び出すことはできません。