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
Hallo,
da hätte ich auch noch einen:
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/