2017-01-23 283 views
1

尊敬的专家,我想将每个值存储在由VBA循环计算的VBA数组中。循环完成后,我想使用该VBA阵列进行进一步的计算。下面的示例更具体地解释我的问题。存储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内存Only.Basically我不想使用Excel Spreadsheet范围来存储每个循环值,然后将该电子表格范围定义为阵列。

回答

1

如果你知道元素的数量,那么下面会创建一个名为“答案”数组(见DIM语句)持有的五个评价:

Sub macro3() 

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

End Sub 

我怀疑,虽然你在做什么后可能会比这更复杂一点,所以如果情况如此,请详细说明。

+0

非常感谢你这两个expert's.The上面给出的两个逻辑解决了我的担忧。 – sagar

1

除了CLR的答案 - 如果你感受不到元素的数量基本公式REDIM阵列会是这个样子 -

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

如果您事先知道长度,我不会在每次迭代中调整数组的大小。如果你有一个数组,其长度在一些迭代中发生变化,我同意你的方法。 –