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 |
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