-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() の remove ステートメントは機能しません。

この問題はどのように解決できますか?

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から始まり、追加された最初のアイテムはセルA1、次に2番目のセルですB1

したがって、インデックス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 に答える