Как получить объект "Cell" в excel VBA

Итак, я использовал для каждого цикла, чтобы пройти через ряд строк. Я столкнулся с проблемой, когда я удалял строки, и это вызывало пропущенную строку, поэтому я изменился на цикл while.

Проблема, с которой я столкнулась, заключается в попытке получить объект "cell". Раньше, когда у меня было:

For Each C In Worksheets("Blah").Range("A2:A" & lastRow).Cells

Я мог бы сделать что-то вроде

C.Offset(1, 0)
C.Value = "Troy"

Etc. Я попытался использовать:

C = Worksheets("Blah").Cells(iRow, 2)

но это просто дает C значение ячейки. Как получить фактический объект ячейки?

Спасибо

Ответ 1

Когда вы удаляете строки, всегда лучше идти снизу вверх. Ваша конкретная проблема заключается в том, что вам нужно установить ключевое слово Set, чтобы установить C в объект диапазона, а не "Let" C в значение Value. Диапазон имеет свойство по умолчанию, значение, и когда вы опускаете свойство, которое использовало свойство. По этой причине вам нужно использовать Set при назначении переменных объекта. Здесь приведен пример циклического возврата назад для удаления строк и назначения объектной переменной.

Sub DeleteRows()

    Dim i As Long
    Dim rRng As Range
    Dim rCell As Range

    Set rRng = Sheet1.Range("A1:A9")

    For i = rRng.Rows.Count To 1 Step -1
        Set rCell = rRng.Cells(i, 1)
        If rCell.Value Mod 2 = 1 Then
            rCell.EntireRow.Delete
        End If
    Next i

End Sub