Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1172to1176
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

Alle Fehler abfangen

Alle Fehler abfangen
SteffenS
Hallo Zusammen,
ich möchte gern immer wenn ein Fehler in einem Code auftaucht, dass der Fehler mit Angabe des Moduls, Makro, Zeile, Datum, Uhrzeit entsprechend "geloggt" wird.
Ich habe ein Großes Projekt mit meheren Modulen und vielen Makros.
Hat schon einmal jemand von Euch so etwas gemacht?
Danke Euch schonmal.
Viele Grüße
Steffen Schmerler

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

Betreff
Benutzer
Anzeige
AW: Alle Fehler abfangen
01.09.2010 22:58:08
Josef

Hallo Steffen,
eine Möglichkeit.
Um an die Zeilennummer zu kommen, musst du alerdings auch Zeilennummern im Code verwenden.
Das Logfile wird im Benutzerverzeichnis erstellt.

' **********************************************************************
' Modul: bas_ErrorHandler Typ: Allgemeines Modul
' **********************************************************************

Option Explicit

Private Const cbln_errLogger As Boolean = True 'Log Errors On/Off
Private Const cbln_showError As Boolean = False 'Show Errormesage On/Off


Sub ErrorHandler_Error(ByRef ErrorObject As ErrObject, ByVal Procedurename As _
    String, ByVal LineNumber As Long)

  Dim strLoggFile As String, strErrMsg As String
  Dim intFF As Integer
  
  If cbln_showError Then
    MsgBox "Prozedur:" & vbTab & Procedurename & vbLf & "Zeile:" & vbTab & _
      LineNumber & vbLf & vbLf & "Fehlernummer:" & vbTab & ErrorObject.Number & _
      vbLf & "Beschreibung:" & vbTab & ErrorObject.Description, vbExclamation, _
      "Fehler in " & Procedurename
  End If
  
  If cbln_errLogger Then
    strLoggFile = Environ("USERPROFILE") & "\" & Left(ThisWorkbook.Name, _
      InStrRev(ThisWorkbook.Name, ".") - 1) & "_ERROR.log"
    
    strErrMsg = "DATUM/ZEIT: " & Format(Now, "yyyy.MM.dd hh:mm:ss") & ";"
    strErrMsg = strErrMsg & "BENUTZER: " & Environ("USERNAME") & ";"
    strErrMsg = strErrMsg & "MODUL: " & Procedurename & ";" & LineNumber & ";"
    strErrMsg = strErrMsg & "FEHLERNR.: " & ErrorObject.Number & ";"
    strErrMsg = strErrMsg & "FEHLER: " & ErrorObject.Description & vbCrLf
    
    intFF = FreeFile
    
    Open strLoggFile For Append As #intFF
    
    Print #intFF, strErrMsg;
    
    Close #intFF
    
  End If
  
End Sub

' **********************************************************************
' Modul: Modul1 Typ: Allgemeines Modul
' **********************************************************************

Option Explicit

Sub test1()
Dim l As Long

1 On Error GoTo ErrExit

2 l = 1 / 0

ErrExit:
3 If Err.Number Then
  4 ErrorHandler_Error Err, "test1", Erl
  5 End If
End Sub

Sub test2()
Dim i As Integer

1 On Error GoTo ErrExit

2 i = 10000 * 10000

ErrExit:
3 If Err.Number Then
  4 ErrorHandler_Error Err, "test2", Erl
  5 End If
End Sub

Gruß Sepp

Anzeige
Danke, aber ich habe noch ein paar Fragen
02.09.2010 17:47:07
SteffenS
Hallo,
danke für die Antwort.
Folgende Fragen habe ich noch den Code betreffend:
- Kann ich den aktiven Makronamen per VBA ermitteln lassen
- Kann ich die Zeilennummer auch ohne Angabe der Zeilennummer vor jeder Zeile ermitteln lassen.
Excel zeigt mir in der Symbolleiste ja auch eine Zeile im Modul an (Symbolleiste Voreinstellung)
Da ich sehr viele und große Makros habe, wollte ich nicht unbedingt alle Zeilen manuell anpassen.
Danke Euch nochmal
VG
Steffen
zwei mal NEIN, das geht nicht! o.T.
03.09.2010 18:56:53
Josef
Gruß Sepp

Anzeige
Schade aber trotzdem Danke
04.09.2010 10:02:08
SteffenS
VG
Steffen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige