Clever-Excel-Forum

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

zu nachfolgendem Beispiel habe ich zwei Fragen:

Code:
Sub kommentar_aus_zelle_einfuegen_1()

'** Dimensionierung der Variablen

Dim kom As Comment
Dim zelle As Object
On Error Resume Next
'** Alle markierten Zellen durchlaufen
For Each zelle In Selection
  If zelle.Value <> "" Then
    Set kom = zelle.AddComment
    kom.Text Date & Chr(10) & zelle.Value
  End If
Next zelle

End Sub

Frage 1:

Die markierten Zellen, deren Zelleninhalt "ja" ist, haben bereits ein manuell eingefügtes Kommentar und werden deshalb vom Makro übersprungen, weil einem bereits vorhandenem Kommentar mit diesem Makro nichts hinzugefügt werden kann und ein bereits vorhandenes Kommentar mit diesem Makro auch nicht überschrieben wird.

Der Fehler, der auftritt, besteht darin, dass der Zellenwert "ja" in Kommentare eingetragen wird, obwohl der Zelleninhalt "nein" ist. Wie muss das Makro geändert werden, damit dieser Fehler nicht mehr auftritt.

[attachment=37828]

Frage 2:

Wenn sowohl die Zellen, deren Zelleninhalt "ja" ist, als auch die Zellen deren Zelleninhalt "nein" ist, noch kein Kommentar haben, erhalten alle markierten Zellen vom Makro ein Kommentar. Wie muss das Makro geändert werden, damit nur die markierten Zellen, deren Zelleninhalt "ja" ist ein Kommentar erhalten.

[attachment=37829]
Hallo,

das halte ich für eine Spielerei, ob sich dafür jemand den Sonntag um die Ohren hauen mag?
Hallo,

das hier kannst Du bei Bedarf besser anpassen/ergänzen:

Code:
Sub kommentar_aus_rngZelle_einfuegen_2()
  '** Dimensionierung der Variablen
  Dim rngZelle As Range
  
  '** Alle markierten rngZellen durchlaufen
  For Each rngZelle In Selection.Cells
    With rngZelle
      If Not .Comment Is Nothing Then
        If Len(.Value) Then
          .Comment.Text Date & Chr(10) & .Value
        Else
          '.Comment.Delete
        End If
      Else
        If .Value = "ja" Then
          .AddComment.Text Date & Chr(10) & .Value
        End If
      End If
    End With
  Next rngZelle
End Sub

Gruß Uwe
Hallo,

die Lösung hast du ja mittlerweile von Uwe schon erhalten.
Gleichzeitig möchte ich dir sagen, dass ich die Idee grundsätzlich für unsinnnig halte. Du siehst ja selbst, dass du jetzt schon umständlich im Forum fragen musst, weil du selbst nicht auf die Lösung kommst (nicht falsch verstehen, fragen ist willkommen). Wenn du die Kommentare einfach in eine separate Spalte schreiben würdest, hättest du gar kein Problem. Zellen sind einfach befüll- und auswertbar, Kommentare dagegen nicht. Stell dir vor du suchst nach etwas bestimmtem - Autofilter an und fertig. Wenn die Kommentarspalte stört, dann einfach ausblenden.
Mach dir also das Leben leicht.
(21.03.2021, 14:51)Kuwer schrieb: [ -> ]
Code:
Sub kommentar_aus_rngZelle_einfuegen_2()
  '** Dimensionierung der Variablen
  Dim rngZelle As Range
 
  '** Alle markierten rngZellen durchlaufen
  For Each rngZelle In Selection.Cells
    With rngZelle
      If Not .Comment Is Nothing Then
        If Len(.Value) Then
          .Comment.Text Date & Chr(10) & .Value
        Else
          '.Comment.Delete
        End If
      Else
        If .Value = "ja" Then
          .AddComment.Text Date & Chr(10) & .Value
        End If
      End If
    End With
  Next rngZelle
