“无法获取WorksheetFunction类的VLookup属性”错误

我试图开发一个表单来跟踪他们进来的发票。表单将有一个combobox,我可以点击并select一个供应商编号。 我希望文本框根据从combobox中select的供应商编号自动填写。 以下是我到目前为止:

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是从中绘制信息(供应商编号和名称)。

当我回到表单来testing代码时,出现以下错误:

运行时错误“1004”:无法获取WorksheetFunction类的VLookup属性

我该如何解决?

尝试下面的代码

我会build议在使用vlookup时使用error handling程序,因为在找不到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 

我遇到了同样的问题。 看起来传递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) 

或者,对于更短的方法,您可以使用Cdbl(<Value>)在Vlookup函数内转换types。

所以它最终会成为现实

 Me.TextBox1.Value = Application.WorksheetFunction.VLookup(Cdbl(Me.ComboBox1.Value), Worksheets("Sheet3").Range("Names"), 2, False) 

听起来很奇怪,它对我很有用。

希望这可以帮助。

我只是用自己的程序来解决这个问题。 我发现我正在寻找的价值不在我的参考表中。 我修好了我的参考表,然后错误消失了。