繁体   English   中英

在VBA Excel中重用2D数组?

[英]Reusing 2D array in 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)可以正常工作,但是您将丢失所有当前存储的数据。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM