无法获取工作表WorksheetFunction类错误的VLookup属性

时间:2016-09-27 07:08:53

标签: excel vba excel-vba vlookup

enter image description here

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.

2 个答案:

答案 0 :(得分:3)

有两个问题。

首先,您尝试解决的问题是Vlookup中需要RangeArg2。由于您的tblListObject。您只需使用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