【配列の次元数を調べるFunction】
1 閲覧対象者
配列の引数から、配列の次元数を取得するコードを知りたい方。
2 得られる効果
配列の次元数を取得するFunctionの作成方法が分かる。
配列の最大次元数がわかる(60次元){別に分らんでもいい。使わないw}。
3 設計
Subプロシージャから、Function「配列の次元数」を呼び出し、配列の次元数をイミディエイトウィンドウに出力する。
4 コードの解説
実際のコード↓↓
Option Explicit Sub 配列の次元数を調べる() Dim arr1(1 To 3) Dim arr2(1 To 2, 1 To 4) Dim arr3(1 To 2, 1 To 4, 1 To 5) Dim x x = 配列の次元数(arr1) Debug.Print "arr1", x x = 配列の次元数(arr2) Debug.Print "arr2", x x = 配列の次元数(arr3) Debug.Print "arr3", x End Sub
Function 配列の次元数(a_arr) Rem 配列の次元数は、最大60次元 Rem 各次元の下限要素をLbound(a_arr,n)とすると、その次元が無ければ例外が発生する(on Error gotoでトラップする) Rem つまり、1次元から61次元まで下限を取得し、エラーになれば終了。 Dim x, i On Error GoTo Error_Handler00 For i = 1 To 61 'to 61にしておけば、必ず例外が発生する。 x = LBound(a_arr, i) Next Exit Function Error_Handler00: 'Fuctionの戻り値は関数名に代入する。 配列の次元数 = i - 1 End Function
処理結果
解説
プロシージャ「配列の次元数を調べる」の中で、単純に1次元配列~3次元配列(arr1~arr3)を作成しています。
各arrを、Function「配列の次元数」に渡して、次元数を調べます。
For文で「i」を回して、LBoundで次元があるか調べます。あればループ継続。無ければ、Error_Handler00に処理が飛びます。
配列の次元数は、「i - 1」となります。
ちなみに、For i = 1 To 61 とすることで、61次元目に到達すればError_Handler00に処理が飛びます(配列の限界値60に到達)。
5 感想
これで簡単に、配列の次元数を調べることができます。VBA使う仕事してますが、次元数を調べるコードを書いたことがなかったです。設計で決めるものかと思っていました。需要があるかどうかはわかりませんが、勉強になりました。
ではでは、このへんで(^^)/~~~