在VBA Excel中重用二维数组?

这里新的,新的VBA和一般的编程。

我试图重复使用多个数组(通过循环),但我认为我需要清除它们之前,我重用它们? 我已经试过了解这些问题,但是我找不到解决scheme,或者坦白地说,如果他们工作,就不能理解解决scheme。

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 

所以当我进入主循环的下一步时,我想要使用的数组具有相同的信息。 我想保留相同的名称和数组的维度,但只是清除内容。 这听起来很简单,但我不知道如何做到这一点。

我尝试擦除和rediming(这是一个类似的问题在这里的解决scheme),但它没有工作,实际上是说我是两次声明数组。

我也尝试调暗已经在循环中的数组。 那也行不通。

任何帮助,将不胜感激!

谢谢。

如果你想重用一个数组,那么当你第一次声明它的时候,你不应该指定这个维度

 Dim CompArray() As Variant 

然后当你想初始化它时,你使用关键字Redim

 ReDim CompArray(10, 50) 

如果您再次刷新arrays,则除非使用Preserve关键字,否则将丢失已存储在其中的任何数据

 ReDim Preserve CompArray(10, 60) 

如果您重新调整arrays大小并保留内容,则只能更改最后一个维度

因此ReDim Preserve CompArray(10, 80)将在您更改最后一个元素时起作用。 ReDim Preserve CompArray(100, 80)会导致错误,因为您正在尝试更改第一个元素并保留数据。

ReDim CompArray(100, 800)将正常工作,但您将失去所有当前存储的数据。