2016-08-04 12 views
0

次のコードが動作する理由を教えてください。配列に変数を代入する。 VBAコードが明確でない

Sub MyTest() 
Dim arrL1(3) As Variant 
Dim arrTemp(10) As Variant 
Dim i As Long, j As Long, s As String 
Dim varTemp As Variant 

For i = LBound(arrL1) To UBound(arrL1) 
    For j = LBound(arrTemp) To UBound(arrTemp) 
     arrTemp(j) = i + j 
    Next 

    **arrL1(i) = arrTemp** 
Next 
' 2nd part of the code 

**For i = LBound(arrL1) To UBound(arrL1)** 
    varTemp = arrL1(i) 
    s = "" 
    For j = LBound(varTemp) To UBound(varTemp)  
     s = s & Format(varTemp(j), "@@@") 
    Next 
    Debug.Print s 
Next 

End Sub 

私が混乱しているのは、最初の「スター付き」の行です。arrL1(i) = arrTempです。私のプロジェクトでこのように配列を割り当てると、私はObject or Application defined errorになります。

もう1つの混乱している行が2番目の部分にあります。つまり、varTemp = arrL1(i)です。別の変数varTempが本当に必要ですか? arrL1(i)で逃げることはできませんか?

ありがとうございます。

答えて

1

最初の質問に関しては、Dim arrL1(3) As Variantを定義しましたか?それをループのように正確に設定しましたか?

2番目の質問については、varTemp = arrL1(i) を持っている必要はありません。あなたのコードは、(以下のコードのように)機能します。

For i = LBound(arrL1) To UBound(arrL1) 
    s = "" 
    For j = LBound(arrL1(i)) To UBound(arrL1(i)) 
     s = s & Format(arrL1(i)(j), "@@@") 
    Next 

    Debug.Print s 
Next 
+0

@ Shai Rado:私の配列のサイズは事前にわかっていないので、最初の質問で「Dim b as Variant」と宣言しました。これが問題だろうか? – Lola

+0

@Lolaあなたは 'arrL1(3)'の代わりに 'b'を使いますか? –

+0

@ Shai Rado:申し訳ありませんが、私はより明確にすべきでした。上記のコードは教科書に由来しています。私は自分のコードでそれを使用するのに苦労します。それをリダイムすることなくバリアントに配列(テーブルn x k)を割り当てることは、エラーにつながりませんでした。 – Lola

関連する問題