Я использую Office 2007. У меня есть макрос PowerPoint, который использует рабочий лист Excel для выполнения vLookup. Я сделал публичную функцию для vLookup. Он хорошо работает, когда все значения правильно поданы. Теперь я пытаюсь захватить ошибки для тех условий, где значение поиска не может быть найдено. Функция код:Vlookup и ISERROR
Public Function v_lookup _
(lookup_value As Variant, _
table_array As Range, _
col_index_num As Integer, _
range_lookup As Boolean) _
As String
Dim varResult As Variant
Dim objExcelAppVL As Object
Set objExcelAppVL = CreateObject("Excel.Application")
objExcelAppVL.Visible = False
varResult = objExcelAppVL.Application.WorksheetFunction.VLookup _
(lookup_value, _
table_array, _
col_index_num, _
range_lookup)
If IsError(varResult) Then varResult = ""
v_lookup = varResult
objExcelAppVL.Quit
Set objExcelAppVL = Nothing
End Function
Я называю эту функцию из основного макроса со следующим утверждением:
varGatherNumber = v_lookup(varDateTime, Lit_Sched_Table_Lookup, 5, vbFalse)
Этот код работает хорошо, когда нет никаких ошибок. Проблема заключается в том, что когда поиск не удается, я попал в Debug, указывающий на,
varResult = objExcelAppVL.Application.WorksheetFunction.VLookup
.. заявление. Он никогда не попадает в инструкцию If IsError(varResult)...
, когда есть ошибка vlookup. Как я могу правильно захватить ошибку vLookup?
ли вы, как правило, заполнить много строк (или столбцов) с повторным использованием этой функции? – Jeeped
Удалите '.WorksheetFunction' так' Application.Vlookup (... ' –
Спасибо @ScottCraner. Удаление .WorksheetFunction исправил мою проблему. Я ценю вашу помощь. – user3138025