ich möchte gerne die Änderungen bestimmter Zellen im Kommentar zur jeweiligen Zelle mit Benutzername, neuem Wert sowie Datum und Uhrzeit automatisch protokollieren. Das klappt mit dem nachfolgenden VBA-Code, den ich in das Code-Fenster des Arbeitsblattes eingefügt habe, soweit auch problemlos.
Zusätzlich zu dieser Protokollierung soll jedoch bei jeder Änderung, sagen wir bspw. in Zelle CP21, auch der Wert, der zum Zeitpunkt der Änderung in Zelle Q21 steht, mit in den Kommentar der Zelle CP21 aufgenommen werden.
Aktuell sieht der automatisch erstellte Kommentar wie folgt aus:
"Max Mustermann 06.02.2019/08:28:19 2"
("2" ist dabei der in Zelle CP21 eingetragene Wert.)
So soll der Kommentar zukünftig aussehen:
"Max Mustermann 06.02.2019/08:28:19 2 D225"
("D225" ist der Wert, der zum Zeitpunkt der Eintragung des Wertes "2" in die Zelle CP21 in der Zelle Q21 steht.)
Wie kann ich dies im Code realisieren?
Vielen Dank vorab für die Hilfestellung!
Private Sub Worksheet_Change(ByVal target As Range)
'** Dimensionierung der Variablen
Dim strAlt As String
Dim strNeu2 As String
'** Errorhandling
On Error Resume Next
'** Begrenzung auf Zellbereich
If Not Intersect(target, Range("CP21:CP60")) Is Nothing Then
'** Alten Kommentar auslesen
strAlt = target.Comment.Text
'** Neuen Kommentar hinzufügen
If strAlt = "" Then target.AddComment
'** Alten Kommentar um neuen Eintrag erweitern
strNeu2 = vbLf & Application.UserName & " " & Date & "/" & Time & " " & target.Value & _
strAlt
target.Comment.Text strNeu2
'** Errorhandling zurücksetzen
On Error Resume Next
'** Automatische Anpassung der Größe des Kommentarfeldes
Call Kommgroesse
End If
End Sub
Sub Kommgroesse()
Dim com As Comment
Dim ws As Worksheet
For Each ws In ActiveWorkbook.Worksheets
For Each com In ws.Comments
With com
.Shape.TextFrame.AutoSize = True
End With
Next
Next
Application.DisplayCommentIndicator = xlCommentIndicatorOnly
End Sub