Änderungen in Excel per VBA dokumentieren

gamma_matrices

Cadet 4th Year
Registriert
Sep. 2018
Beiträge
121
Hallo,

ich möchte gerne mit VBA Änderungen (Änderungsdatum, Usernamen und Änderung selbst) aus einem Tabellenblatt (zB. Eintraege) in einem anderen Tabellenblatt (zB. Protokoll) dynamisch dokumentieren lassen.

Vielen Dank!
 
wenn du noch gar keine Idee hast, such im Netzt mal nach "vba excel change history". Oder gibts schon eine konkretere Frage?
 
Ich habe diesen folgenden Code. Wie und wo kann ich noch Spaltennamen zu den 4 Vsriablen hinzufügen und noch einen zusätzliche Varisble wo der neuer geänderter Wert auch in einer Spalte im Worksheet Protokoll auftaucht?

Code:
Dim SaveWert As Variant, SaveSheet As String, firstEmptyRow As Long, SaveAddress As String
 
Private Sub Worksheet_Change(ByVal Target As Range)
If SaveWert > "" And Target.Cells <> SaveWert Then
firstEmptyRow = Sheets("Protokoll").Range("A65536").End(xlUp).Offset(1, 0).Row
Sheets("Protokoll ").Cells(firstEmptyRow, 1) = ActiveSheet.Name
Sheets("Protokoll ").Cells(firstEmptyRow, 2) = SaveWert
Sheets("Protokoll ").Cells(firstEmptyRow, 3) = SaveAddress
Sheets("Protokoll ").Cells(firstEmptyRow, 4) = Now
End If
End Sub
 
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
SaveWert = Target.Cells
SaveSheet = ActiveSheet.Name
SaveAddress = Target.Cells.Address
End Sub
 
zwischen Zeile 9 und 10 in deinem Codeblock.

Was meinst du mit Spaltenname? Überschriften/den Kopf der Tabelle? Den schreibst du einfach am Anfang ganz oben drüber. das Skript guckt von unten nach oben und sucht die freie Zeile, in die es eintragen kann. was da drüber steht, ist dem Skript egal.

Willst du nun weitere Werte schreiben, brauchst du
Code:
Sheets("Protokoll ").Cells(firstEmptyRow, X) = Y
wobei X die nächste Spalte (in dem Fall 5) und Y der Inhalt ist, der geschrieben werden soll.

Nachtrag:
bspw wie folgt:
Code:
Option Explicit
Dim SaveWert As Variant, SaveSheet As String, firstEmptyRow As Long, SaveAddress As String
 
Private Sub Worksheet_Change(ByVal Target As Range)
If SaveWert > "" And Target.Cells <> SaveWert Then
firstEmptyRow = Sheets("Protokoll").Range("A65536").End(xlUp).Offset(1, 0).Row
Sheets("Protokoll").Cells(firstEmptyRow, 1) = ActiveSheet.Name
Sheets("Protokoll").Cells(firstEmptyRow, 2) = SaveAddress
Sheets("Protokoll").Cells(firstEmptyRow, 3) = SaveWert
Sheets("Protokoll").Cells(firstEmptyRow, 4) = Target.Cells
Sheets("Protokoll").Cells(firstEmptyRow, 5) = Environ("Username")
Sheets("Protokoll").Cells(firstEmptyRow, 6) = Now
End If
End Sub
 
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
SaveWert = Target.Cells
SaveSheet = ActiveSheet.Name
SaveAddress = Target.Cells.Address
End Sub
1653048904202.png
 
Zuletzt bearbeitet:
  • Gefällt mir
Reaktionen: gamma_matrices
Ja ich möchte den Variablen Spaltennamen zuweisen, sowie in deinem Tabellenausschnitt. Bei mir zeigt er keine Spaltennamen.
Wo und wie hast du die Zuweisungen genau angegeben?
Ergänzung ()

Wie kann ich zB die Tabelle von dir generieren?
 
Zuletzt bearbeitet:
Den Tabellen Kopf habe ich einfach manuell in die erste Zeile geschrieben.
 
  • Gefällt mir
Reaktionen: gamma_matrices
Zurück
Oben