Home > 即効テクニック > Excel VBA > 関数関連のテクニック > 配列の時限数を取得する

即効テクニック

関数関連のテクニック

配列の時限数を取得する

(Excel 2000/2002/2003)
●概要●
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