Hallo zusammen,
ich lasse über einen VBA Code verschiedene Fehlerbilder abfragen und entspreched des Fehlers werden Ursachen und dazu passend Maßnahmen vorgeschlagen. Diese "bewerte" ich über ein Ja/Nein-Feld (wenn Vorschlag i.O. dann weiter, wenn nicht ok dann nächster Vorschlag).
Die Entscheidung, ob ein User ja oder nein geklickt hat, möchte ich in einem LogFile mitschreiben.
Ich finde jedoch keine Möglichkeit, wie ich dies mitschreibe kann.
Danke vorab :)
Aktuell sieht mein Code für das Logfile folgendermaßen aus:
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
If Target.Row > 1000 Then Exit Sub
Dim strDatei As String, strText As String
Dim strZeit As String, strUser As String, strZelle As String, strOld As String, strNew As String
Dim intFile As Integer, rng As Range
Const strDELIM As String = "|"
Const lenUser As Integer = 15
Const lenAdresse As Integer = 6
Const lenWert As Integer = 10
Const FormatZeit As String = "YYY-MM-DD hh:mm:ss"
intFile = FreeFile
With ThisWorkbook
strDatei = ThisWorkbook.Path & "\LogDatei_" & Replace(ThisWorkbook.Name, ".xlsx", "") & ".xls"
End With
Open strDatei For Append As #intFile
If LOF(intFile) = 0 Then
With Application.WorksheetFunction
strZeit = "Zeitstempel"
strZeit = strZeit & VBA.Space(.Max(0, Len(FormatZeit) - Len(strZeit)))
strUser = "User"
strUser = strUser & VBA.Space(.Max(0, lenUser - Len(strUser)))
strZelle = "Zelle"
strZelle = strZelle & VBA.Space(.Max(0, lenAdresse - Len(strZelle)))
strOld = "alter_Wert"
strOld = strOld & VBA.Space(.Max(0, lenWert - Len(strOld)))
strNew = "neuer_Wert"
strNew = strNew & VBA.Space(.Max(0, lenWert - Len(strNew)))
strText = strZeit & strDELIM & strUser & strDELIM & strZelle & strDELIM & _
strOld & strDELIM & strNew & strDELIM
End With
Print #intFile, strText
strText = String(Len(strZeit), "-") & strDELIM & String(Len(strUser), "-") & strDELIM _
& String(Len(strZelle), "-") & strDELIM _
& String(Len(strOld), "-") & strDELIM & String(Len(strNew), "-")
Print #intFile, strText
End If
For Each rng In Target.Cells
If rng.Value <> mstrOld(rng.Row, rng.Column) Then
With Application.WorksheetFunction
strZeit = Format(Now, "YYYYMMDD_hhmmss")
strZeit = strZeit & VBA.Space(.Max(0, Len(FormatZeit) - Len(strZeit)))
strUser = Environ("username")
strUser = strUser & VBA.Space(.Max(0, lenUser - Len(strUser)))
strZelle = VBA.Replace(rng.Address, "$", "")
strZelle = strZelle & VBA.Space(.Max(0, lenAdresse - Len(strZelle)))
strOld = mstrOld(rng.Row, rng.Column)
strOld = strOld & VBA.Space(.Max(0, lenWert - Len(strOld)))
strNew = IIf(rng.Value = "", "#gelöscht", rng.Value)
strNew = strNew & VBA.Space(.Max(0, lenWert - Len(strNew)))
strText = strZeit & strDELIM & strUser & strDELIM & strZelle & strDELIM & _
strOld & strDELIM & strNew
End With
Print #intFile, strText
End If
Next
Close #intFile
End Sub
|