首页 > 解决方案 > 查找和删除语句的适当错误控制

问题描述

目前我正在尝试扫描我的书以查找我写的 if 语句,它在其中标识唯一 ID,然后如果该 ID 不再存在则返回“不在书中”。

为了清理我看到“不在书中”的所有区域的书,我创建了一小段代码来清除所有这些条目。

Dim MWS As Worksheet
Set MWS = Sheets("Marks")
MWS.Cells.Find(what:="Not in Book", LookIn:=xlValues).EntireRow.Delete

该声明的适当方式是什么...

A. 扫描整本书以查找该短语并删除该行,而不是一次删除一行。

B. 要错误控制此语句,因此当“不在书中”不存在时,用户不会收到错误消息,而是不会发生任何事情,或者会出现一个 msgbox,说明该书是干净的。

谢谢,

标签: vbaexcel

解决方案


你可以这样做。将搜索分配给范围变量并检查它是否为空。

Sub x()

Dim rFind As Range, MWS As Worksheet

Set MWS = Sheets("Marks")

With MWS
    Set rFind = .Cells.Find(what:="Not in Book", LookIn:=xlValues, _
                          Lookat:=xlWhole, MatchCase:=False, SearchFormat:=False)
    If Not rFind Is Nothing Then
        Do
            rFind.EntireRow.Delete
            Set rFind = .Cells.Find("Not in Book")
        Loop Until rFind Is Nothing
    Else
        msgbox "Term not found"    
    End If
End With

End Sub

推荐阅读