Clever-Excel-Forum

Normale Version: Kommentare aus Zwischenablage entfernen
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Seiten: 1 2 3 4 5 6
Hallo,

(17.04.2019, 15:50)cgo schrieb: [ -> ]Daher war die Idee das gepostete Makro weiterhin zu nutzen und die Kommentare irgendwie von der Zwischenablage unberührt zu lassen, d.h. nicht mit zu kopieren bzw. nicht mit einzufügen.

teste es mal damit:
'Automatisches Einfügen eines Kommentar in Spalte A bei Ändern des Zellinhalts
Private Sub Worksheet_Change(ByVal Target As Range)
 Dim varT As Variant
 If Not Intersect(Target, Columns("A:A")) Is Nothing And Target.Count = 1 Then
   varT = Target.Formula
   On Error Resume Next
   Application.EnableEvents = False
   Application.Undo
   If Target.Comment Is Nothing Then
      Target.AddComment.Text Application.UserName & Chr(10) & Date & " " & Format(Time, "hh:mm")
   Else
      Target.Comment.Text Target.Comment.Text & Chr(10) _
            & Application.UserName & Chr(10) & Date & " " & Format(Time, "hh:mm")
   End If
   Target.Formula = varT
   Application.EnableEvents = True
   On Error GoTo 0
 End If
End Sub
Gruß Uwe
Moin Uwe,

mal noch eine kleine Verbesserungsidee Smile Ich würde statt .Value .Formula nehmen, falls eine drin steht
Moin André,

habs geändert. Danke.

Gruß Uwe
Besten Dank! Das funktioniert prima für die Spalte A : ) Vielen Dank!

Kopiere ich jedoch eine Zelle aus Spalte A in eine Zelle einer anderen Spalte, dann ist nach wie vor das Datum enthalten. Hast du eine Idee, wie man dies verhindern kann?

Ich habe noch eine zweite Frage: kann man Excel so konfigurieren, dass es beim Löschen des Inhalts einer Zelle auch automatisch den Kommentar entfernt?!
Hallo,

beide Wünsche werden hiermit erfüllt: Wink

'Automatisches Einfügen eines Kommentars bei Ändern des Zellinhaltes 
'Automatisches Löschen eines Kommentars bei Entfernen des Zellinhaltes 
Private Sub Worksheet_Change(ByVal Target As Range)
  Dim varT As Variant
  With Target
    If .Count = 1 Then
      If Len(.Formula) Then
        varT = .Formula
        On Error Resume Next
        Application.EnableEvents = False
        Application.Undo
        If .Comment Is Nothing Then
           Target.AddComment.Text Application.UserName & Chr(10) & Date & " " & Format(Time, "hh:mm")
        Else
           .Comment.Text .Comment.Text & Chr(10) _
                 & Application.UserName & Chr(10) & Date & " " & Format(Time, "hh:mm")
        End If
        .Formula = varT
        Application.EnableEvents = True
        On Error GoTo 0
      Else
        If Not .Comment Is Nothing Then
          .Comment.Delete
        End If
      End If
    End If
  End With
End Sub


VBA/HTML-CodeConverter, AddIn für Office 2002-2016 - in VBA geschrieben von Lukas Mosimann. Projektbetreuung:RMH Software & Media

Code erstellt und getestet in Office 14 - mit VBAHTML 12.6.0


Gruß Uwe
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Count > 1 Then Exit Sub

    If Target.Comment Is Nothing Then Target.AddComment
    Target.Comment.Text Target.Comment.Text & Application.UserName & Format(Now, "   dd.mm.yyyy hh:mm") & vbLf
    If Target = "" Then Target.Comment.Delete
End Sub

oder

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Count > 1 Then Exit Sub
    
    On Error Resume Next
    Target.AddComment
    With Target.Comment
        .Text .Text & Application.UserName & Format(Now, "   dd.mm.yyyy hh:mm") & vbLf
        If Target = "" Then .Delete
    End With
End Sub
@snb,

das geht doch nicht. der Change-Code wirkt auf die eingefügten Daten, der alte Kommentar ist mit Deiner Variante dann weg. Uwe hat deswegen das Undo drin, nimmt vorher aber die neuen Daten auf und packt sie dann wieder rein.
Code:
der alte Kommentar ist mit Deiner Variante dann weg

Hier nicht (E2010).
Ich habe beide Varianten getestet. Laufen tadellos.
@snb,

nö, nicht so, dass der alte Kommentar erhalten bleibt und ggf. erweitert wird :22:

[attachment=23744]
[attachment=23749]
Sieht hier so aus:
Seiten: 1 2 3 4 5 6