AW: Log-File für vorgenommene Änderungen
07.04.2012 22:51:18
Mike
Hallo Christian,
vielen Dank nochmal für Deine Hilfe !
Ich habe Deinen Code jetzt wie vorgeschlagen angepasst und ausführlich getestet und es funktioniert nun wirklich sehr gut. :-)
Beim Testen bin ich noch auf ein Problem gestoßen, das ich selbst nicht beheben kann:
Ich habe einige Zellen, die relativ viel Text enthalten und dadurch im Logfile sehr lange Einträge kreiren, so dass man sehr weit nach rechts scrollen muss.
Gibt es hier eine Möglichkeit, feste Spaltenabstände für das Logfile zu definieren, so dass der Text darin ggf. wie in Excel oder Word mit einem Zeilenumbruch statt komplett in einer Zeile erscheint ?
Aktueller Code zur Info:
Option Explicit
Dim mstrOld(1 To 1000, 1 To 16384) As String
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Row > 1000 Then Exit Sub
Dim strDatei As String, strText As String
Dim intFile As Integer, rng As Range
Const strDELIM As String = " | "
intFile = FreeFile
With ThisWorkbook
strDatei = .Path & "\LogBuch_" & Replace(.Name, ".xls", "") & ".txt"
End With
Open strDatei For Append As #intFile
If LOF(intFile) = 0 Then
strText = "Date & Time | User | Cell | Old Data | New Data"
Print #intFile, strText
End If
For Each rng In Target.Cells
If rng.Value mstrOld(rng.Row, rng.Column) Then
strText = _
Format(Now, "YYYY-MM-DD hh:mm") & strDELIM & _
Environ("username") & strDELIM & _
rng.Address & strDELIM & _
mstrOld(rng.Row, rng.Column) & strDELIM & _
rng.Value & strDELIM
Print #intFile, strText
End If
Next
Close #intFile
End Sub
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.Row > 1000 Then Exit Sub
Dim rng As Range
For Each rng In Target.Cells
mstrOld(rng.Row, rng.Column) = rng.Value
Next
End Sub
VG und schöne Feiertage,
Mike