2015-06-05 2 views
1

Я использую Excel 2013 VBA. У меня есть следующие данныеExcel VBA Application.WorksheetFunction.Match не работает, когда результат # N/A

 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 с диапазоном записей в колонке А с использованием частичного кода:

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 C Carter» в столбце A, предотвращающую точное совпадение), я получаю «Ошибка времени выполнения» 1004: Невозможно получить свойство Match класса WorkheetFunction ". Я получаю ту же ошибку, когда я использую Application.WorksheetFunction.IsNA вместо IsError, и когда я использую положительный подход, используя IsNumeric вместо IsError. Любая помощь приветствуется.

ответ

1

Использовать Application.Match вместо Application.WorksheetFunction.Match. Первый будет возвращает Ошибка, которую вы можете уловить с помощью IsError, в то время как последний выдает ошибку времени выполнения, которая является беспорядочной для решения.

Обратите внимание, что Intellisense не знает, что существует Application.Match. Это правда.

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

Смежные вопросы