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

AuditTrail / in erste leere Zelle schrei

AuditTrail / in erste leere Zelle schrei
29.06.2020 16:15:55
Sebastian
Hallo zusammen,
ich möchte eine Art AuditTrail in eine Datei einbauen. Der reine AuditTrail, siehe unten, funktioniert auch.
Ich scheitere aktuell allerdings daran, eine Art Verlauf einzubauen. Das heißt, wenn die jeweiligen Zellen H und I voll sind, sollen die Daten jeweils zwei Zellen weiter rechts eingefügt werden.
Ich habe schon einiges versucht, mir fehlt allerdings die erfahrung.

Private Sub Worksheet_Change(ByVal Target As Range)
Dim rC As Range
If Intersect(Target, Range("Y:Y")) Is Nothing Then Exit Sub
ActiveSheet.Unprotect Password:="Test"
Application.EnableEvents = False
For Each rC In Target.Cells
Sheets("Log").Range("H" & rC.Row) = Now()            ' Zeit
Sheets("Log").Range("i" & rC.Row) = Environ("username") ' Benutzer
Next rC
ActiveSheet.Protect Password:="Test"
Application.EnableEvents = True
End Sub

11
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: AuditTrail / in erste leere Zelle schrei
29.06.2020 16:29:48
ralf_b
deine Einfügelogik erschliesst sich mit nicht so recht.
du solltest vielleicht in deinem Zielblatt "Log" jeweils die letzte benutze Zeile oder Spalte ermitteln.
momentan fügst du in verschiedene, nicht geordneten Zeilen in H oder I Werte ein.
AW: AuditTrail / in erste leere Zelle schrei
29.06.2020 16:33:35
Sebastian
es wird jeweils in die Zeile eingefügt, in der im anderen Arbeitsblatt geändert wurde, so soll das auch bleiben.
AW: AuditTrail / in erste leere Zelle schrei
29.06.2020 16:32:05
UweD
Hallo
so?
Private Sub Worksheet_Change(ByVal Target As Range)
Dim rC As Range, LC As Integer
If Intersect(Target, Range("Y:Y")) Is Nothing Then Exit Sub
'? muss hier nicht das LOG Blatt entsperrt werden?
ActiveSheet.Unprotect Password:="Test"
Application.EnableEvents = False
For Each rC In Target.Cells
With Sheets("Log")
LC = .Cells(rC.Row, .Columns.Count).End(xlToLeft).Column 'letzte Spalte einer Zeile
If LC 
LG UweD
Anzeige
AW: AuditTrail / in erste leere Zelle schrei
29.06.2020 16:36:41
Sebastian
Perfekt, funktioniert, danke @UweD !
Du hast recht, das entsperren war noch von der vorherigen Variante.
AW: AuditTrail / in erste leere Zelle schrei
29.06.2020 16:42:31
Sebastian
Noch zwei zusätzliche Punkte.
1. Kann man auch den geänderten Wert noch mit dazu ausgeben?
Also dass die Ausgabe so aussieht:
|geänderter Wert aus Spalte Y|Datum|Name|
2. Kann man die Werte immer links einfügen und es verschiebt die Zellen in der Reihe nach Rechts? Es gibt aber mehrere Datensätze, also nicht einfach eine Spalte einfügen lassen.
AW: AuditTrail / in erste leere Zelle schrei
29.06.2020 16:45:33
ralf_b
Application.undo dann hat target den vorherigen Wert
und das einfügen von zellen kannst du ruhig mal googlen.
Anzeige
AW: AuditTrail / in erste leere Zelle schrei
29.06.2020 18:00:47
Sebastian
Hallo Ralf, sorry damit kann ich noch nichts anfangen.
Folgendes funktioniert soweit, außer dass der Wert vor und nach der Änderung ausgegeben wird. In Google hab ich dazu wirklich nichts hilfreiches gefunden - X steht da nur als Platzhalter
Private Sub Worksheet_Change(ByVal Target As Range)
Dim rC As Range, LC As Integer
If Intersect(Target, Range("Y:Y")) Is Nothing Then Exit Sub
ActiveWorkbook.Sheets("Log").Unprotect Password:="Test"
Application.EnableEvents = False
For Each rC In Target.Cells
With Sheets("Log")
LC = .Cells(rC.Row, .Columns.Count).End(xlToLeft).Column 'letzte Spalte einer Zeile
If LC 

Anzeige
AW: AuditTrail / in erste leere Zelle schrei
29.06.2020 19:35:33
ralf_b
na so einfach ist es nicht. mit application.undo machst du die Änderung in der Zelle rückgängig.
Informationen gibts im Netz genug.
Wenn du den Wert nur mal kurz zum loggen brauchst, solltest du den Target in eine Variabe sichern dann den undo befehl ausführen. Dann holst du dir den jetzigen(alten) wert in Target in eine Variable und gibst Target den Wert der ersten Variable zurück.
VaraktuellerWert = Target
Application.EnableEvents = False
Application.Undo
Application.EnableEvents = True
VaralterWert = Target
Target = VaraktuellerWert
jetzt kannst du mit den beiden Variablen machen was du für richtig hälst
Anzeige
AW: AuditTrail / in erste leere Zelle schrei
29.06.2020 18:02:25
Sebastian
Versehentlich als abgeschlossen markiert, siehe letzte Nachricht.
AW: AuditTrail / in erste leere Zelle schrei
30.06.2020 08:51:48
UweD
Hallo nochmal
so?

Private Sub Worksheet_Change(ByVal Target As Range)
Dim rC As Range, AltWert
If Intersect(Target, Range("Y:Y")) Is Nothing Then Exit Sub
Application.EnableEvents = False
For Each rC In Target.Cells
With Sheets("Log")
Application.Undo
AltWert = Target.Value
Application.Undo
'leere Zellen einfügen
.Cells(rC.Row, 8).Resize(1, 4).Insert xlToRight
.Cells(rC.Row, 8) = AltWert
.Cells(rC.Row, 9) = Target.Value
.Cells(rC.Row, 10) = Now()         ' Zeit
.Cells(rC.Row, 11) = Environ("username") ' Benutzer
End With
Next rC
Application.EnableEvents = True
End Sub
LG UweD
Anzeige
AW: AuditTrail / in erste leere Zelle schrei
01.07.2020 08:52:21
Sebastian
So hab ich es jetzt gelöst und es funktioniert, vielen Dank euch!
Private Sub Worksheet_Change(ByVal Target As Range)
Dim rC As Range, LC As Integer, AltWert
On Error Resume Next
If Intersect(Target, Range("Y1:Y22001")) Is Nothing Then Exit Sub
ActiveWorkbook.Sheets("StatusLog_FY20_21").Unprotect Password:="Status"
Application.Calculation = xlCalculationManual
Application.EnableEvents = False
For Each rC In Target.Cells
With Sheets("StatusLog_FY20_21")
Application.Undo
AltWert = Target.Value
Application.Undo
LC = .Cells(rC.Row, .Columns.Count).End(xlToLeft).Column            'letzte Spalte  _
einer Zeile
If LC 

Anzeige

302 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige