2017-04-01 182 views
1

我想在for循環中使用VBA創建一個向量。我的問題是,VBA不允許我爲第一個矢量座標有一個不同的方程。當試圖運行它,我得到「預期陣」作爲一個錯誤消息For循環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 

人與RB被定義爲雙(公共常量),而R定義爲一個字符串。我只用Matlab的過去,和只讀介紹導遊VBA(VBA傻瓜等)

非常感謝在這個問題上所有幫助

Ë

+0

你寫你聲明'r'作爲一個字符串。但'r(1)'或'r(i)'指的是一個數組。 –

+0

r應該是數字數據類型,例如Double,爲了建立索引,你需要聲明它爲一個數組,例如:Dim r(1 to 5)As Double – z32a7ul

回答

2

VBA沒有把弦與對待數組相同的方式(就像您在其他語言中看到的一樣)。​​看起來像VBA的陣列語法(as can be seen here);因此,如果將其聲明爲字符串,則會發生錯誤。

所以,從本質上講,VBA被解釋​​的意思,「我有一個名爲r數組,我想存儲的東西到元素編號1」。但是,它試圖對一個不可變的字符串做這件事。

Split函數可用於將字符串轉換爲數組,如果這是您所需要的。

不過,如果您直接爲您的向量數學運算declare an array,那麼最好。

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

ReDim keyword可用於調整大小的陣列,即使在for循環內。 (如果您需要確保在此操作過程中內容不被擦除,請不要忘記ReDim Preserve)。