“无法获取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)
听起来很奇怪,它对我很有用。
希望这可以帮助。
我只是用自己的程序来解决这个问题。 我发现我正在寻找的价值不在我的参考表中。 我修好了我的参考表,然后错误消失了。