循环VBA向量

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

'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被定义为一个string。 我以前只用过Matlab,只能读VBA的介绍指南(VBA for Dummies等)

非常感谢在这个问题上的所有帮助

Ë

VBA不像对待数组一样对待string(就像你在其他语言中看到的那样)。 r(1)看起来像VBA的数组语法( 在这里可以看到 ); 因此,如果将其声明为string,则会发生错误。

所以,本质上,VBA解释r(1)的意思是“我有一个名为r的数组,我想存储一些元素到数字1 ”。 但是,它试图做到这一点不可变的string。

如果这是你所需要的, Split函数可以用来把一个string转换成一个数组。

不过,如果你直接为vectormath声明一个数组 ,那将是最好的。

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

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