我希望创建一个简单的双精度VBA数组,但我希望数组的长度由工作表的单元格值指定。
我尝试做:
Dim NIteration As Integer: NIteration = ActiveSheet.Cells(16, 2).Value
Dim myArray(1 To NIteration) As Double
失败并出现此错误:“需要持续表达”
答案 0 :(得分:9)
听起来您想要使用VB的Redim
关键字。
Redim允许您在运行时将数组的大小重新定义为给定的上限。
动态数组变量
如果您事先不知道存储信息所需的元素数量,那么动态数组变量非常有用。
您声明动态数组变量就像静态数组变量一样,除了您没有提供有关数组大小的任何信息。
例如,如果你有:
Dim SheetNames(1 to 10) As String
如果工作表数量超过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