View Single Post
  #1   Report Post  
Posted to microsoft.public.excel.programming
Alan Beban[_3_] Alan Beban[_3_] is offline
external usenet poster
 
Posts: 130
Default 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