arrays - 在 VBA Excel 中重用二维数组?

标签 arrays vba excel

这里是新手,也是 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/

相关文章:

excel - SpecialCells(xlCellTypeVisible) 还包括隐藏/过滤的单元格

sql-server - 将vba中的日期变量传递给sql语句

excel - Microsoft Excel 以日期格式复制和粘贴

excel - 如何使用 sumproduct 收集另一张纸上特定单元格总和的数据?

arrays - 我正在尝试返回 Excel UDF 的值数组。我最终只得到第一个值,没有其他值,为什么?

python - 将多维数组的每个子数组的最后一项放入列表

Javascript 练习对我来说看起来不错,但它不起作用

java - 如何使用 Retrofit 发布多个 JSON 数组(Android、Java)

vba - 丢失的 quines : Visual Basic (for Applications)

sql - 将mysql迁移到sql server 2008