VBA 删除包含特定填充颜色的单元格的代码?

VBA code to delete cells that contain a certain fill color?

我是 VBA 的新手,正在尝试删除具有特定填充颜色的单元格。我无法删除包含已填充单元格的整行,因为那样会删除我需要的数据。我正在尝试使用循环,但它不会删除所有包含我指定的填充颜色的单元格,只会删除电子表格顶部的一些单元格。如果我多次 运行 宏,它最终会删除所有具有我指定颜色的单元格。

Range("A1:AF150").Select
For Each cell In Selection
    If cell.Interior.Color = RGB(112, 48, 160) Then
        cell.Delete
    End If
Next cell

这是因为删除单元格时,下面的数据向上移动,循环到下一个单元格,忽略了刚刚向上移动的单元格。

不可能使用 for each 循环向后循环,但您可以这样做:

Set rng = Range("A1:AF150")
For i = rng.Cells.Count To 1 Step -1
    With rng.Item(i)
        If .Interior.Color = RGB(112, 48, 160) Then .Delete
    End With
Next

另外我建议设置一个工作簿对象。

此外,您确定要删除而不是清除单元格吗?