2016-12-06 4 views
0

Я получаю ошибкуИспользование функции ВПР() С помощью VBA

Требуется объект

работает мой синтаксис. Это синтаксис, который у меня есть, но он не увенчался успехом. Как я могу записать значение Vlookup() в мою текущую ячейку T1?

Public Sub Test() 
    Dim dblInfo 
    dblInfo = Application.WorksheetFunction.VLookup("A2", Sheet1.Range("A2:F171"), 4, False) 
    Range("T1").Select 
    ActiveCell.FormulaR1C1 = dblInfo 
End Sub 
+0

Ровно какая строка поднимает ошибку «объект требуется»? –

+0

Обратите внимание, что при сбое поиска вы столкнетесь с еще одной ошибкой во время выполнения (1004), и вы не будете обрабатывать ее. 'dblInfo' должен быть объявлен с явным типом (и без венгерского префикса, пожалуйста); 'Dim anyThisActuallyIs As Double'. Если вы имеете в виду 'dblInfo', чтобы содержать значение ошибки при неудачном поиске, объявите его как« Variant »и используйте функцию« Application.VLookup »с последней задержкой. См. [Этот ответ] (http://stackoverflow.com/a/40877404/1188513) для получения дополнительной информации. –

ответ

1

Если вы просто хотите, чтобы ввести формулу ВПР в T1

Range("T1") = "=VLookup(A2, Sheetname!A2:F171, 4, False)" 

В противном случае, если вы хотите, чтобы вычислить ВПР, а затем просто введите результат ...

Range("T1") = Application.WorksheetFunction.VLookup([A2], Sheetname.Range("A2:F171"), 4, False) 
+0

Главное решение дает мне #NAME? в ячейке T1 и внизу дает мне тот же объект, что и ошибка –

+0

Да, отредактирован ... Я случайно попал в submit слишком быстро ... – Rdster

+0

A2: F171 находится на другом листе, чем Range («T1») - как мне квалифицировать имя листа? –