我正在尝试使用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等)。
非常感谢此事的所有帮助
电子
答案 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
。)