Excel: Änderungsdatum automatisch als Kommentar einfügen

  • #1
A

Ace_NoOne

Bekanntes Mitglied
Themenersteller
Dabei seit
07.04.2002
Beiträge
403
Reaktionspunkte
0
Ort
Germany
Hallo zusammen,

ist es in Excel möglich, beim Ändern einer Zelle automatisch das aktuelle Datum (inklusive Uhrzeit) als Kommentar zur Zelle einfügen zu lassen? Bestehende Kommentare sollten dabei nicht überschrieben werden, sondern die neuen Daten einfach als neue Zeile eingefügt werden.
Ich vermute mal, das läuft auf Makro-Programmierung raus, aber ich wüsste da nicht, wie/wo ich anfangen soll. Besonders komplex sollte das aber nicht sein, oder?
 
  • #2
Code:
Private Sub Worksheet_Change(ByVal Target As Excel.Range)
Target.Comment.Text Target.Comment.Text & Die Zelle wurde am  & Format(Date, dd.mm.yy) &  um  & Format(Now(), hh:mm:ss) &  durch  & ActiveWorkbook.BuiltinDocumentProperties(7).Value &  geändert.
End Sub

Probier mal dies.

Gruß Lisa
 
  • #3
Vielen Dank.
Allerdings scheint's nicht zu funktionieren - jedenfalls kann ich in der Tabelle keine Änderung entdecken (auch nicht, wenn ich Target.Comment.Text Target.Comment.Text zu Target.Comment.Text = Target.Comment.Text ändere).

Wo soll ich den Code denn einfügen? Ich hab' halt den VB Editor geöffnet und den Code unter DieseArbeitsmappe und später auch als neues Modul eingefügt - aber es tut sich nichts...
 
  • #4
Hallo Ace_noOne,

was Lisa geschrieben hat funktioniert, wenn die Zelle bereits einen Kommentar hat.

Folgender Makro sollte das Gewünschte machen.
Er ist in die Code-Seite der Mappe zu kopieren (DieseArbeitsmappe).
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(r)
  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(), yyyymmdd_hhnn: ) & s_user
  
 ->Kommentar eintragen
  r.Comment.Text s
  
End Function

Damit du nicht alle Kommentare von Hand löschen mußt, noch ein Makro zum Löschen der Kommentare auf einem Blatt.
(Der sollte in einem Modul, aber nicht in der betreffenden Arbeitsmappe liegen, sonst verwendet ihn der Benutzer  ;D )
Code:
Option Explicit
'*********************************************************
Sub AlleKommentareAufBlattLoeschen()
 ->löscht alle Kommentare auf dem aktiven Blatt

  Dim anz As Long, x As Long
  anz = ActiveSheet.Comments.Count
  For x = anz To 1 Step -1
    ActiveSheet.Comments(x).Delete
  Next
End Sub

Gruß matjes :)
 
  • #5
PERFEKT! Vielen Dank!!

Wenn ich jetzt noch rausfinden könnte, wie ich verhindere, dass die Kollegen bei jedem Öffnen die Warnmeldung zur Makro-Aktivierung bestätigen müssen, wäre ich nahezu wunschlos glücklich... ;) (Es läuft wohl auf das Erstellen einer digitalen Signatur raus, aber darüber weiß ich kaum was.)
UPDATE: http://www.wintotal-forum.de/index.php/topic,79960.0.html - da steht's doch!
slapcry.gif


UPDATE #2: Wie kann ich erreichen, dass die Kommentare nur in bestimmten Spalten eingefügt werden? Ich habe versucht, vor Call AenderungskennungAlsKommentar(r) (in Sub Workbook_SheetChange) eine entsprechende Abfrage einzufügen, kenne aber die notwendige Funktion zur Abfrage der Spalte(nnummer) nicht...
 
  • #6
Hallo Ace_NoOne,

das sieht dann z.B. so aus für Spalte A und B
Code:
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

   ->Wenn Spalte A oder B
    If (r.Column = 1) Or (r.Column = 2) Then
     ->dann Kommentar eintragen

      Call AenderungskennungAlsKommentar(r)

    End If

  Next
  Set r = Nothing
End Sub

Gruß Matjes :)
 
  • #7
Graçias, señor! :)
 
  • #8
de nada  ;)
 
Thema:

Excel: Änderungsdatum automatisch als Kommentar einfügen

ANGEBOTE & SPONSOREN

Statistik des Forums

Themen
113.838
Beiträge
707.959
Mitglieder
51.491
Neuestes Mitglied
haraldmuc
Oben