Während Sie sich noch im Fehlerbehandlungsmodus befinden, können keine weiteren Fehler mehr auftreten. Und Sie fehlten die Resume
Anweisung Fehlerbehandlungsmodus verlassen:
Private Sub CommandButton1_Click()
For i = 2 To 5
On Error GoTo X1:
Range("F" & i) = Application.WorksheetFunction.VLookup(Range("E" & i), Range("A2:B5"), 2, 0)
GoTo X2:
X1:
Range("F" & i) = "No Value found"
Resume X2 'Finished error-handling, resume normal processing
X2:
Next
End Sub
Eine bessere Art und Weise zu tun, was Sie würden tun:
Private Sub CommandButton1_Click()
Dim i As Long
Dim result As Variant
For i = 2 To 5
result = Application.VLookup(Range("E" & i), Range("A2:B5"), 2, 0)
If IsError(result) Then
result = "No Value found"
End If
Range("F" & i) = result
Next
End Sub
Application.VLookup
Verwendung anstelle von Application.WorksheetFunction.VLookup
, ermöglicht es, die Fehlerbedingung, die von VLookup
erzeugt wird, in Ihren Code zurückzuversetzen, anstatt einen Fehler in VBA selbst zu verursachen. Sobald Sie wieder in Ihrem Code sind, können Sie den Fehler kontrolliert testen.
Ich habe noch nie eine "Laufzeitfehler 1004. Antwort noch nicht gefunden" Nachricht gesehen - sind Sie sicher, dass es das sagt?!?! – YowE3K