VBA ClearContents метод очистки элементов в коллекции - PullRequest
0 голосов
/ 29 марта 2020

Может кто-нибудь объяснить мне, почему метод .Cells.ClearContents очищает элементы в коллекции? Я запускаю следующий код:

Sub test()
    Dim col As New Collection
    Dim i As Integer    
    With Worksheets("Sheet1")
        For i = 1 To 10
            col.Add .Cells(i, 1)
        Next i
        MsgBox (col(1) & " " & col.Count)
        .Cells.ClearContents
        MsgBox (col(1) & " " & col.Count)
    End With
End Sub

Ячейки от A1 до A10 содержат буквы, например. a, b, c ... Первый msgbox показывает «10», а второй «10». Почему это происходит и как очистить весь лист без очистки коллекции?

1 Ответ

2 голосов
/ 29 марта 2020

Вы создаете коллекцию Ranges, а не коллекцию чисел или текстовых строк.

Если вы введете диапазон, (например, Range ("A1")) в коллекция, вы не замораживаете это. Если вы измените значение A1 на рабочем листе, то при вытягивании элемента это будет отражено:

Sub CollectionTest()
    Dim col As Collection, rng As Range
    Set col = New Collection

    Range("A1").Clear
    col.Add Range("A1")
    Range("A1").Value = "x"
    Set rng = col.Item(1)

    MsgBox rng.Value
End Sub

. Поэтому вам следует собрать Value s. а не самих 1012 *. 1013 *

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...