On Error Resume下一个不工作的VBA

时间:2015-08-14 09:24:13

标签: excel vba excel-vba

我正在使用使用宏的Ctrl + F模拟从工作表中查找特定数字,我已经添加了On error resume下一个代码,以防它找不到值但错误处理不起作用,我得到了以下信息。

enter image description here

以下是代码:

Sheets("Not filled").Activate

    On Error Resume Next

    Cells.Find(what:=refnumber, After:=ActiveCell, LookIn:=xlFormulas, _
    lookat:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
    MatchCase:=False, SearchFormat:=False).Activate

2 个答案:

答案 0 :(得分:1)

有两种可能性:

  • 使用On Error GoTo 0声明可以重新打开错误。

  • 打破所有错误选项可以在VBA编辑器选项的错误捕获部分中选择(要检查它,请转到工具>选项>一般&gt ;错误捕获VBA编辑器菜单栏)。 如果选择此选项,则无论应用何种错误处理逻辑,VBA编译器都会中断所有错误。

答案 1 :(得分:1)

您仍在尝试.Activate找到(未)找到的单元格。

Dim fnd As Range, refnumber As Long

refnumber = 123

With Sheets("Not filled")
    .Activate
    On Error Resume Next
    Set fnd = .Cells.Find(what:=refnumber, After:=ActiveCell, LookIn:=xlFormulas, _
        lookat:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
        MatchCase:=False, SearchFormat:=False)
    On Error GoTo 0
    If Not fnd Is Nothing Then
        fnd.Select
    Else
        MsgBox "Not found :("
    End If
End With

这会尝试Set Range object到找到的位置。如果找不到任何内容,fnd var就不算什么。