Private Sub TextBox2_AfterUpdate() 'Badge Number
On Error GoTo Err
Dim tbl As ListObject, fndStr As String
Set tbl = Sheet9.ListObjects("EmployeeList")
fndStr = Trim(Me.TextBox2.Value)
MsgBox fndStr
If fndStr <> "" Then
Me.TextBox3.Value = Application.WorksheetFunction.VLookup(fndStr, tbl, 2, False) '<-- Error Line
End If
Exit Sub
Err:
MsgBox Err.Description
End Sub
我有一个名为“EmployeeList”的表,我正在使用Badge编号进行简单的vlookup,但我收到错误的原因不明。我知道之前有过类似的问题但我在发布之前就已经阅读了。
您可以清楚地看到图像中的表名和Vlookup函数中第一个参数的输入值10
,但它不会返回任何值但会出错。不知道出了什么问题。
'I tried this as well
Me.TextBox3.Value = Application.WorksheetFunction.VLookup(fndStr, Sheet9.Range("A1:F" & Rows.Count), 2, False) '<-- Error Line
'And this
Me.TextBox3.Value = Application.WorksheetFunction.VLookup(fndStr, Sheet9.Range("EmployeeList"), 2, False) '<-- Error Line
也是因为未知原因我无法做到
Application.Vlookup as well
Like when I do Application.V
Vlookup doesn't shows up in the list.
答案 0 :(得分:3)
有两个问题。
首先,您尝试解决的问题是Vlookup中需要Range
为Arg2
。由于您的tbl
是ListObject
。您只需使用tbl.Range
,请参阅ListObject.Range Property。
第二个是Vlookup
在一列数字中找不到字符串。您的第一列是一列数字。所以你需要将字符串转换为数字。
Me.TextBox3.Value = Application.WorksheetFunction.VLookup(CDbl(fndStr), tbl.Range, 2, False)
应该有用。
答案 1 :(得分:1)
请找到下面的代码,我使用了evaluate方法来获取vlookup结果。
Private Sub TextBox2_AfterUpdate()
Dim fndStr As String
On Error GoTo Err_Desc
fndStr = Trim(Me.TextBox2.Value)
MsgBox fndStr
If fndStr <> "" Then
'// Using Eval method
Me.TextBox3.Value = Evaluate("=VLOOKUP(" & fndStr & ",EmployeeList[#All],2,0)")
End If
Exit Sub
Err_Desc:
MsgBox Err.Description
End Sub