おひさしぶりです。
今回は、配列の次元数を求めるコードを紹介します。
基本的に、VBAでは直接的に次元数を求める関数などはありません。
そのためUBoundの2つ目の引数を使用して、間接的に次元数を求めていきます。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
'返り値 '配列ではない場合:0 '配列の場合 :次元数 Function RankCount(ByRef ArrayData As Variant) As Long Dim Tmp As Variant RankCount = 0 On Error Resume Next 'エラーにならない限り、次元数を増やして確認。 Do While Err.Number = 0 RankCount = RankCount + 1 Tmp = UBound(ArrayData, RankCount) Loop On Error GoTo 0 Err.Clear RankCount = RankCount - 1 End Function |
使い方
1 2 3 4 5 6 7 |
Sub Main() Dim Hairetsu(1 to 10,4,5 to 7) Msgbox RankCount(Hairetsu) '返り値 3 End Sub |
以上になります。
---コメント---