"Не удалось получить свойство VLookup класса WorksheetFunction"
Я пытаюсь разработать форму для отслеживания счетов-фактур по мере их поступления. Форма будет иметь combobox, где я могу щелкнуть и выбрать номер поставщика. Я хочу, чтобы текстовое поле автоматически заполнялось на основе номера поставщика, выбранного из выпадающего списка. Вот что я до сих пор:
Private Sub ComboBox1_Change()
'Vlookup when ComboBox1 is filled
Me.TextBox1.Value = Application.WorksheetFunction.VLookup( _
Me.ComboBox1.Value, Worksheets("Sheet3").Range("Names"), 2, False)
End Sub
Рабочий лист 3, из которого выводится информация (номер и имя поставщика).
Когда я вернусь к форме для проверки кода, я получаю следующую ошибку:
Ошибка времени выполнения "1004": невозможно получить свойство VLookup класса WorksheetFunction
Как это исправить?
Ответы
Ответ 1
Попробуйте ввести код
Я буду рекомендовать использовать обработчик ошибок при использовании vlookup, поскольку ошибка может возникнуть, если lookup_value не найден.
Private Sub ComboBox1_Change()
On Error Resume Next
Ret = Application.WorksheetFunction.VLookup(Me.ComboBox1.Value, Worksheets("Sheet3").Range("Names"), 2, False)
On Error GoTo 0
If Ret <> "" Then MsgBox Ret
End Sub
ИЛИ
On Error Resume Next
Result = Application.VLookup(Me.ComboBox1.Value, Worksheets("Sheet3").Range("Names"), 2, False)
If Result = "Error 2042" Then
'nothing found
ElseIf cell <> Result Then
MsgBox cell.Value
End If
On Error GoTo 0
Ответ 2
У меня была такая же проблема. Кажется, что передача Me.ComboBox1.Value
в качестве аргумента для функции Vlookup
вызывает проблему. То, что я сделал, присваивало этому значению значение double, а затем помещало его в функцию Vlookup.
Dim x As Double
x = Me.ComboBox1.Value
Me.TextBox1.Value = Application.WorksheetFunction.VLookup(x, Worksheets("Sheet3").Range("Names"), 2, False)
Или, для более короткого метода, вы можете просто преобразовать тип в функцию Vlookup с помощью Cdbl(<Value>)
.
Итак, это будет
Me.TextBox1.Value = Application.WorksheetFunction.VLookup(Cdbl(Me.ComboBox1.Value), Worksheets("Sheet3").Range("Names"), 2, False)
Как ни странно, это работает для меня.
Надеюсь, что это поможет.
Ответ 3
У меня была эта проблема с моей собственной программой. Я выяснил, что ценность, которую я искал, не была в моей справочной таблице. Я установил справочную таблицу, а затем ошибка исчезла.