2016-11-03 4 views
0

Я ввожу данные на основе кода VLOOKUP, но продолжаю получать сообщение об ошибке.Приложение VLOOKUP no value

For Each Cell In Rng 
    Cell.Offset(0, 2).Value = Application.WorksheetFunction.VLookup(Cell, Table2, 1, False) 

    Next 

Я хочу, чтобы в колонке C либо опубликовать значение ВПР или вернуть сообщение "Возвращенный деталь не сканируется. Я использовал обработчик ошибок, чтобы сделать это, но я продолжаю получать ошибку, когда это выполняется.

  'MyErrorHandler: 
      ' If Err.Number = 1004 Then 
      '  Cell.Offset(0, 2).Value = "Returned Item Not Scanned" 
      ' ElseIf Err.Number = 13 Then 
      ' MsgBox "Incorrect Exceptions Data." 
      ' Else 
      ' 
      ' End If 

Ошибка указывает на «Невозможно получить свойство VLookup класса WorksheetFunction.

Может ли кто-нибудь помочь?

+0

Забыл добавить, если я делаю это вручную формулу это - = IFERROR (ВПР (A3 '311A Data '! A: A, 1, FALSE), «Возвращенный товар не проверен») –

+0

Во-первых, что такое 'Table1'? - во-вторых, вы используете неправильную формулу. Вы хотите '= MATCH()' для этого, а не '= VLOOKUP()' –

+0

. Таблица 1 - это диапазон «311A Data»! A: A –

ответ

1

Попробуйте выполнить код ниже, я использую Application.VLookup, чтобы уловить ошибки.

(При улавливания VLookup ошибок в этом методе, вы не получаете 1004 для Err.Number)

Option Explicit 

Sub VLookup_with_ErrHandling() 

Dim Cell    As Range 
Dim Rng     As Range 
Dim Table2    As Range 

' modify "Table2" range to your needs 
Set Table2 = Sheets("Sheet1").Range("A1:C20") 

' modify "Rng" range to your needs 
Set Rng = Sheets("Sheet2").Range("A1:A10") 

For Each Cell In Rng 
    If Not IsError(Application.VLookup(Cell, Table2, 1, False)) Then 
     Cell.Offset(0, 2).Value = Application.VLookup(Cell, Table2, 1, False) 
    Else 
     Cell.Offset(0, 2).Value = "Returned Item Not Scanned" 
    End If 
Next 

End Sub 
+0

Прекрасно работает. Спасибо. –