UBound array problem

X

xavi garriga

Dears;

I have a problem with a "For", the code is similar to this one:

for x = 1 to UBound(Array())
IF "some conditions" then
Redim Preserve Array(UBound(Arrray())-1)
x = x-1
end if
next x

For example supose the array [10,3].
The conditions make reference to the current array postion
for x = 1 supose the conditions are accomplished and the array would become:
[10]
and x will be x = 0.

Next x is x = 1. Now the conditions are not accomplised, so the array
continues being [10] and next x = 2.

The problem is that for X = 2, goes once more inside the loop but the
UBound of array is 1, so now we are out of range!
How can I solve this?

Thanks to all
 
J

Jacob Skaria

Dear

Ubound by default returns first dimension or otherwise you need to specify
the dimension.

Dim myArray As Variant

ReDim myArray(10)
MsgBox UBound(myArray) 'will return 10

ReDim myArray(10, 5)
MsgBox UBound(myArray) ' will return 10
MsgBox UBound(myArray, 2) ' will return 2nd dimension

ReDim myArray(10, 5, 2)
MsgBox UBound(myArray) ' will return 10
MsgBox UBound(myArray, 3) ' will return 3nd dimension

Try the below code and and you will understand how to deal with that...Try
and feedback...


ReDim myArray(10, 0)

For x = 1 To 5
If x > UBound(myArray, 2) Then
ReDim Preserve myArray(10, x)
'your code

'/your code
End If
Next
 
X

xavi garriga

Thanks!! It works perfectly!
--
atrep


Jacob Skaria said:
Dear

Ubound by default returns first dimension or otherwise you need to specify
the dimension.

Dim myArray As Variant

ReDim myArray(10)
MsgBox UBound(myArray) 'will return 10

ReDim myArray(10, 5)
MsgBox UBound(myArray) ' will return 10
MsgBox UBound(myArray, 2) ' will return 2nd dimension

ReDim myArray(10, 5, 2)
MsgBox UBound(myArray) ' will return 10
MsgBox UBound(myArray, 3) ' will return 3nd dimension

Try the below code and and you will understand how to deal with that...Try
and feedback...


ReDim myArray(10, 0)

For x = 1 To 5
If x > UBound(myArray, 2) Then
ReDim Preserve myArray(10, x)
'your code

'/your code
End If
Next




--
If this post helps click Yes
---------------
Jacob Skaria


xavi garriga said:
Dears;

I have a problem with a "For", the code is similar to this one:

for x = 1 to UBound(Array())
IF "some conditions" then
Redim Preserve Array(UBound(Arrray())-1)
x = x-1
end if
next x

For example supose the array [10,3].
The conditions make reference to the current array postion
for x = 1 supose the conditions are accomplished and the array would become:
[10]
and x will be x = 0.

Next x is x = 1. Now the conditions are not accomplised, so the array
continues being [10] and next x = 2.

The problem is that for X = 2, goes once more inside the loop but the
UBound of array is 1, so now we are out of range!
How can I solve this?

Thanks to all
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Top