2016-04-26 6 views
1
Sub ArrTest() 
Dim Arr() As Variant 

    Arr(1, 1) = "Test" 

End Sub 

どのようなサイズにする必要があるのか​​わからないため、配列の寸法を設定しませんでした。私は最終的にこの配列をスプレッドシートに書きます。私は未来に書き込まれるセルの左上隅を "テスト"として割り当てようとしていました。動的配列要素に値を代入すると、範囲外のエラーが発生します。

私が正しく理解していれば、動的配列は0でインデックスを作成するので、最初の要素は本当にArr(0,0)です。私はArr(0,0)を試して、同じエラーを受けました。

私は、本当の問題があると思います:

未定義の動的配列の要素に値を代入する方法は?

答えて

1

使用する前に、配列をサイズに合わせる必要があります。しかしこれは非常に単純です:

Sub ArrTest() 
    Dim Arr() As Variant 

    redim Arr(0 to 1, 0 to 1) 
    Arr(1, 1) = "Test" 

    redim preserve Arr(0 to 2, 0 to 1) 
    Arr(2, 1) = "Test2" 

End Sub 

redim方法は、あなたの配列を宣言し直すます。キーワードPreserveを使用すると、配列に格納されたデータが再寸法処理中に失われないことが保証されます。

+1

それで、後で私がXループの途中で立ち往生した場合は、毎回アレイを再描画する必要があります。そして、それを見て、あなたがredimするとき、あなたは新しいインデックス番号を調整するだけです。だから私は 'redim preserve Arr(0からX、0から1)'を行うことができます。 –

+0

私はpreserveの例でArrを落としたと思いますか? –

+0

両方のカウントでYesです。ループのたびに、毎回「保存」を行います。そして私は誤って保存文に 'Arr'を落としました。 – JNevill

関連する問題