VBA数组长度取决于用户input
我希望创build一个简单的双打VBA数组,但我希望数组的长度由工作表的单元格值指定。
我试着做:
Dim NIteration As Integer: NIteration = ActiveSheet.Cells(16, 2).Value Dim myArray(1 To NIteration) As Double
它失败,出现这个错误:“需要不断的expression”
这听起来像你想使用VB的Redim
关键字。
Redim允许您在运行时将数组的大小重新定义为给定的上限。
dynamic数组variables
当您提前不知道您需要存储多less个元素时,dynamic数组variables非常有用。
除了不提供关于数组大小的任何信息之外,您可以像静态数组variables一样声明dynamic数组variables。
举个例子,如果你有:
Dim SheetNames(1 to 10) As String
如果Sheet数量超过10,将会抛出错误,因为SheetNames将无法在集合中存储超过10个项目。
相反,我们使用redim
关键字如下:
Sub Test() Dim MyArray() As String ' declare an array Dim iCount As Integer Dim Max As Integer Max = ActiveSheet.Cells(16, 2).Value ' finds the maximum array size ReDim MyArray(1 To Max) ' redeclares the array variable with the necessary size For iCount = 1 To Max MyArray(iCount) = ThisWorkbook.Sheets(iCount).Name ' (or whatever you're storing in the array) MsgBox MyArray(iCount) Next iCount Erase MyArray() ' deletes the variable contents End Sub