ExcelBanter

ExcelBanter (https://www.excelbanter.com/)
-   Excel Programming (https://www.excelbanter.com/excel-programming/)
-   -   Why the.. does this not work??? (https://www.excelbanter.com/excel-programming/275514-re-why-does-not-work.html)

Alan Beban[_3_]

Why the.. does this not work???
 
Well, in the working case you are simply redimensioning myArr once to 6
or 7 "rows" and 1 "column"--what's the "Preserve about? The array has
not been loaded, so there's nothing to preserve.

In the non working case, it should work in the first loop to dimension
the array to 1 "row" and 1 "column"; but in the next loop (with i=1) the
code is attempting to change the bound of the first dimension; the bound
of only the last dimension can be changed with the Preserve keyword in
effect.

Alan Beban

Stefan Lewold wrote:
'Why is it that the rutine below works when MyArr is ReDimensioned outside
the loop and not within 'the loop as in the Sub 'DoesNotWork()' ?

Dim MyArr() As Variant
Dim Nms As Variant

Sub Working()
Nms = Array("Joe", "John", "Mary", "Fred", "Stu", "Dan", "Steeffe")
ReDim Preserve MyArr(UBound(Nms), 1) As Variant
For i = 0 To UBound(Nms)
MyArr(i, 0) = CStr(i)
MyArr(i, 1) = Nms(i)
Next i
End Sub

Sub DoesNotWork()
Nms = Array("Joe", "John", "Mary", "Fred", "Stu", "Dan", "Steeffe")
For i = 0 To UBound(Nms)
ReDim Preserve MyArr(i, 1) As Variant
MyArr(i, 0) = CStr(i)
MyArr(i, 1) = Nms(i)
Next i
End Sub




Wild Bill[_2_]

Why the.. does this not work???
 
Good catch Alan. He could just flip the array indices - and it appears
that he is obviously already option base 0.

On Wed, 27 Aug 2003 23:56:40 -0700, Alan Beban
wrote:

Well, in the working case you are simply redimensioning myArr once to 6
or 7 "rows" and 1 "column"--what's the "Preserve about? The array has
not been loaded, so there's nothing to preserve.

In the non working case, it should work in the first loop to dimension
the array to 1 "row" and 1 "column"; but in the next loop (with i=1) the
code is attempting to change the bound of the first dimension; the bound
of only the last dimension can be changed with the Preserve keyword in
effect.

Alan Beban

Stefan Lewold wrote:
'Why is it that the rutine below works when MyArr is ReDimensioned outside
the loop and not within 'the loop as in the Sub 'DoesNotWork()' ?

Dim MyArr() As Variant
Dim Nms As Variant

Sub Working()
Nms = Array("Joe", "John", "Mary", "Fred", "Stu", "Dan", "Steeffe")
ReDim Preserve MyArr(UBound(Nms), 1) As Variant
For i = 0 To UBound(Nms)
MyArr(i, 0) = CStr(i)
MyArr(i, 1) = Nms(i)
Next i
End Sub

Sub DoesNotWork()
Nms = Array("Joe", "John", "Mary", "Fred", "Stu", "Dan", "Steeffe")
For i = 0 To UBound(Nms)
ReDim Preserve MyArr(i, 1) As Variant
MyArr(i, 0) = CStr(i)
MyArr(i, 1) = Nms(i)
Next i
End Sub





All times are GMT +1. The time now is 04:53 AM.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
ExcelBanter.com