Home |
Search |
Today's Posts |
|
#1
![]()
Posted to microsoft.public.excel.programming
|
|||
|
|||
![]()
Or, maybe add the 2 sub arrays to a collection object (which I'm fairly sure
does hold a pointer to vArr2) rather than another array (which just creates a disconnected copy of the array at that point in time). HTH, "Tom Ogilvy" wrote in message ... You are correct that vArr1 and vArr2 have no relation to the array of arrays. The MainArr(2) does not hold a pointer to vArr2. So if you want to change the value in the MainArr(2), second position, then do it directly '================== Sub ABC() Dim vArr1(1 To 10) As Variant Dim vArr2(1 To 5) As Variant Dim vMainArr(1 To 2) As Variant Dim lCounter As Long Dim s As String, i As Long, j As Long ' Populate the sub arrays: For lCounter = 1 To 10 vArr1(lCounter) = lCounter If lCounter < 6 Then _ vArr2(lCounter) = lCounter * 2 Next lCounter vMainArr(1) = vArr1 vMainArr(2) = vArr2 'change one of the elements as a test vMainArr(2)(2) = 100 ' Show the results s = "" For i = 1 To 2 For j = LBound(vMainArr(i), 1) To UBound(vMainArr(i), 1) s = s & vMainArr(i)(j) & "," Next j s = s & vbNewLine Next i MsgBox s End Sub worked for me. -- Regards, Tom Ogilvy "Joe Dunfee" wrote: I am attempting to use an array of arrays (ragged arrays), but am having problems. It seems the master-array elements must set equal to the sub-arrays only AFTER the values are entered for the sub-arrays. Then it seems the values of the elements are set and cannot be changed. Here is my sample code with comments (my next question follows); '================== Sub ABC() Dim vArr1(1 To 10) As Variant Dim vArr2(1 To 5) As Variant Dim vMainArr(1 To 2) As Variant Dim lCounter As Long Dim s As String, i As Long, j As Long ' Populate the sub arrays: For lCounter = 1 To 10 vArr1(lCounter) = lCounter If lCounter < 6 Then _ vArr2(lCounter) = lCounter * 2 Next lCounter ' Assign the sub arrays to the main array: ' Note that if this isn't done after are populated with values, the array will be empty. vMainArr(1) = vArr1 vMainArr(2) = vArr2 'change one of the elements as a test vArr2(2) = 100 ' note that this change WON'T show in the vMainArr array ' Show the results s = "" For i = 1 To 2 For j = LBound(vMainArr(i), 1) To UBound(vMainArr(i), 1) s = s & vMainArr(i)(j) & "," Next j s = s & vbNewLine Next i MsgBox s End Sub '================== If my issues above are true, then I need to figure out a way around these limitations. Note that my actual program would have perhaps 200 elements in the main array, and 20 sub elements.of mixed type (strings and numbers), then about 5 of the sub-sub elements would be 1-dimensional arrays. Just using 200 separate arrays would not be desirable. Perhaps I must repeat the lines where sub arrays are assigned to the main array EVERY time I change a value. Any other suggestions? Joe Dunfee |
Reply |
Thread Tools | Search this Thread |
Display Modes | |
|
|
![]() |
||||
Thread | Forum | |||
RENEWED-- Arrays: Counting multiple values within array | Excel Worksheet Functions | |||
Changing values in an array using for each | Excel Programming | |||
Using known arrays to calculate an array of new values | Excel Programming | |||
Arrays - declaration, adding values to arrays and calculation | Excel Programming | |||
Array of Arrays in VBA | Excel Programming |