Who said arrays in VB can’t change all dimensions while preserving data? I call this the “variable dimensions array,” and I use it when applications need data arrays with more flexible sizes in all dimensions. This variable prevents your apps from having empty elements in arrays (even if the Variant data type takes a lot of memory). For example, take a look at this two-dimensional array. Instead of declaring the variables with the two dimensions from the beginning, simply declare a Variant:
Dim myVar as Variant' Then 'redim' the first dimension only (2 ' elements):redim myVar(0 to 1)' You can now use the Array() function for ' each element of the array:myVar(0) = Array(0, 10, 50)myVar(1) = Array("test1", "test2", "test3", "test4") Use this code to get the data:myVar(0)(1) = 10myVar(1)(2) = "test3"
You can use as many parentheses as you want, and you can still use the Redim Preserve statement with each element and all dimensions. Simple! Note that you can also use a subroutine to resize one element of the array if you don’t want to use the Array() function:
Public Sub sbDeclare(ByRef pItem As Variant, _ pLower As Integer, pUpper As Integer) ReDim Preserve pItem(pLower To pUpper)End SubCall sbDeclare(myVar(0), 0, 1)