Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Änderungsprotokoll im Kommentar der Zelle

Änderungsprotokoll im Kommentar der Zelle
06.02.2019 08:36:31
Jens
Guten Tag,
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

Anzeige

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Änderungsprotokoll im Kommentar der Zelle
06.02.2019 09:08:17
Bernd
Servus Jens,
ungetestet:

'** Alten Kommentar um neuen Eintrag erweitern
strNeu2 = vbLf & Application.UserName & "   " & Date & "/" & Time & "  " & target.Value & " " &  _
_
target.offset(0,-77).value & " " & strAlt
target.Comment.Text strNeu2
Grüße, Bernd
Anzeige
AW: Änderungsprotokoll im Kommentar der Zelle
06.02.2019 11:22:55
Jens
Hallo Bernd,
vielen Dank, klappt wunderbar!
Eine Frage habe ich noch:
Wie kann ich in das Kommentarfeld Überschriften mit einbringen? Sprich, dass in der ersten Zeile z.B. die Überschriften Name, Datum/Uhrzeit, Eingetragener Wert ,Wert Spalte Q stehen und darunter dann die Protokolleinträge folgen?
Danke!
Anzeige
AW: Änderungsprotokoll im Kommentar der Zelle
06.02.2019 12:14:22
Bernd
Hallo Jens,
Zeilenumbrüche kannst du z.B. mit "vbnewline" einfügen, also:

'** Alten Kommentar um neuen Eintrag erweitern
strNeu2 = vbLf & Application.UserName & "   " & Date & "/" & Time & vbnewline & _
target.Value & " " & target.offset(0,-77).value & " " & strAlt
target.Comment.Text strNeu2
Grüße, Bernd
Anzeige
AW: Änderungsprotokoll im Kommentar der Zelle
06.02.2019 13:04:30
Jens
Hallo Bernd,
danke für deine Rückmeldung. Ich glaube du hast mich missverstanden. Ich möchte keine Zeilenumbrüche einfügen, sondern lediglich in der ersten Zeile hintereinander einmalig die Überschriften stehen haben. Anschließend sollen dann die Protokolleinträge zeilenweise folgen.
Das Kommentarfenster soll wie folgt aussehen:
Name | Datum/Uhrzeit | Wert Zelle | Wert Spalte Q
Protokolleintrag 1
Protokolleintrag 2
...
Vielen Dank!
Anzeige
AW: Änderungsprotokoll im Kommentar der Zelle
07.02.2019 12:48:23
Bernd
Servus Jens,
ich habe zwar jetzt verstanden, was du möchtest, aber da gibt es meiner meinung nach bessere Möglichkeiten/Alternativen.
z.B.: http://www.office-loesung.de/ftopic77687_0_0_asc.php
Warum man in den Kommentaren ein Protokoll führt ist mir dennoch nicht ganz schlüssig.
Aber man könnte abfragen, ob der Kommentar "leer" ist und dann den "Header" einbauen. Wenn "nicht leer", dann nur die "relevanten Daten" aufnehmen...
Grüße, Bernd
Anzeige
;
Anzeige
Anzeige

Infobox / Tutorial

Änderungsprotokoll im Kommentar der Zelle


Schritt-für-Schritt-Anleitung

Um ein Änderungsprotokoll in den Kommentaren einer Excel-Zelle zu erstellen, gehe wie folgt vor:

  1. Öffne Excel und gehe zu dem Arbeitsblatt, in dem Du das Änderungsprotokoll einfügen möchtest.

  2. Drücke ALT + F11, um den VBA-Editor zu öffnen.

  3. Doppelklicke im Projektfenster auf das Arbeitsblatt, in dem Du die Änderungen protokollieren möchtest.

  4. Füge den folgenden VBA-Code in das Code-Fenster ein:

    Private Sub Worksheet_Change(ByVal target As Range)
       Dim strAlt As String
       Dim strNeu2 As String
       On Error Resume Next
       If Not Intersect(target, Range("CP21:CP60")) Is Nothing Then
           strAlt = target.Comment.Text
           If strAlt = "" Then target.AddComment
           strNeu2 = vbLf & Application.UserName & "   " & Date & "/" & Time & "  " & target.Value & " " & target.Offset(0, -77).Value & " " & strAlt
           target.Comment.Text strNeu2
           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
  5. Schließe den VBA-Editor und teste die Änderungen in den Zellen CP21 bis CP60, um sicherzustellen, dass die Protokollierung funktioniert.


Häufige Fehler und Lösungen

  • Fehler: Der Kommentar wird nicht hinzugefügt.

    • Lösung: Stelle sicher, dass Du den Code im richtigen Arbeitsblatt-Modul eingefügt hast und dass die Zellen im angegebenen Bereich bearbeitet werden.
  • Fehler: Der Kommentar zeigt nicht die gewünschten Daten an.

    • Lösung: Überprüfe den Bereich, auf den der Code angewendet wird, und achte darauf, dass die Werte in der korrekten Spalte stehen.

Alternative Methoden

Falls Du eine andere Methode zur Protokollierung von Änderungen in Excel suchst, kannst Du:

  • Excel-Änderungsprotokoll nutzen: Aktiviere die Funktion „Änderungsprotokoll“ in Excel, die es ermöglicht, Änderungen nachzuvollziehen, ohne VBA verwenden zu müssen. Diese Funktion ist in Excel 2010 und späteren Versionen verfügbar.
  • Verwendung einer externen Datei: Speichere die Änderungen in einer Textdatei oder einer Datenbank, anstatt sie in den Kommentaren zu speichern. Dies kann durch VBA-Programmierung umgesetzt werden.

Praktische Beispiele

Hier ein Beispiel, wie der Kommentar in Zelle CP21 aussehen könnte:

Name | Datum/Uhrzeit | Wert Zelle | Wert Spalte Q
Max Mustermann   06.02.2019/08:28:19  2  D225

Um solche Überschriften im Kommentar zu integrieren, kannst Du den Code wie folgt anpassen:

If strAlt = "" Then 
    target.AddComment 
    target.Comment.Text "Name | Datum/Uhrzeit | Wert Zelle | Wert Spalte Q" & vbLf & strNeu2
Else 
    target.Comment.Text strNeu2
End If

Tipps für Profis

  • Kommentargröße optimieren: Nutze die Kommgroesse-Subroutine, um sicherzustellen, dass das Kommentarfeld immer die richtige Größe hat.
  • Flexibilität bei der Protokollierung: Passe den Zellbereich und die Formatierung des Kommentars an Deine spezifischen Anforderungen an, z.B. durch die Verwendung von Variablen, die verschiedene Zellwerte dynamisch einfügen.

FAQ: Häufige Fragen

1. Kann ich das Änderungsprotokoll für mehrere Zellen gleichzeitig aktivieren? Ja, indem Du den Zellbereich im Code anpasst, kannst Du das Änderungsprotokoll für mehrere Zellen aktivieren.

2. Wie kann ich die Kommentare wieder löschen? Um Kommentare zu löschen, kannst Du den folgenden VBA-Code verwenden:

Sub CommentsLöschen()
    Dim c As Comment
    For Each c In ActiveSheet.Comments
        c.Delete
    Next c
End Sub

3. Funktioniert dieser Code in allen Excel-Versionen? Der VBA-Code sollte in Excel 2007 und späteren Versionen funktionieren. Vergewissere Dich, dass die Makros aktiviert sind.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige