Home » Excel VBA Rangeオブジェクト » コメント » セルコメントの有無を判定する-Range.Comment・Range.NoteText

セルコメントの有無を判定する-Range.Comment・Range.NoteText

対象:Excel2007, Excel2010, Excel2013, Windows版Excel2016

このサイト・インストラクターのネタ帳のアクセスログを眺めていて、
「vba セルのコメントがあるか確認」
「vba セルのコメント有無チェック」
という検索キーワードでのアクセスに気づきました。

セルにコメントが存在するかどうかを、Excel VBA(Visual Basic for Applications)で判定するには、どのようなコードを書けばいいのかを探していた方による検索でしょうか。

[スポンサードリンク]

Range.Commentプロパティでセルコメントの有無を判定するサンプルマクロ

以下のようなコードで、アクティブなセルにコメントが存在するかどうかを判定できます。
Sub コメント有無を判定する_Comment()
 If ActiveCell.Comment Is Nothing Then
  MsgBox "コメントはありません。"
 Else
  MsgBox "コメントが存在しています!"
 End If
End Sub

RangeオブジェクトのCommentプロパティを使うと、

セルコメントの有無を判定する-Range.Comment・Range.NoteText

セルのコメントを表すCommentオブジェクトを取得できます。

コメントが存在しないときに、Range.CommentプロパティはNothingを返すので、
 If ActiveCell.Comment Is Nothing Then
  MsgBox "コメントはありません。"
という判定を行っています。

Range.NoteTextメソッドでセルコメントの有無を判定するサンプルマクロ

オブジェクトの扱いやオブジェクト式に慣れていない方の場合、以下のようなプロシージャのほうが理解しやすいでしょう。
Sub コメント有無を判定する_NoteText()
 If ActiveCell.NoteText = "" Then
  MsgBox "コメントはありません。"
 Else
  MsgBox "コメントが存在しています!"
 End If
End Sub

RangeオブジェクトのNoteTextメソッドを使うと、

セルコメントの有無を判定する-Range.Comment・Range.NoteText

セルコメントに入力されている文字列を取得できます。

Range.NoteTextメソッドの戻りが空白文字列だったらコメントが存在しないと判定しています。
 If ActiveCell.NoteText = "" Then
  MsgBox "コメントはありません。"

戻り値が空白文字列かどうかという判定ですから、先のNothing判定を行うマクロよりも、オブジェクトを苦手とする方にも理解しやすいはずです。

文字の入力されていないコメント枠の場合に判定が異なる

なお、上記2つのマクロは、文字の入力されていない、枠だけのコメントがあったときの判定が異なります。

Range.Commentプロパティを使ったマクロは枠だけのコメントも存在すると判定し、Range.NoteTextメソッドを使ったマクロは枠だけの場合はコメントがないと判定します。

[スポンサードリンク]

Home » Excel VBA Rangeオブジェクト » コメント » セルコメントの有無を判定する-Range.Comment・Range.NoteText

Copyright © インストラクターのネタ帳 All Rights Reserved.

.