配列操作

配列の次元数を取得する【Ubound関数応用】【ExcelVBA】

配列の次元数を求めたい

配列が1次元なのか、2次元なのか次元数を求めたい場合があります。
Ubound関数を応用する事で配列の次元数を取得可能です。

配列の次元数を求めるサンプルコード

Ubound関数でエラーが出るまでループさせ、エラーがでた数-1で引数の配列を次元を取得可能です。

'■配列の次元数を取得する
Public Function Call_arrDimensionCheck(arr As Variant)
    Dim tmp As Variant
    Dim i As Long
    
    '■エラーが出るまでループ処理
    On Error Resume Next
    Do While Err.Number = 0
        i = i + 1
        tmp = UBound(arr, i)
    Loop
    On Error GoTo 0
    
    '■エラーが出た前の数(i-1)が渡された配列の次元数
    Call_arrDimensionCheck = i - 1
End Function

使い方

上記をお好きなモジュール内にコピペしてください。
実際に使用する時は以下のような形で使用してください。

Public Sub sample()

    Dim arr1D As Variant: ReDim arr1D(1)
    Debug.Print Call_arrDimensionCheck(arr1D)   '1
    
    Dim arr2D As Variant: ReDim arr2D(1, 1)
    Debug.Print Call_arrDimensionCheck(arr2D)   '2
    
    Dim arr3D As Variant: ReDim arr3D(1, 1, 1)
    Debug.Print Call_arrDimensionCheck(arr3D)   '3

End Sub

関連記事

コメント

タイトルとURLをコピーしました