excel - 如何使用Application.WorksheetFunction.Match捕获错误并进行处理?

标签 excel vba error-handling

我正在使用Application.match函数来查找我要查找的列标题的列号。如果所有标题都不匹配,我想要一个自定义的 pop MsgBox。
在到达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

最佳答案

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


如果没有匹配项,

  • Application.WorksheetFunction.Match将抛出运行时错误。如果需要,可以使用On Error...语句捕获并处理它,或者在这种情况下最好使用Application.Match
  • Application.Match不会抛出运行时错误;相反,变量col_num将保存错误值(在这种情况下,错误2042对应于#N/A)。这样就可以测试IsError(col_num)了。*


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

    关于excel - 如何使用Application.WorksheetFunction.Match捕获错误并进行处理?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54601850/

    相关文章:

    php - 如何捕获 Codeigniter 中的数据库错误

    excel - 随机化一组值而不重复值索引

    ruby - 如何使用 axlsx 为日期设置背景颜色?

    html - Excel VBA提取href值

    excel - SSIS 2008、Excel 2007 正确格式化 Excel 列(导出,而不是导入)

    php - 获取特定功能的错误

    vba - 从动态范围中动态提取数据行

    vba - Excel VBA函数删除字符串末尾的字母

    vba - 为什么保存的附件的文件名包含预期保存文件夹的名称?

    r - 我应该如何获得系数?