use*_*307 16 excel vba excel-vba vlookup
我正在尝试开发一个表单来跟踪发票的进入.表单将有一个组合框,我可以点击并选择供应商编号.我希望文本框根据从组合框中选择的供应商编号自动填写.这是我到目前为止所拥有的:
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
Run Code Online (Sandbox Code Playgroud)
工作表3是从中提取信息的(供应商编号和名称).
当我回到表单来测试代码时,我收到以下错误:
运行时错误'1004':无法获取WorksheetFunction类的VLookup属性
我该如何解决?
San*_*osh 14
试试下面的代码
我建议在使用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
Run Code Online (Sandbox Code Playgroud)
要么
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
Run Code Online (Sandbox Code Playgroud)
小智 7
我遇到了同样的问题。似乎Me.ComboBox1.Value作为Vlookup函数的参数传递导致了这个问题。我所做的是将此值分配给一个双精度值,然后将其放入 Vlookup 函数中。
Dim x As Double
x = Me.ComboBox1.Value
Me.TextBox1.Value = Application.WorksheetFunction.VLookup(x, Worksheets("Sheet3").Range("Names"), 2, False)
Run Code Online (Sandbox Code Playgroud)
或者,对于较短的方法,您可以使用Cdbl(<Value>).
所以它最终会成为
Me.TextBox1.Value = Application.WorksheetFunction.VLookup(Cdbl(Me.ComboBox1.Value), Worksheets("Sheet3").Range("Names"), 2, False)
Run Code Online (Sandbox Code Playgroud)
虽然听起来很奇怪,但它对我有用。
希望这可以帮助。
| 归档时间: |
|
| 查看次数: |
117425 次 |
| 最近记录: |