问题
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.
来源:https://stackoverflow.com/questions/27994108/naming-an-array-using-a-variable