# Multidimensional Array

I have a multidimensional array that is 6 colums wide.

I am populating it from a recordset and therefore do not know the length so I using a dynamic array as below

currentfile = 0
WHILE NOT MyRS2.EOF
IF currentfile = 0 Then
' do nothing
Else
Redim Preserve ArrPassed(5,currentfile)
End IF
ArrPassed(vantivenumber,currentfile) = MyRS("vantivenumber")
ArrPassed(teamname,currentfile) = MyRS("teamname")
ArrPassed(passedreason,currentfile) = MyRS("passedreason")
ArrPassed(timetaken,currentfile) = MyRS("timetaken")
ArrPassed(notes,currentfile) = MyRS("notes")
ArrPassed(dateentered,currentfile) = MyRS("dateentered")
currentfile = currentfile + 1
MyRS2.MoveNext
Wend

I am now trying to find out how to find out the ubound limits of the array so i can do a for next loop but i cant seem to figure it out from the many articles i have read.

This is extremely urgent hence the points.
###### Who is Participating?

Commented:
UBound(arrayname[, dimension])

Ubound(ArrPassed,1)
Ubound(ArrPassed,2)

Example:

Dim A(1 To 100, 0 To 3, -3 To 4)

UBound(A, 1) ---> 100
UBound(A, 2) ---> 3
UBound(A, 3) ---> 4
0

Commented:
Hi

have you tried UBound(ArrPassed)

That should work ok

Scott
0

Author Commented:
that returns 5 which is the 6 columns when 0 based, i need to know how many rows there is
0

Commented:
You could always switch your array around so your code snippet becomes

currentfile = 0
WHILE NOT MyRS2.EOF
IF currentfile = 0 Then
' do nothing
Else
Redim Preserve ArrPassed(currentfile,5)
End IF
ArrPassed(currentfile,vantivenumber) = MyRS("vantivenumber")
ArrPassed(currentfile,teamname) = MyRS("teamname")

and so on

Scott
0

Commented:
Just realised that wont work with your preserve statement
0

Commented:
sorry, I meant my suggestion wont work... mladenovicz is spot on
0

Commented:
to get the UBound of the 2nd dimension use the following:

UBound(ArrPassed, 2)

0

Commented:
PS: You could dimension the array(Rows, Columns) rather than (Columns, Rows)
then UBound without the dimension parameter would work.

UBound(arrayname[, dimension])

The UBound function syntax has these parts:

arrayname: Required. Name of the array variable; follows standard variable naming conventions.

dimension: Optional; Variant (Long). Whole number indicating which dimension's upper bound is returned. Use 1 for the first dimension, 2 for the second, and so on. If dimension is omitted, 1 is assumed.
0

You could also Dim the array to begin indexing at 1 not 0:

Dim array(1 To 10)
Dim multiarray(10, 1 To 10)
0

Author Commented:
Sorry guys, my mistake.

The problem was the recorset was EOF and this was the one time i didnt test for it. seen as the array didnt complain i presumed the data was in there.

All the information given was good and similar to what i have already read.