指定したセルのコメントを追加、または削除をする。
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


