首页 > 解决方案 > 选择特定范围的单元格并仅删除突出显示的单元格并向上移动的 VBA

问题描述

我是使用 VBA 的新手。我正在创建一个宏,它扫描一个范围内的每个单元格,以检测任何填充黄色的单元格,删除它们,然后向上移动。然后它应该移动到数据表中的下一个单元格。

我收到“运行时错误'1004':Range 类的删除方法失败”,我认为这是关于我声明的 Range 对象,但我不确定我应该如何正确实现它或者是否有更好的方法执行这个 VBA?这就是我到目前为止所拥有的。

Sub DeleteHighlight()
Dim cell As Range
For Each cell In Range("A6:O3863")
    If ActiveCell.Interior.Color <> RGB(255,255,0) Then
       ActiveCell.Delete Shift:=x1ToUp
       Exit For
    End If
Next cell
End Sub

标签: excelvba

解决方案


@Warcupine 是对的,您最终会跳过行。相反,您应该从底部循环到顶部。

Sub DeleteHighlight()

Dim lRow As Long

'find last row
lRow = Range("A1").CurrentRegion.Rows.Count

'loop backwards
For i = lRow To 1 Step -1
If Cells(i, 1).Interior.Color = RGB(255, 255, 0) Then
Rows(i).Delete
End If
Next

End Sub

推荐阅读