“I have not failed. I have just found ten thousand ways that won’t work.” [Thomas Edison]
Abstract
Ihr Excel VBA Programm muss Im Fehlerfall nicht notwendigerweise stoppen. Sie können Fehler abfangen mit
On Error GoTo <Label>
oder Sie ignorieren alle Fehler einfach mit
On Error Resume Next
Für eine Einführung siehe (externer Link!) Chip Pearson’s page on Error Handling.
Ein etwas komplexeres Beispiel finden Sie in meiner benutzerdefinierten Funktion sbMiniPivot.
Ein wichtiger Hinweis: Stellen Sie sicher, dass Ihre Optionen in VBA auf “Unterbrechen bei nicht verarbeiteten Fehlern” gesetzt sind!
Falls “Unterbrechen bei jedem Fehler” gewählt ist, wird Ihr VBA Fehlerbehandlung “On Error …” einfach ignoriert - bei jedem Fehler wird Excel mit einer Fehlermeldung gestoppt.
“Unterbrechen in Klassenmodul” ist eine vernünftige Option, wenn Sie Fehler in Ihren Klassenmodulen suchen oder sie testen. Falls diese Option nicht gewählt ist, wird Excel im Normalfall einen Fehler nicht im Klassenmodul zeigen, sondern mit einer Fehlermeldung bei dem aufrufenden Code zurückkehren. Ist diese Option gesetzt, wird Excel bei einem Fehler in einem Klassenmodul stoppen und dort mit einer Fehlermeldung anhalten.
Leider verfügt Excel nicht wie MS Access über eine Funktion wie Application.GetOption(“Error Trapping”). Mark Lundberg veröffentlichte den Trick
Application.SendKeys "%{F11}%TO+{TAB}{RIGHT 2}%E~%{F4}"
aber ich empfehle hier normale, natürliche Achtsamkeit.