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

Fehlerbehandlung (3) - On Error Resume Next - Eine Anweisung im Zwielicht

Autor: Peter Haserodt - Erstellt: --      - Letzte Revision: --Gruppenthema: 7 Folgen 1 2 3 4 5 6 7 Sie sind in Folge:4
Wichtiger Hinweis:
Dies ist ein Teil des Fehlerbehandlungs Tutorials.
Starten Sie unbedingt mit dem Anfang, also mit : Fehlerbehandlung (0) - Einführung

On Error Resume Next - Eine Anweisung im Zwielicht

Schon viel habe ich davon gelesen, wie sich Leute darüber mockiert haben.
Tatsächlich finde ich persönlich diese (und nicht nur ich, sondern auch in einigen Microsoft Beispielen findet man sie) sehr nützlich, wenn man sie bewusst anwendet.
Aber was bedeutet sie? Nun nichts anderes, als dass bei einem Fehler einfach die nächste Anweisung durchgeführt wird.
Praktisch wird der Fehler übersprungen.

Das Wichtigste zuerst:
Benutzt man diese Anweisung, muss unbedingt danach wieder die normale Fehlerbehandlung gesetzt werden.
Entweder mit unserer Fehlerbehandlung oder mit On Error GoTo 0 (Bei Tests)

Der Umgang mit ihr gliedert sich hautpsächlich in zwei Varianten:
1. Mir ist es Wurscht, dass ein Fehler passiert ist.
2. Ich prüfe danach ob ein Fehler passiert ist, und reagiere darauf.


Beispiel für 1.

Public Sub DebugBuildIN()
Dim g As Object
On Error Resume Next
For Each g In ThisWorkbook.BuiltinDocumentProperties
	Debug.Print g.Name; " - "; g.Value
Next g
End Sub
Hier gibt es einige Properties, die keinen Value haben und damit einen Fehler auslösen würden.
Trotzdem interessiert mich das Ganze.
Simple Lösung: On Error Resume Next
Simples Beispiel für 2.

Public Sub ResumeCheck()
Dim sTest As String
'Achtung es wird auf Sheets geprüft, nicht auf Worksheets
On Error Resume Next
sTest = ThisWorkbook.Sheets("asfgdfsreedk").Name
If Err = 0 Then
	MsgBox "Ein Blatt existiert mit diesem Namen"
Else
	MsgBox "Kein Blatt mit diesem Namen existiert"
End If
End Sub
Dies ist von einer brillianten Einfachheit, dass es direkt von mir stammen könnte.
Wir hauen einfach ein On Error Resume Next davor, weisen einer String Variablen den gewünschten Namen zu.
Wenn es diesen in unserem Workbook nicht gibt, wird ein Fehler produziert.
Diesen werten wir mir Err = 0 aus.
Denn wenn kein Fehler aufgetreten ist, ist das Err = 0 sonst eine Fehlernummer.
Simple und elegant.

Was erschwerend bei dieser Variante hinzukommt:
Sie ist - jedenfalls in meinen Tests - um vieles schneller, als eine Schleife über alle Blätter!
 Peter Haserodt
  • Formelhilfe
  • Makroentwicklung
  • VBA-Programmierung
  • + + + + + + + + +
Die Pfui Pfui Variante

Ich kenne meine Pappenheimer!
Ne ne, ein Schalk der meint, er habe jetzt die perfekte Lösung gefunden, um einfach lästige Fehlermeldungen wegzuhauen.
Natürlich ist es keine Lösung, einfach überall ein On Error Resume Next einzubauen, um damit Fehler zu überspringen.
Das Resultat ist ein ganz fürchterliches und führt zu vollkommen verzerrten Auswertungen.

Aus Sicherheitsgründen wiederhole ich es deshalb nochmals:

Setzen Sie On Error Resume Next nur ganz bewusst ein!
Schalten Sie danach unbedingt wieder eine gesteuerte Fehlerbehandlung ein.
On Error Resume Next ist nicht die Lösung aller Ihrer Probleme!!!


Weitere Artikel der Gruppe: Tutorials Aus Excel VBA
Nach oben