プロが教える店舗&オフィスのセキュリティ対策術

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")

A 回答 (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次元配列なのかどうか判りませんが。
    • good
    • 0

配列の初期化の問題ですね。

このご質問を見て、自分がこんな基本的なことも知らなかったことに愕然と(ちょっとオーバーです)しました。解説書や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)のところが問題だと思うのですが、小生は力不足で、どう表現するのか判りませんでした。
    • good
    • 0

>2次元配列は以下の様になりますが、3次元配列はどう記述すればいいのでしょうか?



書かれている例、2次元配列ではないのですが。

この例ですと、1次元配列を要素にもつ1次元配列ですけど。
Dim phrase(0 To 1, 0 To 1) As Variant

このような形式で宣言をして初めて2次元配列になります。
    • good
    • 0

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")))
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!