VBA [basics]: Fehlerbehandlung mit VBA

Auch bei sorgfältig geschriebenem Code lassen sich Laufzeitfehler nicht vollständig vermeiden. Dateien fehlen, Daten sind unerwartet leer oder Benutzer führen Aktionen in einer anderen Reihenfolge aus als vorgesehen. Damit solche Situationen nicht zum Abbruch der Anwendung führen, stellt VBA verschiedene Mechanismen zur Fehlerbehandlung bereit. In diesem Artikel lernst Du die grundlegenden Techniken der Fehlerbehandlung kennen und erfährst, wie Du sie sinnvoll und strukturiert in Deinen Prozeduren einsetzt.

Beispieldatenbank

Die Beispiele dieses Artikels findest Du in der Datenbank VBABasics_DebuggenImVBAEditor.accdb.

Was ist ein Laufzeitfehler?

Ein Laufzeitfehler tritt auf, wenn ein VBA-Befehl während der Ausführung nicht korrekt ausgeführt werden kann. Typische Beispiele sind der Zugriff auf ein nicht vorhandenes Objekt, eine Division durch Null oder das Öffnen einer Datei, die nicht existiert.

Ohne Fehlerbehandlung zeigt Access in solchen Fällen eine Fehlermeldung an und bricht die Ausführung der aktuellen Prozedur ab. Für den Entwickler ist das beim Testen hilfreich, für den späteren Einsatz einer Anwendung jedoch meist unerwünscht.

Beispiel für einen Laufzeitfehler

Das klassische Beispiel für einen Laufzeitfehler ist die Division durch 0. Hier haben wir einfach eine Anweisung erstellt, die den Wert 1 durch den Wert 0 dividiert, was zu einem Fehler mit der Nummer 11 und der Fehlermeldung Division durch Null führt.

Führen wir diese Anweisung aus, erhalten wir als Erstes eine Meldung mit dem entsprechenden Fehler. Wir können dann auf Beenden oder Debuggen klicken. Mit Beenden wird die Prozedur beendet, ein Klick auf Debuggen öffnet den VBA-Editor und zeigt die fehlerhafte Anweisung mit einer gelben Markierung an (siehe Bild 1).

Klassischer Fehler ohne Behandlung

Bild 1: Klassischer Fehler ohne Behandlung

Warum Fehlerbehandlung wichtig ist

Eine saubere Fehlerbehandlung sorgt dafür, dass Deine Anwendung auch bei unerwarteten Situationen kontrolliert reagiert. Statt eines abrupten Abbruchs kannst Du dem Benutzer eine verständliche Meldung anzeigen, Ressourcen freigeben oder alternative Programmpfade wählen.

Wichtig ist dabei die Unterscheidung zwischen Debugging und Fehlerbehandlung. Debugging dient der Entwicklung und Analyse von Code – siehe Artikel VBA [basics]: Debuggen im VBA-Editor (www.access-basics.de/684). Fehlerbehandlung hingegen ist dafür gedacht, den Code im produktiven Betrieb stabil und robust zu machen.

Eingebaute Fehlerbehandlung deaktivieren

Die einfachste, aber nicht besonders professionelle Art, einen Laufzeitfehler zu verhindern, ist das vorherige Ausführen der folgenden Anweisung:

On Error Resume Next

Wenn diese vor einer Zeile platziert wird, die einen Laufzeitfehler auslöst, wird die fehlerhafte Zeile schlicht übergangen:

Ende des frei verfügbaren Teil. Wenn Du mehr lesen möchtest, hole Dir ...

den kompletten Artikel im PDF-Format mit Beispieldatenbank

diesen und alle anderen Artikel mit dem Jahresabo

Schreibe einen Kommentar