配列の初期化の問題ですね。このご質問を見て、自分がこんな基本的なことも知らなかったことに愕然と(ちょっとオーバーです)しました。解説書やWEBを調べましたが、私の持っている本やWEBを見た限りでは載っていませんでした。
まだズバリ回答は出ていないように思うし、答えを知りたいこともあって、下記を上げてみます。
本当はd(i,j,k)の形で表せると良いのですが、d(i,j)(k)
の形になりますが、下記を実行すると1から27が次々表示されるので、3次元配列的な値の設定と利用に使えると思います。
ただVBAでテストした事も気がかりですが、取りあえずあげて見ます。
Sub test02()
Dim d(2, 2)
d(0, 0) = Array(1, 2, 3)
d(0, 1) = Array(4, 5, 6)
d(0, 2) = Array(7, 8, 9)
d(1, 0) = Array(10, 11, 12)
d(1, 1) = Array(13, 14, 15)
d(1, 2) = Array(16, 17, 18)
d(2, 0) = Array(19, 20, 21)
d(2, 1) = Array(22, 23, 24)
d(2, 2) = Array(25, 26, 27)
For k = 0 To 2
For j = 0 To 2
For i = 0 To 2
MsgBox d(k, j)(i)
Next i
Next j
Next k
End Sub
#1のご回答のようにArrayのネストが可能なら、上記は
回りくどいですね。
Sub test03()
Dim d As Variant
d = Array(Array(Array("0-0", "0-1", "0-2"), Array("1-0", "1-1", "1-2")), Array(Array("0-0", "0-1", "0-2"), Array("1-0", "1-1", "1-2")))
For k = 0 To 2
For j = 0 To 2
For i = 0 To 2
MsgBox d(k, j, i)
Next i
Next j
Next k
End Sub
を実行してみるとうまく行きませんでした。
MsgBox d(k, j, i)のところが問題だと思うのですが、小生は力不足で、どう表現するのか判りませんでした。