Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

Fehler Funktion
#1
Hallo, ich habe mir ein kleines Tool gebaut, was auch bei vielen Test funktioniert, aber kaum lässt man die Familie dran, stürzt es ab......

Da ich nicht immer zu Hause bin um es mir dann direkt im Debug anzusehen, hatte ich jetzt die idee ob ich mir bei einem Error nicht irgendwie einen Fehlerbericht erstellen kann, allerdings bin ich bei google leider nicht so richtig fündig geworden was das erstellen von Fehlerberichten in VBA angeht, die meistens Beiträge gehen immer um das Fehler verhindern(was ja auch grundsätzlich richtig ist).

Ich hatte an so etwas in der Art von

Code:
on error goto Fehler

und dann eine kleine Prozedur welche denn FehlerCode der auch im Debug Fenster angezeigt wird dann in eine Datei scheibt, ideal wäre ja aber wahrscheinlich auch noch die Aktion die ausgeführt wurde vorm Fehler zu erfassen, aber dazu fehlt mir eine idee.

Hat sowas in der Art schon mal einer gemacht oder eine idee wie ich das machen könnte.

Danke
Antworten Top
#2
Moin,

schau mal hier:

Errorhandling VBA
Gruß

Stoffo
[-] Folgende(r) 1 Nutzer sagt Danke an Stoffo für diesen Beitrag:
  • Mila
Antworten Top
#3
Zitat:ein kleines Tool

Dann wäre es besser das 'Tool' mehr robust zu machen. Das spart viiel mehr Zeit als 'error handling'.
Zum übersetzen von Excel Formeln:

http://dolf.trieschnigg.nl/excel/index.p...gids=en+de
[-] Folgende(r) 1 Nutzer sagt Danke an snb für diesen Beitrag:
  • Mila
Antworten Top
#4
Eine schnelle Fingerübung als Basis:

Code:
Option Explicit

Sub test()
On Error GoTo errExit

Dim x As Long
1 x = 1 / 0

Aufräumen:
Exit Sub

errExit:
Call ErrLog(Ex:=Err, Procedure:="Modul1.Test", ErrLine:=Erl)
Resume Aufräumen
End Sub



Private Function ErrLog(ByRef Ex As ErrObject, ByVal Procedure As String, Optional ErrLine As Long = -1)
 
Dim sErrText As String
sErrText = ThisWorkbook.Name & vbLf & _
            "Fehler in Prozedur: '" & Procedure & "'" & vbLf & _
            "Fehlerzeile: " & IIf(ErrLine > -1, ErrLine, "unbekannt") & vbLf & _
            "Fehlernummer: " & Ex.Number & vbLf & _
            "Fehlerbeschreibung: " & Ex.Description

Dim sDatnam As String: sDatnam = ThisWorkbook.Path & "\" & Format(Now, "YYYY-MM-DD hh.nn.ss") & "_ErrLog.txt"

Dim lngFileNr As Long: lngFileNr = FreeFile
Open sDatnam For Output As #lngFileNr
Print #lngFileNr, sErrText;
Close #lngFileNr

ErrLog = (Err = 0)
End Function

Dass Fehler, die nicht entstehen, die besten sind, muss ich sicher nicht betonen. ;)
Hat Dir mein Beitrag geholfen? Dann hilf auch Du - mit einer Spende an Wikipediadie Tafeln oder aktion-deutschland-hilft.de
[-] Folgende(r) 1 Nutzer sagt Danke an EarlFred für diesen Beitrag:
  • Mila
Antworten Top
#5
Hallo auch von mir,

schau vielleicht auch mal bei Brian Satola vorbei, der hat eine Logging-Klasse veröffentlicht: https://chejunkie.com/knowledge-base/log...class-vba/
Dort findest du auch eine ApplicationError-Klasse

Viele Grüße
derHöpp
[-] Folgende(r) 1 Nutzer sagt Danke an derHoepp für diesen Beitrag:
  • Mila
Antworten Top
#6
(28.10.2022, 09:01)EarlFred schrieb: Eine schnelle Fingerübung als Basis:

Code:
[...]
Private Function ErrLog(ByRef Ex As ErrObject, ByVal Procedure As String, Optional ErrLine As Long = -1)
 
Dim sErrText As String
sErrText = ThisWorkbook.Name & vbLf & _
            "Fehler in Prozedur: '" & Procedure & "'" & vbLf & _
            "Fehlerzeile: " & IIf(ErrLine > -1, ErrLine, "unbekannt") & vbLf & _
            "Fehlernummer: " & Ex.Number & vbLf & _
            "Fehlerbeschreibung: " & Ex.Description

Dim sDatnam As String: sDatnam = ThisWorkbook.Path & "\" & Format(Now, "YYYY-MM-DD hh.nn.ss") & "_ErrLog.txt"

Schöne Fingerübung, kleine Anmerkung: muss im Formatierungsstring (letzte Zeile meines Zitats) nicht stehen "YYYY-MM-DD hh.mm.ss"?

