divzz0194 Ответов: 1

Ошибка, определенная приложением или объектом


следующий код принимает значение из ячейки, разделенной запятой
эти значения, разделенные запятой, должны быть проверены на доступность в "листе отображения кривых")

vlookup не работает и выдает ошибку application defined или object defined error
sub sample()


Dim R1
R1 = Worksheets("Plain Vanilla Swap Details (CC)").Range("AP2").value

 If R1 <> "" Then
                rates = Split(R1, ",")
                Final = UBound(rates)                
                For i = 0 To Final

                Message = (rates(i))                    
V1 = WorksheetFunction.VLookup(Message, Worksheets("Curve Mapping").Range("D2:H209"), 2, False)

                    Next i

                    End If

End Sub


Что я уже пробовал:

Я попытался явно ввести значение в оператор vlookup, тогда код работает нормально.. пожалуйста помогите

1 Ответов

Рейтинг:
1

CHill60

Вместо использования

WorksheetFunction.VLookup(...
использовать
Application.VLookup(...
Таким образом, исключение, когда он не может найти значение (ошибка 2042), не будет выброшено. Однако вам нужно будет проверить результат на наличие ошибки
if IsError(v1) then
...

У вас могут возникнуть проблемы с использованием VLOOKUP, если данные не одного типа.
Например, я все еще получаю ошибку (хотя она обрабатывается лучше), но если я использую
message = [an exact value from the range]
Я не понимаю, в чем ошибка.
Поэтому вам нужно убедиться, что данные в вашем диапазоне поиска имеют тот же тип, что и значение поиска. Всегда намного проще использовать текст для поиска, чем цифры или даты.

В основном и Ваше исходное исключение, и мое предлагаемое решение сообщают, что они не могут найти значение, которое вы пытаетесь найти.

Следующая ссылка может помочь Вам разобраться с VLOOKUP Как исправить ошибку #N/A в функции VLOOKUP - служба поддержки Office[^]