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

Zentrale Fehlerbehandlungsroutine

Zentrale Fehlerbehandlungsroutine
07.02.2008 08:37:00
Roland
Guten Morgen,
Zur Fehlerbehandlung eines umfangreicheren VBA-Projektes möchte ich Laufzeitfehler über eine eigene Fehlerbehandlungsroutine in einer MsgBox ausgeben und dadurch insbesondere das Debugging unterbinden. Neben Fehlernummer und Beschreibung möchte ich zudem auch den Procedure-/Function-Namen, in der der Fehler aufgetreten ist, ausgeben.
Die Fehlerfuntion selbst möchte ich als eigenes Sub definieren und in zahlreichen anderen Prozeduren/Funktionen über das "On Error [...]" Konstrukt aufrufen.
Jetzt die eigentlichen Fragen:
1. Klappt das mit dem Auslagern der Fehlerbehandlung in eine eigene Procedure überhaupt?
2. Kann ich in einer Procedure den Namen der Procedure/Fuction ermitteln, von der aus diese aufgerufen wurde? (Bei mehrfach verschachtelten Aufrufen wäre die gesamt Hierarchie nett, aber nicht zwingend nötig).
3. Ich habe bei meinen Recherchen noch keine Quelle gefunden, die sich intensiver mit Fehlerbehandlung befasst. Kennt jemand brauchbare URLs? Ich bin dabei auch immer auf der Suche nach Code-Beispielen statt nur abstrakter Beschreibungen (die Theorie kenn ich schon).
Sofern ich nichts eleganteres finde, habe ich mir folgende Lösung überlegt:

Sub ErrHandler (ErrNumber As Integer, ErrDescription As String, _
CallerID As String, optional HelpTxt As String)
Dim MsgText As String
Dim result As Variant
MsgText = "In der Anwendung ist ein Laufzeitfehler aufgetreten." + vbNewLine
MsgText = MsgText + "  Fehlernummer: " + str(ErrNumber) + vbNewLine
MsgText = MsgText + "  Fehlertext:       " + ErrDescription + vbNewLine
If HelpTxt Then
MsgText = MsgText + vbNewLine + HelpTxt
End If
result = MsgBox(MsgText, vbCritical, "Anwendungsfehler")
End Sub    ' ErrHandler


Diese Fehlerbehandlungsroutine würde ich dann so aus einer anderen Routine aufrufen:


Sub ErrorTest ()
On Error Goto HandleError
[ Code ]
Exit Sub
HandleError:
Call ErrHandler(Err.Number, Err.Description, "ErrorTest", _
"Bitte kontaktieren Sie Ihren Admin.")
Resume Next
End Sub


Wie ist Eure Meinung?
Gruß,
Roland

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Zentrale Fehlerbehandlungsroutine
07.02.2008 10:53:58
Holger
Hallo Roland,
was hast du prinzipiell an deinem Code auszusetzen? Ich würde es ähnlich machen. Allerdings braucht du Err.Description nicht zu übergeben, weil die Funktion Error(Err.Number) sie in deinem ErrHandler rekonstruieren kann.
Schön wäre, den Namen der Prozedur automatisch zu übergeben. Leider habe ich bisher keine Möglichkeit gefunden, den Namen der gerade laufenden Prozedur zu bestimmen. Ich werde mal eine Anfrage starten, die du im Forum verfolgen kannst.
Gruß
Holger

AW: Zentrale Fehlerbehandlungsroutine
07.02.2008 13:12:00
Roland
Na dann nehme ich einfach mal das Selbstgestrickte und übergebe nur den Namen
der aufrufenden Prozedur.
Danke trotzdem.
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige