Autor: Peter Haserodt  --- Aus Excel VBA - Gruppe: Tutorials

Fehlerbehandlung (0) - Einführung

Autor: Peter Haserodt - Erstellt: --      - Letzte Revision: --Gruppenthema: 7 Folgen 1 2 3 4 5 6 7 Sie sind in Folge:1

Fehlerbehandlung - Einführung

Fehlerbehandlung gehört sicherlich zu den ungeliebten Kindern von VBA. Es bedeutet Arbeit und man sieht nicht wirklich was dabei herauskommen. Dabei ist gute Programmierung ohne Fehlerbehandlung nicht vorstellbar.
Außerdem haben viele Probleme damit, was eigentlich wann wo passiert und ...
Weiterhin kann man Fehler durchaus auch positiv nutzen.

VBA stellt uns, unter anderen, für die Fehlerbehandlung einmal das Err Objekt und On Error Anweisungen zur Verfügung.
Err als Abkürzung für Error -> Fehler.

Fehlerbehandlung - Wofür?

Sollten Sie zu der Spezies gehören, die meint, 100 % sicheren Code auf allen Rechnern in jeder Umgebung zu produzieren, dann müssen Sie jetzt nicht weiterlesen, sondern sollten sich schnellstmöglich patentieren lassen.

Der primäre Grund für Fehlerbehandlung ist, ein Programm kontrolliert abstürzen zu lassen.
Dabei gleichzeitig dem Anwender dies in angemessener Form mitzuteilen, dass gerade großer Mist passiert ist und möglichst auch die Position und vor allem was passiert ist, auszugeben, damit der verzweifelte Nutzer Ihres grandiosen Machwerkes sich ans Telefon stürzen kann und Ihnen mitteilen kann:
"Irgendwas ist kaputt und sagt:..."

Nichts ist unangenehmer als der Abbruch eines Programmes mit irgendeiner kryptischen Meldung wie:
Fehler im verborgenen Modul
und dann noch möglichst in den Debug.Modus zu laufen.
Auch wenn man es nicht 100 % vermeiden kann (Meistens aus Faulheit) sollte man doch sein Möglichstes dazu tun.

Ein weiterer Grund ist, auf einen Fehler zur reagieren.
Dies können ganz triviale Aufräumarbeiten sein aber auch das Programm weiter laufen zu lassen, wenn der Fehler eine Programmbeendigung nicht notwendig macht.

Aufräumarbeiten

Dies ist ein so wichtiger Punkt, dass er einen Kasten verdient.
Stellen Sie sich folgendes Szenario vor:
Sie haben - aus Geschwindigkeitsgründen - die automatische Berechnung auf manuell gesetzt.
Der Anwender hatte diese vorher auf automatisch.
Wenn nun Ihr Code abfliegt, bevor Sie die Einstellung wieder auf ihren Ursprung zurück gesetzt haben, bleibt der Anwender mit einem veränderten System zurück und wundert sich dumm und dämlich, warum auf einmal nichts mehr berechnet wird.
Zurecht wird er Sie - den Programmierer - nicht nur in die Wüste jagen, sondern zuvor noch mit Salz bestreuten Füßen in einem Ziegenstall anbinden!


Oder Fehler ganz brutal auszunutzen.
Beispiel: Sie wollen ermitteln wie hart Ihr Kopf ist.
Zuerst hauen Sie Ihn gegen eine 30cm starke Wand. Passiert kein Fehler (Kopf bleibt heil), ist alles ok.
Wenn nicht, besorgen Sie sich einen neuen Kopf und reduzieren die Wandstärke um einen Zentimeter und das Ganze von vorne.
Zugegeben, ein etwas seltsames Beispiel, da es sich aber um Ihren Kopf handelt, wollte ich es nicht weglassen.

Was sind nun aber abfangbare Fehler?

Nein Nein Nein, es tut mir leid, wenn Sie Blödsinn programmieren, wird VBA Sie nicht davor schützen!
Also solche Sachen wie: Ich möchte ein Zehntel von einer Zahl und Sie dividieren durch 12, dann ist dies alleinig Ihr Problem. Logische Fehler - wenn sie denn nicht einen Laufzeitfehler auslösen - haben mit Fehlerbehandlung nichts zu tun.

Auch Syntaxfehler gehören nicht dazu. Diese werden schon beim Start des Programmes von VBA entdeckt, bei verkehrten Variablennamen natürlich nur, wenn Sie Option Explicit eingebunden haben. Dies setze ich aber voraus.

Fehlerbehandlung ist für Fehler, die während der Laufzeit auftreten, d.h. VBA kann etwas nicht verarbeiten.
Sei es so etwas Simples wie eine Division durch 0, ein Zugriff auf ein Tabellenblatt, welches nicht existiert oder scheinbar komplexere Dinge wie Zugriffe auf ein Objekt, welches nicht oder so nicht zur Verfügung steht.
Alle Fehler die auftauchen können, weiß nur der VBA Teufel und selbst der kennt nicht alle.

Aber wir wollen ja dem Teufel vom Schippchen springen und damit fangen wir im nächsten Kapitel an.



Weitere Artikel der Gruppe: Tutorials Aus Excel VBA
Nach oben