このサイト・インストラクターのネタ帳のアクセスログを眺めていて、
「vba セルのコメントがあるか確認」
「vba セルのコメント有無チェック」
という検索キーワードでのアクセスに気づきました。
セルにコメントが存在するかどうかを、Excel VBA(Visual Basic for Applications)で判定するには、どのようなコードを書けばいいのかを探していた方による検索でしょうか。
Range.Commentプロパティでセルコメントの有無を判定するサンプルマクロ
以下のようなコードで、アクティブなセルにコメントが存在するかどうかを判定できます。If ActiveCell.Comment Is Nothing Then
MsgBox "コメントはありません。"
Else
MsgBox "コメントが存在しています!"
End If
End Sub
RangeオブジェクトのCommentプロパティを使うと、
セルのコメントを表すCommentオブジェクトを取得できます。
コメントが存在しないときに、Range.CommentプロパティはNothingを返すので、
If ActiveCell.Comment Is Nothing Then
MsgBox "コメントはありません。"
という判定を行っています。
Range.NoteTextメソッドでセルコメントの有無を判定するサンプルマクロ
オブジェクトの扱いやオブジェクト式に慣れていない方の場合、以下のようなプロシージャのほうが理解しやすいでしょう。If ActiveCell.NoteText = "" Then
MsgBox "コメントはありません。"
Else
MsgBox "コメントが存在しています!"
End If
End Sub
RangeオブジェクトのNoteTextメソッドを使うと、
セルコメントに入力されている文字列を取得できます。
Range.NoteTextメソッドの戻りが空白文字列だったらコメントが存在しないと判定しています。
If ActiveCell.NoteText = "" Then
MsgBox "コメントはありません。"
戻り値が空白文字列かどうかという判定ですから、先のNothing判定を行うマクロよりも、オブジェクトを苦手とする方にも理解しやすいはずです。
文字の入力されていないコメント枠の場合に判定が異なる
なお、上記2つのマクロは、文字の入力されていない、枠だけのコメントがあったときの判定が異なります。
Range.Commentプロパティを使ったマクロは枠だけのコメントも存在すると判定し、Range.NoteTextメソッドを使ったマクロは枠だけの場合はコメントがないと判定します。
Home » Excel VBA Rangeオブジェクト » コメント » セルコメントの有無を判定する-Range.Comment・Range.NoteText