Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: On Error in Schleife

On Error in Schleife
22.07.2015 15:46:37
Dominic
Hallo,
eigentlich dachte ich ich kenne mich in VBA aus nur die Fehlerbehandlung macht mir Weng zu schaffen. Ich habe eine For Schleife, wenn in dieser ein Fehler passiert soll der Interpreter aus der Schleife Springen dann per Loop wieder nach oben und die For Schleife erneut durchlaufen, beim ersten Durchlauf funktioniert dies auch noch nur bei dem 2. bekomme ich dennoch den ursprünglichen Fehler ausgegeben ohne das die For Schleife verlassen wird.
Kann mir hier jemand helfen?
hier ein Codebeispiel, im Richtigen Code kommt der Benutzer vor der For schleife in einen Dialog um dort werte zu ändern.
Sub test()
Dim i As Integer
Dim r As Range
On Error GoTo sprung
Do
For i = 1 To 32
Set r = ThisWorkbook
Next
sprung:
Loop
End Sub

Anzeige

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: On Error in Schleife
22.07.2015 15:53:14
UweD
Hallo
Versuch mal, den Fehler erst wieder zurücksetzen.
Ich mach das so.
Fehler:
If Err.Number 0 Then MsgBox "Fehler: " & Err.Number & vbLf & Err.Description: Err.Clear
Gruß UweD

AW: On Error in Schleife
22.07.2015 16:10:56
Dominic
Hallo Uwe,
leider hat das nicht zum ziel geführt, erster Durchlauf Fehler landet in der msgbox und im zweiten Durchlauf kommt der Fehler wieder über Excel und der Code wird angehalten.
Sub test()
Dim i As Integer
Dim r As Range
On Error GoTo sprung
Do
For i = 1 To 32
Set r = ThisWorkbook
Next
sprung:
If Err.Number  0 Then MsgBox "Fehler: " & Err.Number & vbLf & Err.Description: Err.Clear
Loop
End Sub

Anzeige
AW: On Error in Schleife
22.07.2015 16:25:30
Nepumuk
Hallo,
du hast keine Fehlerbehandlung drin. So geht das:
Sub test()
    
    Dim i As Integer
    Dim r As Range
    
    
    On Error GoTo err_exit
    
    Do
        
        For i = 1 To 32
            
            Set r = ThisWorkbook
            
        Next
        
        sprung:
        
    Loop
    Exit Sub
    
    err_exit:
    
    Resume sprung
    
End Sub

Gruß
Nepumuk

Anzeige
AW: On Error in Schleife
22.07.2015 16:31:41
Dominic
Hallo Nepomuk,
vielen dank für die Info, jetzt läufts.
Endlosschleife rennt :D
Gruß Dominic
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige
Anzeige

Infobox / Tutorial

Fehlerbehandlung in VBA-Schleifen: So geht's


Schritt-für-Schritt-Anleitung

  1. Fehlerbehandlung aktivieren: Setze die Fehlerbehandlung zu Beginn deiner Subroutine mit On Error GoTo. Dies leitet den Code zu einem definierten Fehlerbehandlungsabschnitt, wenn ein Fehler auftritt.

    On Error GoTo err_exit
  2. Schleife einrichten: Verwende eine Schleife, in der du deine Operationen ausführst. Bei einem Fehler wird der Interpreter zur Fehlerbehandlung springen.

    Do
       For i = 1 To 32
           ' Deine Operationen hier
       Next
    Loop
  3. Fehlerbehandlungsabschnitt: Definiere einen Fehlerbehandlungsabschnitt, der den Fehler prüft und gegebenenfalls eine Nachricht ausgibt. Setze Err.Clear, um den Fehler zurückzusetzen.

    err_exit:
       If Err.Number <> 0 Then
           MsgBox "Fehler: " & Err.Number & vbLf & Err.Description
           Err.Clear
           Resume Next ' oder Resume sprung, wenn du zurück zur Schleife möchtest
       End If

Häufige Fehler und Lösungen

  • Fehler wird nicht zurückgesetzt: Stelle sicher, dass du Err.Clear im Fehlerbehandlungsabschnitt verwendest, um zu verhindern, dass der gleiche Fehler erneut auftritt.

  • Endlosschleife: Achte darauf, dass deine Schleifenbedingung korrekt ist, um zu vermeiden, dass du in einer Endlosschleife hängen bleibst.


Alternative Methoden

  • Fehlerbehandlung ohne On Error GoTo: Eine alternative Methode ist die Nutzung von If-Bedingungen, um Fehler zu prüfen:

    If Err.Number <> 0 Then
       ' Fehlerbehandlung
    End If
  • VBA-Fehlerbehandlung in Schleifen: Du kannst auch On Error Resume Next verwenden, wenn du möchtest, dass der Code bei einem Fehler einfach weitermacht, ohne die Schleife zu unterbrechen.


Praktische Beispiele

Hier ist ein Beispiel für eine einfache Fehlerbehandlung in einer For-Schleife:

Sub test()
    Dim i As Integer
    Dim r As Range
    On Error GoTo err_exit
    Do
        For i = 1 To 32
            Set r = ThisWorkbook.Worksheets(i).Range("A1") ' Beispieloperation
            ' Hier könnte ein Fehler auftreten
        Next
    Loop
    Exit Sub
err_exit:
    If Err.Number <> 0 Then
        MsgBox "Fehler: " & Err.Number & vbLf & Err.Description
        Err.Clear
        Resume Next
    End If
End Sub

Tipps für Profis

  • Nutze Resume: Mit Resume kannst du steuern, wie dein Code nach einem Fehler fortgesetzt wird. Resume Next lässt den Code an der nächsten Zeile fortsetzen.

  • Strukturierte Fehlerbehandlung: Halte deinen Fehlerbehandlungsabschnitt klar und strukturiert, um die Lesbarkeit und Wartbarkeit zu erhöhen.

  • Fehlerprotokollierung: Überlege, ob du Fehler in eine Protokolldatei schreiben möchtest, um spätere Analysen zu erleichtern.


FAQ: Häufige Fragen

1. Was ist der Unterschied zwischen On Error GoTo und On Error Resume Next?
On Error GoTo springt zu einem definierten Fehlerbehandlungsabschnitt, während On Error Resume Next den Code einfach an der nächsten Zeile fortsetzt.

2. Wie kann ich die Fehlernummer abfragen?
Du kannst die Fehlernummer mit Err.Number abfragen. Zum Beispiel: If Err.Number <> 0 Then ....

3. Was passiert, wenn ich Err.Clear nicht verwende?
Wenn du Err.Clear nicht verwendest, bleibt die Fehlernummer gesetzt, und du wirst im nächsten Schleifendurchlauf denselben Fehler erhalten.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige