当评估匹配找不到标准时显示错误

时间:2019-07-19 14:27:12

标签: excel vba

我有以下代码可以正常工作,但是我似乎无法弄清楚如何使其与On Error一起工作

row_num2 = Evaluate("MATCH(1,('" & ws1.Name & "'!A:A=""" & variable1 & """)*('" & ws1.Name & "'!B:B=""" & variable2 & """)*('" & ws1.Name & "'!G:G=""" & variable3 & """),0)")

我已经厌倦了

On Error GoTo ErrMsg
ErrMsg:
    MsgBox "error"
Exit Sub

如果有错误,这可以正常工作,但是如果正确,那么它仍然会显示“错误” MsgBox,并退出“ Sub”。

1 个答案:

答案 0 :(得分:2)

Application.Evaluate method不会引发您可以用On Error …捕获的异常,而是会返回一个可以用IsError function测试的错误值。

If IsError(row_num2) Then
    MsgBox "error in evaluate"
End If

正如Mathieu在他的评论中建议的那样,您可以选择使用 Application.WorksheetFunction.Match 会引发On Error …Application.Match捕获的异常,该异常返回IsError的错误值。

请参见WorksheetFunction.Match method