这里是新手,也是VBA和编程的新手。
我正在尝试重用多个数组(通过循环),但我想我需要在重用之前清除它们?我尝试过搜索问题,但我找不到解决方案,或者坦率地说,如果它们有效,就无法理解解决方案。
Dim WS As Worksheet
For Each WS In Worksheets
If Right(WS.Name, 4) = "Data" Then Comp = Comp + 1
Next WS
Dim CompArray(10, 50) As Variant
Dim RatesArray(10, 1 To 50) As Variant
Dim IndexArray(10, 50) As Variant
Dim ShortIndexArray(10) As Long
Dim MRow, DRow, FRow, RRow, Col As Long
Dim LastCol, LastRow As Long
MRow = 4
LastRow = Cells(Rows.Count, 1).End(xlUp).Row
Do Until MRow > LastRow
'**** MY CODE ****
''''***!!!*** Trying to Clear the array and reuse with the same dimensions for each loop ***!!!***
' not working
''Erase CompArray, RatesArray, IndexArray, ShortIndexArray
''ReDim CompArray(10, 50)
''ReDim RatesArray(10, 1 To 50)
''ReDim IndexArray(10, 50)
''ReDim ShortIndexArray(10)
MRow = MRow + 6 + Comp
Loop
End Sub
所以当我进入主循环的下一步时,我想要使用的数组具有相同的信息。我想保留数组的相同名称和维度,但只是清除内容。这听起来很简单,但我不知道该怎么做。
我尝试了擦除和重新编写(这是一个类似问题的解决方案),但它没有用,它实际上是在说我两次声明数组。
我还尝试在循环中调暗数组。这也不起作用。
任何帮助将不胜感激!
感谢。
答案 0 :(得分:4)
如果要重复使用数组,则在首次声明时不应指定尺寸
Dim CompArray() As Variant
然后,当您想要初始化它时,请使用关键字Redim
ReDim CompArray(10, 50)
如果您再次重新调整数组,那么除非使用Preserve
关键字
ReDim Preserve CompArray(10, 60)
如果您要对数组进行重新定义并保留内容,则只能更改最后一个维度
所以ReDim Preserve CompArray(10, 80)
会在您更改最后一个元素时起作用。当您尝试更改第一个元素并保留数据时,ReDim Preserve CompArray(100, 80)
会导致错误。
ReDim CompArray(100, 800)
可以正常使用,但您将丢失所有当前存储的数据。