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