我正在使用以下vba代碼執行vlookup。奇怪的是,它只有在查找值(單元格C1)中有文本時才起作用。如果單元格C1中的查找值是一個數字(不是文本),它不起作用。任何想法爲什麼?使用VBA執行vlookup
Sub FINDVAL()
On Error GoTo MyErrorHandler:
Dim E_name As String
E_name = Range("C1").Value
If Len(E_name) > 0 Then
Sal = Application.WorksheetFunction.VLookup(E_name, Sheet1.Range("A1:B100000"), 2, False)
MsgBox "Salary is : $ " & Sal
Else
MsgBox ("You entered an invalid value")
End If
Exit Sub
MyErrorHandler:
If Err.Number = 1004 Then
MsgBox "Employee Not Present in the table."
End If
End Sub
因爲你 「暗淡」 E_Name爲字符串,我想。所以你通過VLookup一個字符串,這意味着它只會匹配字符串?從文檔中,關於函數中的第四個參數:「如果range_lookup參數爲FALSE,則VLOOKUP將僅查找完全匹配」。爲什麼不傳遞'Range(「C1」)而不是E_name? –
考慮將E_Name標註爲Variant類型,以便它可以接收文本或數字。還要確保你在Excel中使用的公式以你想要的方式在Excel中工作,然後再將它放到VBA工作表函數中。您可能還需要考慮指定您使用哪個工作表來引用C1。 –