这里是新手,也是 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
因此,当我进入主循环的下一步时,我想要使用的数组具有相同的信息。我想保留数组的相同名称和维度,但只是清除内容。这对我来说听起来很简单,但我不知道如何做到这一点。
我尝试删除和重新调整(这是这里类似问题的解决方案),但它不起作用,它实际上是说我声明了两次数组。
我还尝试在循环中调暗数组。这也不起作用。
如有任何帮助,我们将不胜感激!
谢谢。
最佳答案
如果你想重用数组,那么你不应该在第一次声明它时指定维度
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)
可以正常工作,但您将丢失所有当前存储的数据。
关于arrays - 在 VBA Excel 中重用二维数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20357267/