当结果为#N / A时,Excel VBA Application.WorksheetFunction.Match失败

时间:2015-06-05 20:02:00

标签: excel-vba vba excel

我正在使用Excel 2013 VBA。我有以下数据

       A                    B
1   John  Doe       John  Doe
2   Mary  Smith     Mary  Smith
3   Alice  Jones    Alice  Jones
4   Bob C Carter    Bob  Carter
5   David L Macy    David L Macy
6   June  Weaver    June  Weaver

我正在使用部分代码搜索B列中条目与A列中条目范围的完全匹配:

Dim lastAllScriptsRow As Integer                            
Dim compareOutlookRow As Integer                            
lastAllScriptsRow = 6                           
compareOutlookRow = 1                           
Range(Cells(1, 1), Cells(lastAllScriptsRow, 1)).Select                          
… code …                            
If IsError(Application.WorksheetFunction.Match(Cells(compareOutlookRow, 2), Selection, 0)) Then                         

在B列中搜索前三个条目是成功的。当搜索第四个条目Bob Carter时(注意A列中的“Bob C Carter”条目阻止完全匹配),我得到一个“运行时错误'1004':无法获得Match属性WorksheetFunction类。“当我使用Application.WorksheetFunction.IsNA而不是IsError时,当我使用IsNumeric而不是IsError使用积极方法时,我得到相同的错误。非常感谢任何帮助。

1 个答案:

答案 0 :(得分:1)

使用Application.Match代替Application.WorksheetFunction.Match。前者将返回错误,您可以使用IsError进行陷阱,而后者会抛出运行时错误,这个错误很难处理。

请注意,Intellisense不知道Application.Match存在。确实如此。

This is a nice reference on the difference between the two.