コメントが追加されているかを判定する(Commentプロパティ)|Excel VBA |
セルにコメントを追加するには、RangeオブジェクトのAddCommentメソッドを使用します。
次のコードはセルA1にコメントを追加します。
Sub Sample1()
Range("A1").AddComment "これはコメントです"
End Sub
ただし、このコードには問題がひとつ。
セルにすでにコメントがある場合、実行時エラーになってしまいます。
1つのセルにコメントは1つしか追加できないからです。
エラーを回避するには、そのセルに「すでにコメントが追加されているか」を判定すればよいでしょう。コメントの有無は、次のように判定できます。
Sub Sample2()
If TypeName(ActiveCell.Comment) = "Comment" Then
MsgBox "コメントあり"
Else
MsgBox "コメントなし"
End If
End Sub
RangeオブジェクトのCommentプロパティは、セルにコメントが追加されているとき、そのセルのCommentオブジェクトを返します。
また、TypeName関数は、引数に指定した変数のタイプを返す関数です。
引数にオブジェクトを指定すると、そのオブジェクトの種類を返します。
そこで、セルにコメントが追加されている場合、TypeName関数は "Comment" という文字列を返し、コメントがなければ "Nothing" という文字列を返します。
これを使って「もしセルにコメンがなかったらコメントを追加する」という動作を実現するには、次のようになります。
Sub Sample3()
If TypeName(ActiveCell.Comment) = "Nothing" Then
ActiveCell.AddComment "これはコメントです"
End If
End Sub
次のようにすると、もともとあるコメントに追記することも可能です。
Sub Sample4()
Dim tmp As String
With ActiveCell
If TypeName(.Comment) = "Nothing" Then
'セルにコメントがない場合
.AddComment "これはコメントです"
Else
'既にコメントがある場合、いったん削除してから追加
tmp = .Comment.Text
.ClearComments
.AddComment tmp & vbCrLf & Date & " 追記します"
End If
End With
End Sub