VBA Änderungen Verfolgen: Protokoll "Alter Wert"
Schritt-für-Schritt-Anleitung
Um Änderungen in einer Excel-Tabelle zu protokollieren, kannst Du den folgenden VBA-Code verwenden. Dieser speichert den "Alter Wert" und die "neue" Änderung auf einem separaten Protokollblatt.
- Öffne Excel und drücke
ALT + F11, um den VBA-Editor zu starten.
- Füge einen neuen Modul hinzu, klicke mit der rechten Maustaste auf
VBAProject (deineDatei.xlsm), wähle Einfügen und dann Modul.
- Kopiere den folgenden Code in das Modul:
Public AlterWert As Variant
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
Dim ErsteFreieZeile As Long
If Target.Count > 1 Then Exit Sub
If Sh.Name = "Protokoll" Then Exit Sub
If Intersect(Target, Sh.Range("A9:Q550")) Is Nothing Then Exit Sub
With Sheets("Protokoll")
ErsteFreieZeile = .Cells(Rows.Count, 1).End(xlUp).Row + 1
.Cells(ErsteFreieZeile, 1) = Sh.Name
.Cells(ErsteFreieZeile, 2) = Target.Address(0, 0)
.Cells(ErsteFreieZeile, 3) = AlterWert
.Cells(ErsteFreieZeile, 4) = Target.Value
.Cells(ErsteFreieZeile, 5) = Date
.Cells(ErsteFreieZeile, 6) = Time
.Cells(ErsteFreieZeile, 7) = Environ("username")
End With
End Sub
Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
If Target.Count > 1 Then Exit Sub
If Sh.Name = "Protokoll" Then Exit Sub
If Not Intersect(Target, Sh.Range("A9:Q550")) Is Nothing Then
AlterWert = Target.Value
End If
End Sub
- Schließe den VBA-Editor und gehe zurück zu Excel.
- Teste die Änderungen in deinen Zellen, um sicherzustellen, dass sie korrekt protokolliert werden.
Häufige Fehler und Lösungen
Alternative Methoden
Falls Du nicht mit VBA arbeiten möchtest, kannst Du die integrierten Funktionen von Excel nutzen, um Änderungen zu verfolgen. Diese Methode erfordert jedoch, dass die Datei als freigegebene Arbeitsmappe gespeichert wird, was die Nachverfolgbarkeit der Änderungen erleichtert.
Praktische Beispiele
-
Beispiel 1: Protokollierung in einer Verkaufsdaten-Tabelle
- Wenn Du in einer Verkaufsdaten-Tabelle den Preis eines Produkts änderst, wird der alte Preis sowie der neue Preis im Protokoll festgehalten.
-
Beispiel 2: Protokollierung in einer Budgetübersicht
- Änderungen an den Budgetposten werden ebenfalls protokolliert, um eine transparente Nachverfolgung der Ausgaben zu gewährleisten.
Tipps für Profis
- Code anpassen: Überlege, ob Du den Code anpassen möchtest, um zusätzliche Informationen wie die IP-Adresse oder andere Benutzerinformationen zu protokollieren.
- Sichtbarkeit steuern: Du kannst den Protokoll-Tab für andere Benutzer ausblenden, um die Integrität der Daten zu wahren. Verwende dazu den folgenden Code im
Workbook_Open-Event:
Private Sub Workbook_Open()
If Environ("username") = "NAME" Then 'anpassen!
Worksheets("Protokoll").Visible = xlSheetVisible
End If
End Sub
FAQ: Häufige Fragen
1. Wie kann ich den Protokolltab für andere Benutzer unsichtbar machen?
Du kannst den Workbook_BeforeClose-Ereignis verwenden, um den Protokoll-Tab auszublenden.
2. Welche Excel-Version benötige ich für diese VBA-Lösungen?
Die oben beschriebenen VBA-Methoden funktionieren in Excel 2010 und späteren Versionen. Achte darauf, dass Makros in den Excel-Einstellungen aktiviert sind.