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
 
 

 

![[-]](https://www.clever-excel-forum.de/images/collapse.png)

