Удалить всю строку, если ячейка не выделена - PullRequest
1 голос
/ 09 ноября 2019

Я пытаюсь пройти диапазон ячеек и сделать следующее: Если ячейка имеет цвет фона, пропустите. Если цвет фона отсутствует, удалите всю строку.

Что не так в моем текущем коде?

Sub RemoveRowsThatAreNotHighlighted123()

    Dim cell As Range
    Dim rng As Range

    Application.ScreenUpdating = False
    Application.Calculation = xlCalculationManual

    Set rng = ThisWorkbook.Worksheets("Main").Range("A2:L" & ThisWorkbook.Worksheets("Main").Range("C2").End(xlDown).Row)

    For Each cell In rng
        If cell.Interior.ColorIndex = 0 Then cell.EntireRow.Delete
    Next

    Application.ScreenUpdating = True
    Application.Calculation = xlCalculationAutomatic

End Sub

1 Ответ

1 голос
/ 09 ноября 2019

используйте xlColorIndexNone вместо 0:

Кроме того, при удалении строк всегда рекомендуется выполнить цикл в обратном порядке, как указано ниже:

Sub RemoveRowsThatAreNotHighlighted123()
    Dim iRow As Long

    Application.ScreenUpdating = False
    Application.Calculation = xlCalculationManual

    With ThisWorkbook.Worksheets("Main") ' reference your workbook and worksheet
        With .Range("A2:L" & .Range("C2").End(xlDown).Row) ' reference referenced worksheet range from A2 down to column C last not empty cell before first empty one
            For iRow = .Rows.Count To 1 Step -1 ' loop from referenced range last row backwards
                If .Rows(iRow).Interior.ColorIndex = -4142 Then .Rows(iRow).EntireRow.Delete ' if alll referenced range current row cells have no background then delete row
            Next
        End With
    End With
    Application.ScreenUpdating = True
    Application.Calculation = xlCalculationAutomatic
End Sub
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...