Kommentare aus Zellinhalten generieren
#1
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.

   

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.

   
Antworten Top
#2
Hallo,

das halte ich für eine Spielerei, ob sich dafür jemand den Sonntag um die Ohren hauen mag?
Viele Grüße
Klaus-Dieter
Der Erfolg hat viele Väter, 
der Misserfolg ist ein Waisenkind
Richard Cobden
[-] Folgende(r) 1 Nutzer sagt Danke an Klaus-Dieter für diesen Beitrag:
  • TxbyFmjy
Antworten Top
#3
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
[-] Folgende(r) 1 Nutzer sagt Danke an Kuwer für diesen Beitrag:
  • TxbyFmjy
Antworten Top
#4
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.
Schöne Grüße
Berni
[-] Folgende(r) 1 Nutzer sagt Danke an MisterBurns für diesen Beitrag:
  • TxbyFmjy
Antworten Top
#5
(21.03.2021, 15: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.

   
Antworten Top
#6
Klar, wozu auch auf andere Vorschläge eingehen? Kein Problem.
Schöne Grüße
Berni
[-] Folgende(r) 1 Nutzer sagt Danke an MisterBurns für diesen Beitrag:
  • TxbyFmjy
Antworten Top
#7
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
Antworten Top
#8
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
Antworten Top
#9
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
[-] Folgende(r) 1 Nutzer sagt Danke an Kuwer für diesen Beitrag:
  • TxbyFmjy
Antworten Top
#10
(21.03.2021, 16: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/
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste