2017-01-23 19 views
1

熟練した専門家を尊敬し、VBAループで計算されたVBA配列に各値を保存します。ループが完了した後、私はそのVBA-Arrayを私の次のCalculations.Belowの例に使って、私の質問をより具体的に説明したいと思います。VBA計算値を配列に格納

Sub macro3() 

For x = 1 To 5 
xx = 1 + x 
Next 

End Sub 

基本的にループ上から(2,3,4,5,6)すなわち派生インクルード各回答は特定のアレイに、または各値のつまり(2を使用するために私を助けて、何かに格納する必要があり、 3,4,5,6)を計算しなおしてください。全体のアクティビティはVBAメモリからのみ行う必要があります。基本的にExcelスプレッドシートの範囲を使用して各ループ値を保存し、そのスプレッドシートの範囲をアレイ。

答えて

1

あなたは要素の数がわかっている場合は、次の5つの評価を保持している「と答え」と呼ばれる配列(DIM文を参照してください)作成します。

Sub macro3() 

Dim answer(1 To 5) 
For x = 1 To 5 
    answer(x) = 1 + x 
Next 

End Sub 

を私はあなたが後にしている何それにもかかわらず疑いそれより少し複雑かもしれないので、そうであれば詳細を記してください。 CLRの答えに加えて

+0

上記そんなにexpert's.Theの両方が与えられたありがとう - あなたはいけない場合」要素の数、配列は次のようになりますREDIMするための基本的な式は知っています論理は私の懸念を解決しました。 – sagar

1

-

Sub macro3() 
Dim x As Integer 
Dim xx() As Variant 

For x = 1 To 5 
    ReDim Preserve xx(0 To x - 1) 
    xx(x - 1) = 1 + x 
Next 

End Sub 
+0

私はFor-Loopの 'ReDim Preserve'部分を避けようとします。計算時間が大幅に増加します。 –

+0

@MarcoGetrostはどんな状況にあるかに大きく依存します。あなたが話しているのは、大量のデータを使った最適化ですが、10k以下のレコードではそれほど重要ではありません。あなたが最初に十分な大きさの配列を定義し、ReDimsを例えば10kレコードごとに制限することができれば最高です。 –

+0

あらかじめ長さを知っている場合は、各反復で配列のサイズを変更すると効果がありません。いくつかの繰り返しで長さが変わる配列を持っているなら、私はあなたのアプローチに同意します。 –

関連する問題