End Sub

Gruß Uwe

Diese Lösung von dir funktioniert einwandfrei (siehe Anlage). Herzlichen Dank.

[attachment=37853]
Klar, wozu auch auf andere Vorschläge eingehen? Kein Problem.
Damit nur die Zellen, deren Zelleninhalt "ja" ist und die kein Kommentar haben, das Kommentar erhalten, verwende ich folgende Fassung:

Code:
Sub kommentar_aus_rngZelle_einfuegen_2()
  '** Dimensionierung der Variablen
  Dim rngZelle As Range

  '** Alle markierten rngZellen durchlaufen
  For Each rngZelle In Selection.Cells
    With rngZelle
      If Not .Comment Is Nothing Then
      '** Wenn ein Kommentar vorhanden ist, passiert nichts
      Else
        If .Value = "ja" Then
          .AddComment.Text Date & Chr(10) & .Value
        End If
      End If
    End With
  Next rngZelle
End Sub

Beim Original von Uwe, erhalten alle Zellen ein Kommentar, also werden alle Kommentare aller Zellen überschrieben:

Code:
Sub kommentar_aus_rngZelle_einfuegen_2()
  '** Dimensionierung der Variablen
  Dim rngZelle As Range

  '** Alle markierten rngZellen durchlaufen
  For Each rngZelle In Selection.Cells
    With rngZelle
      If Not .Comment Is Nothing Then
        If Len(.Value) Then
          .Comment.Text Date & Chr(10) & .Value
        Else
          '.Comment.Delete
        End If
      Else
        If .Value = "ja" Then
          .AddComment.Text Date & Chr(10) & .Value
        End If
      End If
    End With
  Next rngZelle
End Sub
Das ist noch besser:

Code:
Sub kommentar_aus_rngZelle_einfuegen_2()

  '** Dimensionierung der Variablen
  Dim rngZelle As Range

  '** Alle markierten rngZellen durchlaufen
  For Each rngZelle In Selection.Cells
    With rngZelle
     
       If Len(.Value) And .comment Is Nothing And .Value = "ja" Then

          .AddComment.Text Date & Chr(10) & .Value

        End If
      End If
    End With
  Next rngZelle
End Sub
Hallo,

da hätte ich auch noch einen: Wink

Auf Len(.Value) kannst Du verzichten, da Du ja eh auf den Inhalt "ja" prüfst.

Gruß Uwe
(21.03.2021, 15:59)MisterBurns schrieb: [ -> ]Hallo,

die Lösung hast du ja mittlerweile von Uwe schon erhalten.
Gleichzeitig möchte ich dir sagen, dass ich die Idee grundsätzlich für unsinnnig halte. Du siehst ja selbst, dass du jetzt schon umständlich im Forum fragen musst, weil du selbst nicht auf die Lösung kommst (nicht falsch verstehen, fragen ist willkommen). Wenn du die Kommentare einfach in eine separate Spalte schreiben würdest, hättest du gar kein Problem. Zellen sind einfach befüll- und auswertbar, Kommentare dagegen nicht. Stell dir vor du suchst nach etwas bestimmtem - Autofilter an und fertig. Wenn die Kommentarspalte stört, dann einfach ausblenden.
Mach dir also das Leben leicht.

Klar, wozu auch auf andere Vorschläge eingehen? Kein Problem.

Ich bin deshalb nicht auf eine Lösung gekommen, weil ich keine Ahnung habe und

Zitat:Bei der Arbeit mit Excel sind Kommentare ein hervorragendes Mittel, um Erläuterungen zu einzelnen Formeln oder Werten direkt an Ort und Stelle einzubinden – ähnlich einer Haftnotiz. Dafür muss die Struktur der Tabelle nicht verändert werden, was zum Beispiel bei einer Kommentarspalte der Fall ist.

Quellenangabe: https://www.pcs-campus.de/excel/kommentare_erstellen/
Seiten: 1 2 3 4