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

Forumthread: VBA - Fehler in Unterprogramm abfangen

VBA - Fehler in Unterprogramm abfangen
11.07.2013 08:47:18
Max
Hallo liebe Community,
ich habe ein kleines VBA - Problem.
Über einen Button lasse ich verschiedene Programm nacheinander ablaufen.
Private Sub Aktualisieren_Click()
Call Copytest
Call TextAendern
Call DatenKopierenIgnorNeu
Call TextAendernIgnorMeld
Call DatenKopierenSperrNeu
Call DiagrammeAktualisieren
Worksheets("Fehleranalysen").Activate
End Sub
Die einzelnen Programme greifen auf verschiedene Daten innerhalb meines Excel-Sheets zu. Es kann dabei passieren, dass innerhalb der Programme Fehler auftreten, vor allem wenn die Datengrundlage zu gering ist (Alles ist mit einem Datenbankabruf verknüpft).
In den einzelnen Programmen kann ich die Fehler bereits mit "On Error goto ..." abfangen. Mit "Exit Sub" kann ich die Unterprogramme dann auch vorzeitig beenden und eine Fehlermeldung ausgeben, aber dann wird ja das Programm Sub Aktualisieren_Click wieder fortgesetzt und das nächste Unterprogramm wird aufgerufen. Auch hier kann es dann wieder zu Fehlern kommen und das heißt, dass es sein kann, dass man nach einer Fehlermeldung noch mehrere weitere Fehlermeldungen wegklicken muss, bevor das Programm beendet wird.
Ich würde es gerne so haben, dass sobald der erste Fehler auftritt sowohl das betreffende Unterprogramm als auch das "Hauptprogramm" beendet werden und am besten dabei noch ausgegeben wird, bei welchem Unterprogramm der Fehler aufgetreten ist.
Wenn ich versuche mit "On Error goto..." im Hauptprogramm Sub Aktualisieren_Click zu arbeiten, hilft das leider nicht. Aber das macht ja auch Sinn, weil die Fehler in den Unterprogrammen auftreten...
Habt ihr vielleicht eine Idee oder einen Lösungsansatz/ - vorschlag?
Mit freundlichen Grüßen
Max

Anzeige

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA - Fehler in Unterprogramm abfangen
11.07.2013 08:52:28
Klaus
Hi,
mit "end" kannst du ein VBA-Script brutal abbrechen.
sub DivisionDurchNull()
on error goto hell
dim i
i = 1 / 0  'erzeugt einen Fehler
goto heaven:
hell:
msgbox("Fehler in Sub DivisonDurchNull in diesem Modul")
end 'beendet alle VBA-Vorgänge!
heaven:
end sub
Was die Ausgabe Modul / Sub angeht: Das musst du leider händisch in die Fehlerbehandlung des jeweiligen Sub schreiben. Mir ist keine Methode bekannt, den Namen des aktiven Sub / Modul auszulesen.
Grüße,
Klaus M.vdT.

Anzeige
AW: VBA - Fehler in Unterprogramm abfangen
11.07.2013 09:00:16
Max
Hallo Klaus,
vielen Dank für die sehr schnelle Lösung.
Das hilft schonmal sehr. Das jeweilige Abfangen der Fehler in den Unterprogrammen muss ich jetzt sowieso nochmal überarbeiten, da ich nicht sicherstellen kann, in welchem Programm das erste Mal ein Fehler auftritt. Dabei werde ich dann auch mal gucken, ob ich den jeweiligen Programm/ Sub-Namen mit ausgeben kann.
Nochmals Danke.
Mit freundlichen Grüßen
Max

Anzeige
Danke für die Rückmeldung! owT.
11.07.2013 09:01:20
Klaus
.
;

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

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