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

VBA Änderungen Verfolgen Protokoll "Alter Wert"

VBA Änderungen Verfolgen Protokoll "Alter Wert"
15.04.2015 17:23:26
mx11
Guten Tag,
ich würde gerne alle Änderungen die in einer Excel Tabelle gemacht werden in einem Extra Blatt bzw Datei Protokollieren.
Jedoch Fehlt mir der Wert " Alter Wert ". Könnte man diesen in den Quellcode noch irgendwo _ einbinden?

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) = Target.Value
.Cells(ErsteFreieZeile, 4) = Date
.Cells(ErsteFreieZeile, 5) = Time
.Cells(ErsteFreieZeile, 6) = Environ("username")
End With
End Sub

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA Änderungen Verfolgen
15.04.2015 17:30:33
Ralf
Hallo mx11,
ist die Datei eine Freigegebene Datei?
Denn dann kann man die Bordeigenen Mittel von Excel nutzen...
LG
Ralf

AW: VBA Änderungen Verfolgen Protokoll
15.04.2015 17:40:44
Michael
Hallo mx11!
Falls Du nicht auf integrierte Möglichkeiten zurückgreifen kannst/willst, wie Ralf geschrieben hat, müsstest Du dafür Dein Makro mit einem weiteren Ereignis-Makro kombinieren (in Folge beide):
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) = Target.Value
.Cells(ErsteFreieZeile, 4) = "Alter Wert:" & " " & AlterWert
.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
LG
Michael

Anzeige
AW: VBA Änderungen Verfolgen Protokoll
16.04.2015 17:43:18
mx11
Danke euch, hat mir sehr geholfen. Das Problem bei der integrierten Möglichkeit ist, falls 100 Änderungen gemacht werden dann hab ich diese irgendwie nicht Protokolliert sondern muss diese einzeln durchklicken und bestätigen. Deswegen denke ich das diese Möglichkeit die ich benutze die bessere ist (Falls nicht, bin ich offen für Vorschläge). Ich habe den Code noch ein bisschen angepasst, sodass nur ich die Änderungen in einem Protokoll sehen kann.
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
Private Sub Workbook_Open()
If Environ("username") = "NAME" Then 'anpassen!
Worksheets("Protokoll").Visible = xlSheetVisible
End If
End Sub
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Worksheets("Protokoll").Visible = xlSheetVeryHidden
End Sub

Anzeige
Danke für die Rückmeldung! owT
17.04.2015 08:55:04
Michael
.

300 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige