Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Was bedeutet On Error Resume Next

Forumthread: Was bedeutet On Error Resume Next

Was bedeutet On Error Resume Next
Holger
Hallo,
oft lese ich diesen Code. Was bedeutet er?
Mein Problem. In meinen Makros gibt es kaum eine Fehlerbehandlung.
Manchmal passieren unvorhersehbare Dinge, dann steigt er mit einem Laufzeitfehler aus. Nicht schön für den User.
Wie kann man das vermeiden?
Anzeige

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: Was bedeutet On Error Resume Next
30.06.2010 19:42:57
Beverly
Hi Holger,
das bedeutet, dass bei einem auftretenden Fehler die nächste Codezeile ausgeführt wird (ohne Fehlermeldung). Man sollte aber nach Möglichkeit On Error Resume Next nicht zur Fehlerbehandlung einsetzen, wenn es andere Möglichkeiten dafür gibt.
Man kann es natürlich verwenden, wenn man auf diesem Weg gezielt etwas bestimmtes erreichen will. Auf jeden Fall ist es aber mit großer Vorsicht zu genießen und man sollte auch nach dem Code-Teil, wo ein gezielter Fehler "übersprungen" wird, dies mit On Error Goto 0 zurücksetzen. Andernfalls kann es passieren, dass der Code Dinge tut, die man gar nicht geplant hat. Und bei einer Fehlersuche - also wenn ein Code irgend etwas anderes als gewünscht macht - sollte man die Zeile On Error Resume Next auf jeden Fall auskommentieren, sonst findet man den Fehler nicht, da er ja sozusagen ignoriert wird.
Da aber niemand deinen Code kennt, kann man das in deinem konkreten Fall auch schlecht sagen, was da am zweckmäßigsten ist.


Anzeige
AW: Was bedeutet On Error Resume Next
30.06.2010 20:08:27
Holger
Hi Karin,
Danke für die Antwort.
Dann bringt kich On Error resume next nicht weiter.
Bislang habe ich zwei Fehlerquellen entdeckt, eine davon ungeklärt:
1. Unter bestimmten (ungeklärten Umständen, vielleicht wenn eine andere Excel Datei geöffnet wird), funktioniert die Tabellenblattzuweisung nicht (SET wks = Blabla)
2. Wenn eine Datendatei nicht verfügbar ist, weil sie jemand z.B vergessen hat zu kopieren.
Anzeige
AW: Was bedeutet On Error Resume Next
30.06.2010 20:36:58
Beverly
Hi Holger,
zu 1. der Fehler tritt dann auf, wenn die betreffende Tabelle nicht vorhanden ist - hier kann man mit On Error gezielt einen Fehler abfangen indem man die Tabelle auf die Variable schreibt und dann den Inhalt der Variablen prüft. Die Variable ist Nothing, wenn die Tabelle nicht xistiert:
    On Error Resume Next
Set wks = Worksheets("Tabelle3")
On Error GoTo 0
If wks Is Nothing Then MsgBox "Tabelle existiert nicht"

Nach dem Then natürlich den Code, der im betreffenden Fall - Tabelle nicht vorhanden - ausgeführt werden soll. Man kann es logischer Weise auch umgedreht machen in dem man stattdessen das Vorhandensein auswertet:
    If Not wks Is Nothing Then MsgBox "Tabelle existiert"

Das konkrete WIE hängt ganz von den Bedingungen ab, was man weiterverarbeiten will.
zu 2. wenn es sich um eine Datei handelt die geöffnet werden soll, dann könnte man zuerst prüfen, ob sie in dem Verzeichnis vorhanden ist. Schau dir dazu mal in der VBA-Hilfe die Funktion Dir() an.


Anzeige
AW: Was bedeutet On Error Resume Next
30.06.2010 20:37:51
Beverly
Hi Holger,
zu 1. der Fehler tritt dann auf, wenn die betreffende Tabelle nicht vorhanden ist - hier kann _ man mit On Error gezielt einen Fehler abfangen indem man die Tabelle auf die Variable schreibt und dann den Inhalt der Variablen prüft. Die Variable ist Nothing, wenn die Tabelle nicht xistiert:

On Error Resume Next
Set wks = Worksheets("Tabelle3")
On Error GoTo 0
If wks Is Nothing Then MsgBox "Tabelle existiert nicht"

Nach dem Then natürlich den Code, der im betreffenden Fall - Tabelle nicht vorhanden - ausgeführt werden soll. Man kann es logischer Weise auch umgedreht machen in dem man stattdessen das Vorhandensein auswertet:
    If Not wks Is Nothing Then MsgBox "Tabelle existiert"

Das konkrete WIE hängt ganz von den Bedingungen ab, was man weiterverarbeiten will.
zu 2. wenn es sich um eine Datei handelt die geöffnet werden soll, dann könnte man zuerst prüfen, ob sie in dem Verzeichnis vorhanden ist. Schau dir dazu mal in der VBA-Hilfe die Dir-Funktion an.


