Eirik
Eirik

Reputation: 41

For-looping VBA vectors

I'm trying to create a vector in VBA using a for loop. My problem is that VBA doesn't allow me to have a different equation for the first vector coordinate. When trying to run it I get "expected array" as an error message

'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 and rb is defined as Double (Public Const), while r is defined as a string. I have only used Matlab in the past, and only read intro guides to VBA (VBA for Dummies etc.)

Greatly appreciate all help in the matter

E

Upvotes: 1

Views: 1030

Answers (1)

Denny
Denny

Reputation: 744

VBA doesn't treat strings the same way it treats arrays (like you'd see in other languages). r(1) looks like array syntax to VBA (as can be seen here); therefore, it's going to error out if it's declared as a string.

So, essentially, VBA is interpreting r(1) to mean, "I have an array named r and I want to store something into element number 1". But, instead, it's attempting to do this to an immutable string.

The Split function can be used to turn a string into an array, if that's what you need.

Still, it'll be best if you straight-up declare an array for your vector math.

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

The ReDim keyword can be used to resize an array, even within a for loop. (Just don't forget to ReDim Preserve if you need to make sure that the contents don't get wiped during this operation).

Upvotes: 2

Related Questions