-1

我想删除 collA(1)(9, 0), collA(1)(9, 1), collA(1)(9, 2), collA(1)(9, 3), collA(1)(9 , 4), collA(1)(9, 5) 和 collA(1)(9, 6)。

下面的 Sub Test() 中的删除语句不起作用。

如何解决这个问题?

Sub Test()

    Dim A() As Integer
    Redim A(0 To 367907, 0 To  6) As Integer

    Dim i As Long
    Dim j As Integer

    For i = 0 To 367907
    For j = 0 To 6    
        A(i, j) = Worksheets("Sheet1").Cells(i + 1, j + 1)
    Next j
    Next i

    Dim collA As VBA.Collection

    Set collA = New Collection
    collA.Add A

    Erase A

    collA(1).Remove 10     '<--- This doesn't work

End Sub
4

1 回答 1

2

您实际上并不需要数组,您可以将值直接添加到集合对象中。这就是它的用途:)

如果你想然后D2从集合中删除单元格,你必须知道它的索引

所以像这样设置你的工作表

在此处输入图像描述

然后注意

您的收藏以数字 1 开头,添加的第一个项目是 cell A1,然后是第二个 cellB1

因此您的索引 10 是单元格D2

使用以下代码从集合中删除 D2

Sub Test()

    Dim c As Collection
    Set c = New Collection

    Dim i As Long, j As Long

    For i = 1 To Range("A" & Rows.Count).End(xlUp).Row
        For j = 1 To 6
            c.Add Cells(i, j)
        Next j
    Next i

    For i = 1 To c.Count
        Debug.Print c.Item(i), "count: " & i, "total items: " & c.Count
    Next i

    c.Remove 10
    Debug.Print vbCrLf

    For i = 1 To c.Count
        Debug.Print c.Item(i), "count: " & i, "total items: " & c.Count
    Next i

End Sub

结果立即窗口CTRL+G

在此处输入图像描述

于 2013-09-03T11:43:56.830 回答