Microsoftサイト は、次のコードが機能することを示唆しています。
_Dim numbers = {{1, 2}, {3, 4}, {5, 6}}
_
ただし、Excel VBAモジュールで使用しようとすると、エラーが発生します。以下は1D配列に対して機能します。
A = Array(1, 2, 3, 4, 5)
しかし、私は2D配列に対して同じことをする方法を見つけることができませんでした。何か案は?
また、Evaluate
関数と静的配列を利用して、簡略形式を使用することもできます。以下のコードでは、varData
が設定されています。ここで、[]
はEvaluate
関数の省略形であり、{...}
式は静的配列を示します。各行は;
で区切られ、各フィールドは,
で区切られます。これにより、simocoのコードと同じ最終結果が得られますが、構文は元の質問により近いものになります。
Sub ArrayShorthand()
Dim varData As Variant
Dim intCounter1 As Integer
Dim intCounter2 As Integer
' set the array
varData = [{1, 2, 3; 4, 5, 6; 7, 8, 9}]
' test
For intCounter1 = 1 To UBound(varData, 1)
For intCounter2 = 1 To UBound(varData, 2)
Debug.Print varData(intCounter1, intCounter2)
Next intCounter2
Next intCounter1
End Sub
マイクロソフトのサイトは提案しています...
この提案はVB.NET用ですが、VBA用ではありません。
VBAについては、正しい方向に進んでいました。あなたはこれを行うことができます:
Dim A as Variant
A = Array(Array(1, 2), Array(3, 4), Array(5, 6))
したがって、ここでは、その次元を伝えるだけで、何もない配列を生成します。 0は配列内の位置としてカウントされるため、次元はX + 1です。
Dim MyArray(X, X) As Integer
次に、あなたは例のために行うことによってそれを埋めます
MyArray (0,0) = 1
MyArray (0,1) = 2
MyArray (1,0) = 3
MyArray (1,1) = 4
...
等々。
それを埋めるより便利な方法が必要な場合は、それを埋める数値に固有のロジックがある場合、For Cyclesを使用できます。