Cellkommentarer

Att kunna kontrollera cellkommentarer mha VBA kan ibland vara nödvändigt. I synnerhet om vi har skapat egna mallar och där vi t ex vill styra användarna till att ange kommentarer inom vissa cellområden.

Exemplet demonstrerar hur vi kan infoga, ta bort och ersätta cellkommentarer samt tilldela vissa egenskaper hos cellkommentarer egna värden.

Textrutans bakgrundsfärg för cellkommentarer kan inte kontrolleras mha VBA.

Sub Cellkommentar()
'© 2001 Alla rättigheter XL-Dennis
Dim rnCell As Range
Dim stNamn As String
Dim vaKommentar As Variant
Dim iAtgard As Integer

stNamn = Application.UserName
Set rnCell = ActiveCell

With rnCell
'Om ingen cellkommentar existerar
       If .Comment Is Nothing Then
           'Kommentarer anges av användaren
           vaKommentar = Application.InputBox _
                           ("Ange kommentartexten här:", "Infoga / redigera cellkommentar",  _
                           Default:="", Type:=2)

       'Om dialogrutan stängs mha Avbryt-knappen
        If vaKommentar = False Then Exit Sub

        'Här läggs användarnamn och själva cellkommentar till
       .AddComment Text:=stNamn & ":" & vbLf & vaKommentar

        'Här formateras cellkommentaren
       With .Comment.Shape.TextFrame
                  With .Characters.Font
                            .Size = 11
                            .ColorIndex = 3
                            .Name = "Arial"
                  End With
                 .AutoSize = True
                 'Användarnamnet i fetstil
                 .Characters(Start:=1, Length:=Len(stNamn)).Font.Bold = True
        End With


Else
        'Om en cellkommentar redan existerar
        iAtgard = MsgBox("Vill du ta bort cellens kommentar?", vbYesNoCancel, _
                        "Ta bort kommentar")
                     Select Case iAtgard
                        Case vbYes
                               .Comment.Delete
                               Exit Sub
                        Case vbCancel
                               Exit Sub
                        Case vbNo
                       vaKommentar = Application.InputBox _
                          ("Ange kommentartexten här:", "Infoga / redigera cellkommentar",  _
                          Default:="", Type:=2)
                       If vaKommentar = False Then Exit Sub
                                 .Comment.Delete
                                 .AddComment Text:=stNamn & ":" & vbLf & vaKommentar
                     End Select
End If
End With
 

Application.DisplayCommentIndicator = xlCommentIndicatorOnly
End Sub