Anzeige
AW: Was bedeutet On Error Resume Next
30.06.2010 20:43:22
Daniel
HI
man kann schon "On Error Resume Next" einsetzen, aber man sollte dann schon genau wissen, was man tut.
einfach nur pauschal oben ins Makro schreiben führt nur seltsamen Ergebnissen, deren Ursache keine findet, weil das Makro an der Fehlerstelle nicht stoppt.
hier mal ein Beispiel für einen sinnvollen Einsatzt.
am Beispiel deines ersten Falls, der User hat die falsche Datei geöffnet und das Blatt "blabla" existiert nicht:
On Error Resume Next
Set wks = blabla
On Error Goto 0
If wks is Nothing then
Msgbox "Falsche Datei, das Blatt "blabla" ist nicht vorhanden."
Else
'hier folgt dann der weitere Code
End if
Beachte, das "On Error Resume Next" gilt nur für den Befehl, bei dem der Fehler passiern darf.
danach wird die Option sofort deaktiviert und es erfolgt eine Prüfung, ob die Aktion erfolgreich war oder ob ein Fehler passiert ist.
Gruß, Daniel
Anzeige
AW: Was bedeutet On Error Resume Next
30.06.2010 19:44:30
Nepumuk
Hallo,
indem du möglichst alle Möglichkeiten berücksichtigst. Erst bei völlig unvorhersehbaren Ereignissen (z.B. der Chef geht persönlich an den Rechner) soll der Errorhandler das abfangen. Dieser sollte aber nicht einfach weitermachen, denn das bewirkt On Error Resume Next, sondern eine 1. Aussagekräftige Meldung ausgeben. 2. Ein Protokoll erstellen mit Datum, Uhrzeit, Benutzername, Computername, Fehlernummer, Fehlerbeschreibung sowie Zeile und Prozedur in welcher der Fehler auftrat. Außerdem sollte er merken wenn er in eine Endlosschleife gerät und in diesem Fall das ganze Programm zwangsweise beenden.
Wenn du jetzt wissen willst wie du das machen kannst, dann schau hier in das Forenarchiv. Es genannten Punkte wurde alle schon vielfach behandelt.
Gruß
Nepumuk
Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige

Infobox / Tutorial

On Error Resume Next in Excel VBA verstehen und anwenden


Schritt-für-Schritt-Anleitung

  1. Verwendung von On Error Resume Next: Füge den Befehl On Error Resume Next in dein VBA-Skript ein, um den Code anzuweisen, beim Auftreten eines Fehlers mit der nächsten Zeile fortzufahren, ohne eine Fehlermeldung auszugeben.

    On Error Resume Next
    ' Dein Code hier
    On Error GoTo 0 ' Fehlerbehandlung zurücksetzen
  2. Fehler abfangen: Nutze On Error Resume Next, um gezielt Fehler abzufangen. Prüfe danach, ob die Variable Nothing ist, um zu ermitteln, ob ein Fehler aufgetreten ist.

    Dim wks As Worksheet
    On Error Resume Next
    Set wks = Worksheets("Tabelle3")
    On Error GoTo 0
    
    If wks Is Nothing Then
       MsgBox "Tabelle existiert nicht"
    End If
  3. Fehler zurücksetzen: Vergiss nicht, On Error GoTo 0 zu verwenden, um die Fehlerbehandlung zurückzusetzen, nachdem du den spezifischen Fehler behandelt hast.


Häufige Fehler und Lösungen

  • Fehler in der Tabellenblattzuweisung: Wenn du versuchst, auf ein nicht existentes Arbeitsblatt zuzugreifen, stelle sicher, dass du den Fehler mit On Error Resume Next abfängst und danach prüfst, ob die Variable Nothing ist.

  • Nicht gefundene Datendateien: Überprüfe vor dem Öffnen einer Datei, ob sie tatsächlich im angegebenen Verzeichnis existiert. Nutze dazu die Dir() Funktion.


Alternative Methoden

  • On Error GoTo: Anstelle von On Error Resume Next kannst du auch On Error GoTo verwenden, um zu einem definierten Fehlerhandler zu springen. Dies ist oft die bessere Wahl für eine strukturierte Fehlerbehandlung.

    On Error GoTo FehlerHandler
    ' Dein Code hier
    Exit Sub
    
    FehlerHandler:
       MsgBox "Ein Fehler ist aufgetreten: " & Err.Description
  • Try-Catch in anderen Programmiersprachen: In Programmiersprachen wie Python oder Java gibt es eine Try-Catch-Logik. In Excel VBA sind Fehlerbehandlungen jedoch anders strukturiert.


Praktische Beispiele

  1. Beispiel für das Abfangen eines Fehlers beim Zugriff auf ein Arbeitsblatt:

    Sub BeispielFehlerAbfangen()
       Dim wks As Worksheet
       On Error Resume Next
       Set wks = Worksheets("Tabelle3")
       On Error GoTo 0
    
       If wks Is Nothing Then
           MsgBox "Tabelle existiert nicht"
       Else
           MsgBox "Tabelle ist vorhanden"
       End If
    End Sub
  2. Dateizugriff mit Fehlerprüfung:

    Sub DateiZugriff()
       Dim filePath As String
       filePath = "C:\DeinPfad\deineDatei.xlsx"
    
       If Dir(filePath) = "" Then
           MsgBox "Datei nicht gefunden!"
       Else
           ' Datei öffnen oder verarbeiten
       End If
    End Sub

Tipps für Profis

  • Vermeide übermäßigen Gebrauch: Verwende On Error Resume Next sparsam. Bei unsachgemäßer Anwendung kann es zu unerwartetem Verhalten kommen.

  • Dokumentation: Kommentiere deinen Code gut, insbesondere wenn du On Error Resume Next verwendest, damit andere (oder du selbst) später verstehen, warum dieser Ansatz gewählt wurde.

  • Fehlerprotokollierung: Implementiere eine Fehlerprotokollierung, um Informationen über Fehler zu sammeln, die während der Ausführung auftreten.


FAQ: Häufige Fragen

1. Was passiert, wenn ich On Error Resume Next verwende?
Der Code fährt nach einem Fehler mit der nächsten Zeile fort, ohne eine Fehlermeldung anzuzeigen.

2. Ist es sicher, On Error Resume Next zu verwenden?
Ja, jedoch solltest du sicherstellen, dass du die Fehlerquellen kennst und mit Bedacht damit umgehst. Es ist wichtig, Fehler zu protokollieren und die Fehlerbehandlung nach dem Code zurückzusetzen.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige