如果所选范围内没有空白单元格,该如何进入下一个程序段?

时间:2018-10-22 10:15:15

标签: excel vba excel-vba

我有以下自动生成的代码,以在选定的列范围(E)中查找0 s,将其替换为空白,然后在该列中搜索空白,然后按行删除记录。

Cells.Replace What:="0", Replacement:="", LookAt:=xlWhole, SearchOrder _
:=xlByRows, MatchCase:=False, SearchFormat:=False, ReplaceFormat:=False
Columns("E:E").Select
Selection.SpecialCells(xlCellTypeBlanks).Select
Selection.EntireRow.Delete

我在可能包含0或不包含0的不同范围上运行此命令。问题是,如果没有删除,则整个选定的E列都将被删除。 当我手动执行此操作时,我收到一条错误消息,提示“未找到任何单元”。当我运行宏时,我不明白这一点。我稍后会在宏中关闭警报,但在运行此块之前不会关闭警报。

我可以获取有关如何处理此错误的建议吗?如果所选范围没有零,请忽略下一行代码或其他内容?

谢谢。!

1 个答案:

答案 0 :(得分:1)

随意的一半:

On Error Resume Next
'your one line code goes here'
On Error Goto 0
'the rest of your code goes here

使用完整的代码段使其正常运行,并且尽量不要使用select。

Dim WorkingRange As Range
Set WorkingRange = ThisWorkbook.Worksheets("Sheet1").Columns("E:E")

On Error Resume Next
WorkingRange.Replace What:="0", Replacement:="", LookAt:=xlWhole, SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, ReplaceFormat:=False
WorkingRange.SpecialCells(xlCellTypeBlanks).EntireRow.Delete
On Error GoTo 0