Hallo,
es soll eine Änderungsliste erstellt werden. Dazu wird über Worksheet_Change bei jeder Änderung im Worksheet mit dem folgenden Code das Datum, der User und diverse andere Feldinhalte übertragen.
Da aber auch noch der alte Zellinhalt vor Änderung in Spalte 4 übertragen werden soll, hatte ich mir überlegt, die Zelle anzuklicken, dann auf Buttondruck den Inhalt der aktuellen Zelle in eine Variable zu kopieren und dann daraus im Change-Ereignis auf der Änderungsliste in die Spalte 4 einzufügen.
Aber geht das nicht auch ohne den Buttondruck?
es soll eine Änderungsliste erstellt werden. Dazu wird über Worksheet_Change bei jeder Änderung im Worksheet mit dem folgenden Code das Datum, der User und diverse andere Feldinhalte übertragen.
Da aber auch noch der alte Zellinhalt vor Änderung in Spalte 4 übertragen werden soll, hatte ich mir überlegt, die Zelle anzuklicken, dann auf Buttondruck den Inhalt der aktuellen Zelle in eine Variable zu kopieren und dann daraus im Change-Ereignis auf der Änderungsliste in die Spalte 4 einzufügen.
Aber geht das nicht auch ohne den Buttondruck?
Code:
Option Explicit
Public strInhalt As String
Private Sub CommandButton1_Click()
strInhalt = ActiveCell.Value
End Sub
Private Sub Worksheet_Change(ByVal Target As Range)
Dim loLetzte1 As Long
Dim loLetzte2 As Long
loLetzte1 = Cells(Rows.Count, 1).End(xlUp).Row 'letzte belegte in Spalte A (1)
With Worksheets("Änderungsliste")
loLetzte2 = .Cells(Rows.Count, 1).End(xlUp).Row 'letzte belegte in Spalte A (1)
If Not Intersect(Target, Range("A5:L" & loLetzte1)) Is Nothing Then
.Cells(loLetzte2 + 1, 1) = .Cells(loLetzte2, 1) 'Versionswechsel wie Zeile drüber
.Cells(loLetzte2 + 1, 2) = Cells(Target.Row, 2) 'Bauteiltyp geänderter Zelle nach Spalte B
.Cells(loLetzte2 + 1, 3) = Cells(Target.Row, 3) 'Bauteilnamen geänderter Zelle nach Spalte C
.Cells(loLetzte2 + 1, 4) = strInhalt 'Inhalt geänderter Zelle nach Spalte D
.Cells(loLetzte2 + 1, 5) = Cells(Target.Row, Target.Column) 'geänderter Inhalt nach Spalte E
.Cells(loLetzte2 + 1, 6) = Date
.Cells(loLetzte2 + 1, 7) = VBA.Environ("Username")
End If
End With
End Sub