Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
352to356
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
352to356
352to356
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

errorhandler

errorhandler
17.12.2003 16:18:57
Andi
Hallo zusammen,

ich habe in meinem Programm eine relativ umfangreiche Fehlerbehandlung, die ich deshalb in einer eigenen Sub untergebracht habe.

In einer ganzen Reihe anderer Subs werden for-next-Schleifen durchlaufen, in denen gelegentlich Fehler auf Grund unbrauchbarer Daten auftreten.
Ich möchte nun gerne, dass, wenn z.B. irgendwo im vierten Durchlauf einer solchen Schleife ein Fehler aufgetreten ist, das Programm nach Ablauf des entsprechenden Teils des Fehlerbehandlung an den Anfang des nächsten, also des fünften, Schleifendurchlaufes springt.
Meinetwegen auch ganz ans Ende des vierten Durchlaufs, also dirket vor das next zaehler.

Das geht wahrscheinlich irgendwie mit resume, ich weiss aber leider nicht wie.
Kann mir da jemand weiterhelfen?

Schönen Gruß
Andi

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: errorhandler
17.12.2003 16:29:01
Nepumuk
Hallo Andi,
lass mal den Teil deines Codes sehen, in der die Fehlerroutine aufgerufen wird.
Gruß
Nepumuk
AW: errorhandler
17.12.2003 16:53:45
Andi
Nunja, das ist nicht so einfach.
Es gibt eine Sub, aus der alle anderen der Reihe nach aufgerufen werden, und in dieser "Mutter aller Subs" steht ganz oben

on error goto errorhandler

'dann kommt ein Haufen Code
'und dann:

errorhandler:
call Fehlerbehandlung

die anderen Subs springen dann automatisch auch in die Sub Fehlerbehandlung(), in der dann, abhängig davon, wor der Fehler auftrat und um welchen Fehlercode es sich handelt, so einiges passiert.
Der relevante Teil der Fehlerbehandlung sieht so aus:

Select Case Err
Case 18 'Wenn Escape-Taste betätigt wurde
MsgBox "The program was aborted"
Case Else
Select Case kurvenzaehler
Case 0
details = MsgBox("An error has occured," + Chr(13) + "the program was aborted!" + Chr(13) + Chr(13) + "Show details?", 292)
Select Case details
Case 6
MsgBox ("Affected sub:" + Chr(9) + CStr(sub_nr) + Chr(13) + Chr(13) + "Errorcode:" + Chr(9) + CStr(Err) + Chr(13) + Chr(13) + "Description:" + Chr(9) + Err.Description)
Case 7
Exit Sub
End Select
Case Else
Fehlerbits(kurvenzaehler - 1) = 1
Resume
End Select
End Select

Nach der Anweisung Fehlerbits(kurvenzaehler - 1 ) = 1
würde ich gerne wieder im Programm weitermachen.
Die Subs sind bei mir alle über die Variable sub_nr referenzierbar, und vor jedem next zaehler, also da wo ich hinwill, steht immer eine Sprungmarke namens weiter, gefolgt von der sub_nr, z.B. weiter14
Der Zähler der einzelnen Schleifen ist auch außerhalb der Subs vorhanden, es müsste also möglich sein, in der Schleife weiterzumachen.

Nur wie komme ich zu der entsprechenden Sprungmarke? Der Name variiert ja, je nach dem in welcher sub der Fehler auftrat.

Ich hoffe mal, ich habe mich einigermaßen verständlich ausgedrückt.

Schönen Gruß & vielen Dank schon mal
Andi
Anzeige
Nachtrag
17.12.2003 16:59:55
Andi
Hi nochmal,

das resume nach Fehlerbits(kurvenzaehler - 1) = 1 gehört da natürlich so nicht hin;
das ist noch ein Überbleibsel eines gescheiterten Versuchs von mir.

peinlich ...

Schönen Gruß
Andi
AW: Nachtrag
17.12.2003 17:07:37
Nepumuk
Hallo Andi,
die Anweisung muss nach dem Call kommen. Also:

errorhandler:
call Fehlerbehandlung
Resume Next

Gruß
Nepumuk
AW: Nachtrag
17.12.2003 17:16:51
Andi
Hallo Nepumuk,

vielen Dank erstmal für Deine schnellen Antworten.
Eine Frage hab' ich aber noch:
resume next springt doch in die nächste Zeile nach der, in welcher der Fehler aufgetreten ist, oder?
Ich würde aber gerne ans Ende des Schleifendurchlaufes springen, geht das?
Irgendwas in der Art wie
resume (weiter & sub_nr)
?

Sonst müsste ich wohl in jede sub ein call Fehlerbehandlung einbauen mit dazu passenden resume, aber das würde ich mir halt gerne ersparen.

Schönen Gruß
Andi
Anzeige
AW: Nachtrag
17.12.2003 17:25:47
Nepumuk
Hallo Andi,
das geht nur über die Zeilennummer.
Gruß
Nepumuk
AW: Nachtrag
17.12.2003 17:47:21
Andi
Hallo nochmal,

Zeilennummern lassen sich aber doch auch nicht variabel verwenden, oder?
resume variable
akzeptiert mein Rechner jedenfalls nicht.

Ich befürchte, dass es wohl doch nicht so einfach geht, wie ich mir das erhofft hatte.
Jedenfalls danke ich Dir ganz herzlich für Deine Mühe und die schnellen Antworten.

Schönen Abend noch,
Andi

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige