Naming an array using a variable

2020-05-01 08:11发布

问题:

Is it possible to name an array variable using a different variable? For example, if I define variable "i" as an integer with a value equal to the number of columns I've used it a sheet:

Sub varNameTest

    Dim i, j, As Integer
    i = ActiveSheet.UsedRange.Columns.Count
    ...

Is it possible to then establish "i" number of arrays named something like myArray1 through i? Possibly something like:

For j = 1 to i
    Dim (myArray & j())
Next i

Though this example immediately above is incorrect syntax, I'm just trying illustrate what I'm trying to do.

edit: so to be more clear, using the above example, say I have 4 sheets in a workbook. The variable i would then be 4, and I would have some code that generates myArray1(), myArray2(), myArray3() and myArray4().

回答1:

You can create an array of arrays (though your question is a little unclear..)

Sub MyArrays()

Dim arrays()
Dim arr
Dim i, j

    i = 5 'e.g.
    ReDim arrays(1 To i)

    For j = 1 To i
        arr = Array()
        ReDim arr(1 To j)
        arrays(j) = arr
    Next j
    'reference an array by its position in "arrays"
    Debug.Print UBound(arrays(3))

End Sub


回答2:

Yes.

Dim i(5) As Integer

In VBA you can then access elements from i(0) to i(5).


Based on your edited question, the answer is no. You must explicitly define each variable in your code.

The other option would be to write code that writes your code - a form of code generation. Effectively that lets you write very long and complex code by repeating code "templates". But I don't think this would help in your case.