- ベストアンサー
3次元配列の記述
VB6.0を使っています。 2次元配列は以下の様になりますが、3次元配列はどう記述すればいいのでしょうか? Dim phrase(1) As Variant phrase(0) = Array("0-0", "0-1", "0-2") phrase(1) = Array("1-0", "1-1", "1-2")
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
#3です。その後やって見たところ 後半は 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 k & " " & j & " " & i & "=" & d(k)(j)(i) Next i Next j Next k End Sub で動くことが判りました。VBAですが。 ただ上記はArrayのデータ数が少ないので、(27のうち 12しかないので)エラーで途中で止まりますが、増やせば旨く行くと思います。ご参考まで。 d(k)(j)(i)と表現するところがミソですね。 これが3次元配列なのかどうか判りませんが。
その他の回答 (3)
- imogasi
- ベストアンサー率27% (4737/17069)
配列の初期化の問題ですね。このご質問を見て、自分がこんな基本的なことも知らなかったことに愕然と(ちょっとオーバーです)しました。解説書や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)のところが問題だと思うのですが、小生は力不足で、どう表現するのか判りませんでした。
- taka_tetsu
- ベストアンサー率65% (1020/1553)
>2次元配列は以下の様になりますが、3次元配列はどう記述すればいいのでしょうか? 書かれている例、2次元配列ではないのですが。 この例ですと、1次元配列を要素にもつ1次元配列ですけど。 Dim phrase(0 To 1, 0 To 1) As Variant このような形式で宣言をして初めて2次元配列になります。
- todo36
- ベストアンサー率58% (728/1234)
Dim phrase As Variant phrase = 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")))