Gruß,
RaiSta
Antworten Top
#7
Zitat:Schöne Fingerübung, kleine Anmerkung: muss im Formatierungsstring (letzte Zeile meines Zitats) nicht stehen "YYYY-MM-DD hh.mm.ss"?
Musste deine Frage erst in meinem Zitat suchen ;)

Gegenfrage: Weicht das Ergebnis denn von den Erwartungen ab?

Ein Blick in die Dokumentation offenbart:
Da die Stundenangabe voransteht, kann "mm" stehen, andernfalls muss "nn" stehen. Steht die Stundenangabe davor, ist es folglich wurscht.
Hat Dir mein Beitrag geholfen? Dann hilf auch Du - mit einer Spende an Wikipediadie Tafeln oder aktion-deutschland-hilft.de
Antworten Top
#8
... und da das unnötige Komplexität bedeutet, merkt man sich einfach, dass man in VBA "nn" nimmt. Smile
Antworten Top
#9
(28.10.2022, 08:45)Stoffo schrieb: Moin,

schau mal hier:

Errorhandling VBA

Hi Stoffo.
hab mir das mal durchgelesen, wenn ich es dann richtig verstehe, dann dürften ja die beiden folgenden Werte ggf. das wiedergeben was ich suche, was ich mir dann auch Mail aus VBA heraus schicken kann.

Code:
  On Error GoTo xxxx
xxxx:
     Err.Description
     Err.Number
     Err.source

Oder würden mir dann noch informationen fehlen? 
Kann man das auch "Global" einbauen oder muss das in jeder Prozedur seperat eingefügt werden?
Was ich auch noch nicht so wirklich verstanden habe ist, was ist 
  • Err.Raise
  • vbObjectError
(28.10.2022, 08:53)snb schrieb: Dann wäre es besser das 'Tool' mehr robust zu machen. Das spart viiel mehr Zeit als 'error handling'.

Zweifels ohne ist das Fehler vermeiden die bessere wahl und ich hatte auch gedacht/gehofft ich hätte alles dafür getan, wurde aber eines besseren beleehrt, daher such ich nun an einer möglichkeit das ich die Fehler wenigstens "Reporte" um sie dann zu korrigieren

(28.10.2022, 09:01)EarlFred schrieb: Eine schnelle Fingerübung als Basis:

Code:
Option Explicit

Sub test()
On Error GoTo errExit

Dim x As Long
1 x = 1 / 0

Aufräumen:
Exit Sub

errExit:
Call ErrLog(Ex:=Err, Procedure:="Modul1.Test", ErrLine:=Erl)
Resume Aufräumen
End Sub



Private Function ErrLog(ByRef Ex As ErrObject, ByVal Procedure As String, Optional ErrLine As Long = -1)
 
Dim sErrText As String
sErrText = ThisWorkbook.Name & vbLf & _
            "Fehler in Prozedur: '" & Procedure & "'" & vbLf & _
            "Fehlerzeile: " & IIf(ErrLine > -1, ErrLine, "unbekannt") & vbLf & _
            "Fehlernummer: " & Ex.Number & vbLf & _
            "Fehlerbeschreibung: " & Ex.Description

Dim sDatnam As String: sDatnam = ThisWorkbook.Path & "\" & Format(Now, "YYYY-MM-DD hh.nn.ss") & "_ErrLog.txt"

Dim lngFileNr As Long: lngFileNr = FreeFile
Open sDatnam For Output As #lngFileNr
Print #lngFileNr, sErrText;
Close #lngFileNr

ErrLog = (Err = 0)
End Function

Dass Fehler, die nicht entstehen, die besten sind, muss ich sicher nicht betonen. ;)

Das ist schon ziemlich geil.Smile         
versteh den Code zwar noch nicht komplett..aber es macht schon zum großen teil das was ich mir vorstelle.
Kann man noch irgendwie abfragen was vor dem Fehler passiert ist, z.b. wenn was in einem Userform angeklickt wurde z.b.

Vielen Dank

(28.10.2022, 10:02)derHoepp schrieb: Hallo auch von mir,

schau vielleicht auch mal bei Brian Satola vorbei, der hat eine Logging-Klasse veröffentlicht: https://chejunkie.com/knowledge-base/log...class-vba/
Dort findest du auch eine ApplicationError-Klasse

Viele Grüße
derHöpp

Hi,
danke für den Tip,
das sieht ziemlich cool aus, allerdings ist das definitiv noch eine (eher mehrere) Nummern zu hoch für mich, da fehlte mir grade jeder Ansatz wie ich das bei mir einbauen könnte/müsste, aber gut zu sehen was alles gehen könnte wenn man Ahnung hatSmile
Antworten Top
#10
Ansatz: Verstehe den Code nicht nur fast, sondern vollständig. Das ist ja kein Hexenwerk und wenn du an einer Stelle Hilfe brauchst, dann stelle konkrete Fragen dazu. 
Sobald du den Code verstanden hast, erübrigt sich vermutlich auch deine Frage. Oder du müsstest deine Frage präzisieren.
Hat Dir mein Beitrag geholfen? Dann hilf auch Du - mit einer Spende an Wikipediadie Tafeln oder aktion-deutschland-hilft.de
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste