如果单元格具有背景色,请删除整行

时间:2018-07-11 11:21:49

标签: excel vba excel-vba

我正在尝试删除D列中单元格具有背景色的所有行。我已经在下面编写了代码,但是每次运行它时,它都会无限期运行,直到最终崩溃。 ws1lastrow2的定义都很好(我提到它是为了清除这种可能导致我的宏无法运行的可能性)

With ws1
    lastrow2 = ws1.Range("A" & Rows.Count).End(xlUp).Row

    For i = lastrow2 To 2 Step -1
        nodel = False

        If .Cells(i, "D").Interior.ColorIndex = 0 Then
            nodel = True
        End If

        If Not nodel Then
            .Rows(i).EntireRow.Delete
        End If
    Next i
End With

1 个答案:

答案 0 :(得分:5)

请勿使用 0

Sub qwerty()
    Dim ws1 As Worksheet: Set ws1 = ActiveSheet
    Dim Nodel As Boolean
    With ws1
        lastrow2 = ws1.Range("A" & Rows.Count).End(xlUp).Row
        For i = lastrow2 To 2 Step -1
            Nodel = False
            If .Cells(i, "D").Interior.ColorIndex = -4142 Then
               Nodel = True
            End If
            If Not Nodel Then
                .Rows(i).EntireRow.Delete
            End If
        Next i
    End With
End Sub

EDIT#1:

如果您要保留具有白色背景的单元格,请首先确认“白色”对应于“ colorindex = 2”,然后使用 2 代替 -4142