Machst du eigentlich Sport, Susanne? – Ja, natürlich – ich habe ganz oft Laufmaschen in den Strumpfhosen.

Ich erstelle per VBA in Excel dynamische Formulare, in die Daten eingetragen werden. Dabei greife ich auf Mastertabellen zu, die ich einblende, kopiere und modifiziere. Eine der Tabellen hat ein Kommentar (okay – eigentlich eine Notiz). Unter bestimmten Voraussetzungen muss ich ihn löschen.

Okay – ich hätte ihn auch umgekehrt einfügen können – ich entschließe mich für die Variante des Löschens:

ZelleLinksOben.Offset(i, 0).Comment.Delete

Allerdings erhalte ich einen Fehler, wenn in der Zelle kein Kommentar mehr vorhanden ist:

Wie kann ich überprüfen, ob eine Zelle einen Kommentar hat? Die Zelle hat ja keine Comments-Sammlung, so dass ich über die Eigenschaft Count herausbekäme, ob Kommentar oder nicht.

Ich schreibe eine Funktion, die auf einen Kommentar zugreift. Ist dieser nicht vorhanden, erhalte ich einen Fehler. Diesen kann ich abfangen:

Public Function GibtEsKommentar(Zelle As Range) As Boolean
Dim blnVorhanden As Boolean
Dim s As String

On Error Resume Next
Err.Clear
s = Zelle.Comment.Text
If Err.Number = 0 Then
blnVorhanden = True
Else
blnVorhanden = False
End If
Err.Clear
GibtEsKommentar = blnVorhanden
End Function

Damit kann man (ich) arbeiten:

    If RisikoanalyseTyp <> "Dienstleistung" Then
        If GibtEsKommentar(ZelleLinksOben) Then
            .Comment.Delete ' -- lösche den Kommentar
        End If
    End If

Nach einer Weile entdecke ich, dass es zum Löschen eines Kommentars einen anderen Befehl gibt: ClearComments

ZelleLinksOben.Offset(i, 0).ClearComments

Und er löscht einen vorhandenen Kommentar oder macht nichts, wenn sich in der Zelle kein Kommentar befindet. Warum nicht gleich so?