Excel Eingaben nachverfolgen

Hallo,

ich suche eine Möglichkeit Änderungen in Excel nachzuhalten. Es ist nicht die „Änderungen verfolgen“-Funktion von Excel gemeint.

Ich möchte gerne einen automatisch eingefügten Kommentar, der mir Datum, User und Text angibt. Für Datum und User habe ich schon einen funktionierenden Code gefunden, wie bekomme ich es hin, dass in dem Kommentar noch der Text aus der Zelle mit angegeben wird?

Mein Code:

Option Explicit

Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Excel.Range)
Dim r As Range

'Für jede geänderte Zelle
For Each r In Target
Call AenderungskennungAlsKommentar®
Next

Set r = Nothing
End Sub

'********************************************************
Private Function AenderungskennungAlsKommentar(r As Range)
'*** für die geänderte Zelle wird im Kommentar
'*** Benutzerkennung und Änderungszeitpunkt
'*** eingetragen
'*** Ist kein Kommentar vorhanden, wird ein neuer angelegt

Dim s As String, s_user As String

'ggf. vorhandenen Kommentar lesen
On Error Resume Next
s = r.Comment.Text
If Err.Number 0 Then
Err.Clear
'neuen Kommentar anlegen
r.AddComment
r.Comment.Visible = False
s = „“
End If
On Error GoTo 0

'Wenn Kommentar vorhanden, Zeilenumbruch anfügen
If s „“ Then s = s & vbLf

'Letzten Benutzer feststellen
s_user = ActiveWorkbook.BuiltinDocumentProperties(7)

'Datum und Benutzer an Kommentar anfügen
s = s & Format(Now(), "dd.mm.yyyy: ") & s_user & Chr(10)

'Kommentar eintragen
r.Comment.Text s

End Function

Danke für Eure Hilfe
Sara

Hallo Sara,

ich hab deinen Code mal getestet. Also bei mir funktioniert nur das Eintragen des Datums in den Kommentar. Der Benutzername taucht nicht auf. Aber du schreibst ja, dass es bei dir geht. Also mache ich mir darum mal weiter keine Gedanken.
Wieso das „AenderungskennungAlsKommentar“ eine Funktion ist, erschließt scih mir nicht. Ich habs mal in eine Sub geändert.
Ich habe den Code jetzt so erweitert, dass er nach dem Datum auch den neuen Inhalt der Zelle in den Kommentar einträgt:

Option Explicit

Private Sub Workbook\_SheetChange(ByVal Sh As Object, ByVal Target As Excel.Range)
Dim r As Range

'Für jede geänderte Zelle
For Each r In Target
Call AenderungskennungAlsKommentar(r)
Next

Set r = Nothing
End Sub


Private Sub AenderungskennungAlsKommentar(r As Range)
'\*\*\* für die geänderte Zelle wird im Kommentar
'\*\*\* Benutzerkennung und Änderungszeitpunkt
'\*\*\* eingetragen
'\*\*\* Ist kein Kommentar vorhanden, wird ein neuer angelegt

Dim s As String, s\_user As String

'ggf. vorhandenen Kommentar lesen
On Error Resume Next
s = r.Comment.Text
If Err.Number 0 Then
Err.Clear
'neuen Kommentar anlegen
r.AddComment
r.Comment.Visible = False
s = ""
End If
On Error GoTo 0

'Wenn Kommentar vorhanden, Zeilenumbruch anfügen
If s "" Then s = s & vbLf

'Letzten Benutzer feststellen
s\_user = ActiveWorkbook.BuiltinDocumentProperties(7)

'Datum und Benutzer an Kommentar anfügen
s = s & Format(Now(), "dd.mm.yyyy: ") & s\_user & Chr(10)

'Inhalt der Zelle in Komemntar eintragen:
s = s & r.Value

'Kommentar eintragen
r.Comment.Text s

End Sub

Gruß, Andreas

Also bei mir funktioniert nur das Eintragen des Datums in den
Kommentar. Der Benutzername taucht nicht auf. Aber du schreibst ja,
dass es bei dir geht.

Hallo,

Danke, fast genau so soll es sein. Ich habe den Text jetzt noch in die gleiche Zeile wie Datum und User geschoben, da der „Text“ immer nur Beträge sind.

Bei dir hat es mit dem User vielleicht nicht geklappt, da als User der angegebenwird, der die Mappe als letzter gespeichert hat. Du hast den Code bestimmt nur kopiert und ausprobier tund vorher nicht gespeichert…

Gibt es auch die Möglichkeit, dass ich die Größe des Kommentarfeldes festlege? Ich hätte es gerne 1-2 cm breiter als die Standardgröße.

Schönen Tag noch
Sara

Guten Tag,

FUNKTIONIERT DOCH NICHT !!!

Ich habe es bis jetzt nur an einem Rechner getestet, was der Code aber angibt ist der Username von dem, der die Mappe als letzter gespeichert hat und nicht wer an der Mappe grade am arbeiten ist.

Gibt es eine Möglichkeit auszulesen, wer der aktuelle Nutzer ist?

Danke und Gruß
Sara

Guten Morgen Sara,

füge mal folgende Zeilen in deinen Code ein:

 With r.Comment.Shape
 .Height= 250
 .Width = 380
End With

So kannst du die Grösse und Breite des Kommentarfenster festlegen.

Lg Frank

Grüezi Sara

Ich habe es bis jetzt nur an einem Rechner getestet, was der
Code aber angibt ist der Username von dem, der die Mappe als
letzter gespeichert hat und nicht wer an der Mappe grade am
arbeiten ist.

Gibt es eine Möglichkeit auszulesen, wer der aktuelle Nutzer
ist?

Aber klar - greife auf die Umgebungs-Variable zu, dort ist der Username des gerade am System angemeldeten Users gespeichert:

'Aktiven Benutzer feststellen
s\_user = Environ("Username")

Mit freundlichen Grüssen

Thomas Ramel

  • MVP für MS-Excel -

Vielen Dank für Eure Hilfen,

jetzt läuft es genau so, wi eich es haben möchte.

Danke nochmal und schöne Ostertage
Sara