Ich verwende den folgenden VBA-Code zum Ausführen eines vlookup. Seltsamerweise funktioniert es nur, wenn sich im Lookup-Wert Text befindet (Zelle C1). Wenn der Suchwert in Zelle C1 eine Zahl (kein Text) ist, funktioniert es nicht. Irgendwelche Gedanken warum?Verwenden von VBA zum Ausführen eines 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
Weil Sie E_Name als String "dimmen", würde ich denken. Sie übergeben VLookup also einen String, was bedeutet, dass nur Zeichenfolgen gefunden werden. Aus der Dokumentation zum vierten Argument in der Funktion: "Wenn das Argument range_lookup FALSE ist, findet SVERWEIS nur eine exakte Übereinstimmung". Warum nicht 'Range (" C1 ") statt E_name übergeben? –
Erwägen Sie, E_Name als Variant-Typ zu bemaßen, sodass es entweder Text oder Zahlen empfangen kann. Stellen Sie außerdem sicher, dass die Formel, mit der Sie in Excel arbeiten, genau so arbeitet, wie Sie möchten, bevor Sie sie in VBA worksheetFunction platzieren. Sie sollten auch überlegen, welches Arbeitsblatt Sie für C1 verwenden. –