コメントの追加と削除

指定したセルのコメントを追加、または削除をする。

VBAでセルにコメントを追加するにはRangeオブジェクトのAddCommentメソッドを、削除するにはClearCommentsメソッドを利用して設定することができます。
またコメントの常時表示、非表示も指定できます。

(注意点)
コメントの追加の注意点として、すでにコメントがあるセルに対してAddCommentメソッドを実行するとエラーとなり処理が中断してしまいます。エラーの回避には、指定のセルに既にコメントが設定されているかをRangeオブジェクトのCommentプロパティで調べて、条件分岐による処理を追加する必要があります。(設定されていない場合は Nothing が返されます。)

●コメントの編集

'******************************************************************
' セルのコメントを追加、追記
'******************************************************************
Sub Main_EditCommnet()
    

    'コメントを編集したいセルの指定
    Dim rPos(1) As Range
    Set rPos(0) = Sheets("Sheet1").Range("A1")
    Set rPos(1) = Sheets("Sheet1").Range("A2")
    
    '新規コメントの追加
    Call setCellComment(rPos(0), "新規コメント", 0, True)
    
    '既存コメントへの追記
    Call setCellComment(rPos(1), "既存のコメントに追記", 1, False)

End Sub

'******************************************************************
' セルのコメントを追加、編集
'------------------------------------------------------------------
'   第1引数:セルのRangeオブジェクト
'   第2引数:コメント本文
'   第3引数:新規(0) or 追記(0以外)
'   第4引数:表示(True)/非表示(Flase)
'******************************************************************
Sub setCellComment(getCell As Range, getText As String, AddType As Integer, getVisible As Boolean)
    
    '既存コメント有無を確認、ない場合はコメントできるように追加
    If getCell.Comment Is Nothing Then
        getCell.AddComment
    End If
    
    'コメントを追記するか判断
    If AddType = 0 Then
        getCell.Comment.Text getText
    Else
        '追記の場合は既存コメントを変数に退避
        Dim sCmt As String
        sCmt = getCell.Comment.Text
        getCell.Comment.Text sCmt & getText '追記
    End If
    
    'コメントの表示/非表示を指定
    getCell.Comment.Visible = getVisible

End Sub

 ■実行結果

●コメントの削除

'******************************************************************
' セルのコメントを削除
'******************************************************************
Sub Main_ClearComment()
    
    Sheets("Sheet1").Range("A1:A5").ClearComments

End Sub