Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1604to1608
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Mehrfaches OnError in einer Schleife

Mehrfaches OnError in einer Schleife
06.02.2018 10:14:29
Burkhard
Hallo miteinander,
wenn ich in einer aufgerufenen Funktion die OnError GoTo Methode verwende, funktioniert das nur beim ersten Auftreten eines Fehlers (in einer For-Schleife wird dann der nächste Durchlauf gestartet). Beim zweiten Auftreten (in derselben Schleife) springt das Programm in die rufende Prozedur (in untigem Codeschnipsel nach Main) zurück.
Sub Main
If .functionname.> = "something" Then ...>
End Sub
Public Function .functionname.> As String
Dim wks As Worksheet
For Each wks In ActiveWorkbook.Worksheets
Err.Clear
On Error GoTo NextFor
.some code.> ==> ERROR
NextFor:
Next
End Function

Warum wird beim zweiten Fehler in der Schleife das GoTo nicht mehr durchgeführt?
Grüße
Burkhard

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Mehrfaches OnError in einer Schleife
06.02.2018 10:21:59
Werner
Hallo Burkhard,
müsstest du nicht hier:
NextFor:
On Error Goto 0
Next
den Fehler wieder zurücksetzen?
Gruß Werner
AW: Mehrfaches OnError in einer Schleife
06.02.2018 10:54:59
Burkhard
Hallo Werner,
hilft leider nix. Wäre auch irgendwie seltsam, denn der nächste auszuführende Befehl (nach dem Next) ist ja
        Err.Clear
On Error GoTo NextFor

Grüße
Burkhard
AW: Mehrfaches OnError in einer Schleife
06.02.2018 10:24:22
ChrisL
Hi Burkhard
Ich würde versuchen den Fehler generell zu vermeiden (z.B. Gültigkeit prüfen).
Public Function .functionname.> As String
Dim wks As Worksheet
For Each wks In ActiveWorkbook.Worksheets
On Error GoTo NextFor
.some code.>
NextFor:
Resume Next
Next wks
End Function
cu
Chris
Anzeige
AW: Mehrfaches OnError in einer Schleife
06.02.2018 10:29:01
Daniel
Hi
Nach einem On-Error-Goto-Sprung befindest du dich im Fehlerbehandlungsmodus und in diesem ist kein weiterer Fehlersprung möglich. Du müsstest also nach dem Fehlersprung den Fehlerbehandlungsmodus beenden (Resume), um einen neuen Sprung auszuführen.
Die Frage ist aber, ob du nicht genauer identifizieren kannst, was genau den Fehler verursacht und fragst dies in der Schleife gezielt ab.
Gruß Daniel
AW: Mehrfaches OnError in einer Schleife
06.02.2018 11:20:39
Burkhard
Hallo Daniel,
meinst du in etwa so:
NextFor:
On Error Resume Next
Next

Das hilft leider auch nicht. Auch nicht, wenn ich das Resume Next direkt vor das GoTo stelle.
Grüße
Burkhard
Anzeige
AW: Mehrfaches OnError in einer Schleife
06.02.2018 12:56:46
Daniel
Hi
das ist auch nicht das Resume, das ich meine!
das ist eine weitere ON ERROR-Anweisung, die Aussagt, das bei einem Fehler einfach mit dem nächsten Befehl weiter gemacht werden soll.
Hast du mal in der Hilfe die Befehle nachgelesen?
in VBA wird mit dem Fehlersprung nach folgendem Prinzip gearbeitet:
1. bei einem Fehler wird an deine bestimmte Stelle des Programms verzweigt
2. dort wird der Fehler behandelt, bzw korrigiert
3. mit RESUME wird dann wieder in den Ursprünglichen Programmlauf zurückgespungen.
Hier mal ein Beispiel, in dem fall soll ein bestimmtes Blatt einer Variablen zugewiesen werden, es kann aber sein dass das Blatt nicht vorhanden ist und dann neu erstellt werden muss.
Sub test()
Dim wsb As Worksheet
On Error GoTo Sprung
Set wsb = Sheets("xxx")
On Error GoTo 0
wsb.Select
'-- hier der weitere Code
Exit Sub
Sprung:
Sheets.Add(after:=ActiveSheet).Name = "xxx"
Resume
End Sub
Gruß Daniel
Anzeige
Lösungsmöglichkeit für dein Problem
06.02.2018 13:17:23
Daniel
Wie gezeigt, du musst mit dem On Error Goto in die Fehlerbehandlungsroutine am Makroende springen.
von dort kannst du dann mit Resume Sprungmarke zur anderen Sprungmarke springen.
Das Resume beendet den Fehlerbehandlungsmodus, so dass es auch beim erneuen Fehlerfall funktioniert:
      Public Function .functionname.> As String
Dim wks As Worksheet
For Each wks In ActiveWorkbook.Worksheets
Err.Clear
On Error GoTo FehlerSprung
.some code.> ==> ERROR
NextFor:
Next
Exit Function
Fehlersprung:
Resume NextFor
End Function
Gruß Daniel
Anzeige
AW: Lösungsmöglichkeit für dein Problem
06.02.2018 16:14:25
Burkhard
Hallo Daniel,
das war's! Deine Erklärungen zum Fehlerbehandlungsmodus waren hilfreich, haben mir weitergeholfen - vielen Dank!
Grüße
Burkhard

300 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige