ВПР генерирует ошибку времени выполнения "1004"

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

Private Sub GoNoGo()

Dim i As Integer
Dim OffInt As Integer
Dim Neg As Integer
Neg = -30

Dim Ret As String
Dim I3 As Cell
Dim FindValue As String

Worksheets("BF59520").Activate
Range("AE3").Activate
i = 3
OffInt = 0

Do Until ActiveCell.Offset(0, Neg).Value = ""

    If ActiveCell.Offset(0, -1).Interior.Color = RGB(255, 235, 160) Then
        ActiveCell.Offset(1, 0).Activate
        i = i + 1
    Else
       ActiveCell.Value = Application.WorksheetFunction.VLookup(ActiveCell.Offset(0, -18), Worksheets("Go No Go").Range("B2:O180"), 4, False)

        ActiveCell.Offset(1, 0).Activate
        i = i + 1
    End If
        OffInt = OffInt + 1
Loop

End Sub

Когда цикл доходит до строки ВПР, код возвращает ошибку Run-Time error '1004':

Не удалось получить свойство ВПР класса worksheetFunction.


person Drew Garber    schedule 23.06.2017    source источник


Ответы (1)


Как правило, когда вы получаете эту ошибку в функции рабочего листа, это означает, что сама функция вернула ошибку. Убедитесь, что вы передаете ему правильные значения. Если вы не можете гарантировать, что получите правильное значение от функции, вы можете попробовать использовать On Error следующим образом:

On Error Resume Next
Application.WorksheetFunction.VLookup(ActiveCell.Offset(0, -18), Worksheets("Go No Go").Range("B2:O180"), 4, False)
On Error GoTo 0

или вы можете зафиксировать ошибку в операторе оценки, например так

ActiveCell.Value = Evaluate("=IFERROR(VLOOKUP(" & ActiveCell.Offset(0,-18) & ", 'Go No Go'!B2:O180, 4, FALSE),0)")

Первый не приведет к изменению ActiveCell при сбое vlookup, второй позволяет вам установить значение по умолчанию в качестве второго аргумента функции «ЕСЛИОШИБКА».

Надеюсь это поможет!

person B Slater    schedule 23.06.2017