我无法使用外部工作簿来使用Vlookup返回不同列的值。
我正在尝试获取Word文档,在文本框中输入ID号,让vlookup在外部文档中找到ID号,然后从下一列返回名称。然后,该名称将填充另一个文本框,而输入数字的日期将出现在第三个框中。现在,EMPID.txt仅具有两列A:EmpNum和B:EmpName。
Private Sub VerID_LostFocus()
Dim emp_number As String
Dim xlApp As Excel.Workbook
Set xlApp = Excel.Workbooks.Open("filepath\EmpID.xlsx")
emp_number = VerID.Text
MsgBox emp_number
On Error Resume Next
result = Excel.WorksheetFunction.VLookup(emp_number, xlApp.Worksheets("Sheet1").Range("A:B"), 2, False)
On Error GoTo 0
If result <> "" Then MsgBox result
MsgBox result
VerSig.Text = result
Set xlApp = Nothing
VerDate.Value = Format(Date, "mm/dd/yyyy")
End Sub
emp_number被分配并显示为消息框中的值,但未返回任何结果或将其分配给结果。每当第一个“失去焦点”时,日期就会在第三个文本框中更新。
答案 0 :(得分:0)
WorksheetFunction
与Application Object一起使用,因为您已经在工作簿中声明了XlApp
,将行更改为
Result = xlApp.Application.WorksheetFunction.VLookup(emp_number, Worksheets("Sheet1").Range("A:B"), 2, False)
,它正在工作。另外,如果在工作簿中将emp_number
输入为Number,则进行以下更改
Dim emp_number As Variant
'
'
'
'
emp_number = Val(VerID.Text)