如何捕获 Application.WorksheetFunction.Match 的错误并处理它?

0 error-handling excel vba

我正在使用该Application.match函数来查找我正在查找的列标题的列号。如果没有一个标题匹配,我想要一个自定义的弹出消息框。

在到达 IfError 语句之前,Excel 会停止我的程序并显示一个 MsgBox,指出没有匹配项

col_num = Application.WorksheetFunction.Match("wanted name", theDataWS.Rows(1), 0)

If IsError(col_num) Then 
    MsgBox "Please rename your column name to 'wanted name'"
End If
Run Code Online (Sandbox Code Playgroud)

Big*_*Ben 5

一种选择是使用Application.Match而不是Application.WorksheetFunction.Match.


  • Application.WorksheetFunction.Match如果没有匹配,将抛出运行时错误。如果您愿意,您可以使用语句捕获并处理它On Error...,或者在这种情况下更好,使用Application.Match.

  • Application.Match不会抛出运行时错误;相反,该变量col_num将保存错误值(在本例中,错误 2042对应于#N/A)。因此您可以测试IsError(col_num).*


*请注意,在这种情况下col_num应该是 a Variant(用 隐式声明Dim col_num或用 显式声明Dim col_num As Variant)。