前提・実現したいこと
2次元配列をループを使わないで宣言したい。
(Arr(0,0)で取り出せる2次元配列を、値を一つづつ簡単に変更できる形で作りたい。)
発生している問題・エラーメッセージ
インデックスが有効範囲にありません。
該当のソースコード
Sub Array_Test() Dim Arr() As Integer 'ループで作った場合 Arr(0,0) になる。 ReDim Arr(5, 5) For i = 0 To 5 For i2 = 0 To 5 Arr(i, i2) = 0 Next i2 Next i 'ループを使わずに作った場合 Arr(0)(0) になる。(型が一致しません) Arr = Array(Array(0, 0, 0, 0, 0, 0), _ Array(0, 0, 0, 0, 0, 0), _ Array(0, 0, 0, 0, 0, 0), _ Array(0, 0, 0, 0, 0, 0), _ Array(0, 0, 0, 0, 0, 0), _ Array(0, 0, 0, 0, 0, 0)) _ End Sub
試したこと
ローカルウィンドウで確認すると Arr(0)(0) になっているので、 Arr(0,0) でループを使わずに宣言したいです。
「宣言」をどういう意味で使っていますか?
文字通りなら、Dim Arr(3, 3) As Integer で宣言できます。
「ループを使う」で出来ているのならそのコードも提示された方が回答者との認識や定義にずれがなくなると思います
(コードはマークダウンのcode機能を利用してご提示ください)
宣言については配列が空で宣言して、ReDimで変更してからforで2次元配列にしていたのですが、
デバッグの為に2次元配列内の値を一つづつ打ち込みで簡単に変更できる形で作りたいと思いました。
コードを変更しました。質問がわかりずらく申し訳ありません。よろしくお願いします。
根本の解決にはならないですが、
>>>'ループを使わずに作った場合 Arr(0)(0) になる。(型が一致しません)
この方法で配列を作って「ReDim Arr(X, X)」で定義した配列に値を入れる仕様にしたら
希望する仕様ができると思います。
※配列の入れ替え処理を関数化して使うようにしたらそこまで見ずらくもならないと思います。
回答2件
あなたの回答
tips
プレビュー