for循环VBA向量

时间:2017-04-01 13:30:16

标签: arrays excel vba excel-vba for-loop

我正在尝试使用for循环在VBA中创建一个向量。我的问题是VBA不允许我为第一个矢量坐标设置不同的等式。当试图运行它时,我得到“预期数组”作为错误消息

'radius calculations
r(1) = (al * Log(al) / (al - 1)) * rb ' middle radius of block 1, trying to calculate first entry
'in r-vector, since this equation is different from the rest
r_m(1) = rb 'r_i-1/2 i=1

For i = 2 To n_r
    r(i) = al * r(i - 1) ' r_i
    r_m(i) = (r(i) - r(i - 1)) / (Log(r(i) / r(i - 1))) 
Next i

al和rb定义为Double(Public Const),而r定义为字符串。我过去只使用过Matlab,只阅读了VBA的介绍指南(VBA for Dummies等)。

非常感谢此事的所有帮助

电子

1 个答案:

答案 0 :(得分:2)

VBA不会像处理数组一样对待字符串(就像你在其他语言中看到的那样)。 r(1)看起来像VBA的数组语法(as can be seen here);因此,如果它被声明为字符串,它就会出错。

所以,基本上,VBA将r(1)解释为"我有一个名为r的数组,我希望将某些内容存储到元素编号1" 。但是,相反,它试图对不可变的字符串执行此操作。

Split函数可用于将字符串转换为数组,如果这是你需要的。

但是,如果你直接向上declare an array进行矢量数学运算,它会是最好的。

Dim myArray() As Double
Dim myArray2(10, 10, 10) As Double

ReDim keyword可用于调整数组大小,即使在for循环中也是如此。 (如果您需要确保在此操作过程中不要擦除内容,请不要忘记ReDim Preserve。)