Excel VBA セルにコメント挿入するセルのコメントを削除する

スポンサーリンク

AddComment【アドコメント】メソッド

指定したセルにコメントを追加し、コメントを表すComment【コメント】オブジェクトを取得するには、Range【レンジ】オブジェクトのAddComment【アドコメント】メソッドを使用します。

AddComment【アドコメント】メソッドの書式と設定値(引数)の説明

[]内は省略可能です。
オブジェクト.AddComment( [Text] )
【戻り値】Comment【コメント】オブジェクト

  • オブジェクト(必須)
    コメントを挿入したいセルをRangeオブジェクトで指定します。
  • Text【テキスト】(省略可)
    コメントに表示する文字列を指定します。

※すでにコメントが挿入されているセルに対して、AddComment【アドコメント】メソッドを実行するとエラーになります。


セルにコメントが挿入されているかを調べる方法

オブジェクトや変数の種類を調べる、TypeName【タイプネーム】関数を使用すると、セルにコメントが挿入されているかどうかを調べることができます。

例えば、A1セルにコメントが挿入されているか調べるには、「TypeName(Range(“A1”).Comment)」と記述するとコメントが挿入されている場合は
“Comment”」が返り挿入されていない場合は。「“Nothing”」が返ります。

これを利用して、A1セルにコメントがすでに挿入されていたら処理を終了させるには、条件分岐を利用して「If TypeName(Range(“A1”).Comment) = “Comment” Then Exit Sub」と記述できます。

A1セルにコメントを挿入するコード例

Sub コメント挿入()
  If TypeName(Range("A1").Comment) = "Comment" Then
     MsgBox "すでにコメントが設定されています。処理を終了します。"
  Exit Sub
  End If
     Range("A1").AddComment Text:="コメント"
End Sub

ClearComment【クリアコメント】メソッド

セルに挿入されているコメントを削除するには、Range【レンジ】オブジェクトのClearComment【クリアコメント】メソッドを使用します。

ClearComment【クリアコメント】メソッドの書式と設定値の説明

オブジェクト.ClearComment

  • オブジェクト(必須)
    コメントを削除するセルまたはセル範囲をRange【レンジ】オブジェクトで指定します。

※コメントが挿入されていないセルにClearComment【クリアコメント】メソッドを実行するとエラーになります。


アクティブシートのセルに設定されているコメントをすべて削除するコードと解説

Sub コメント削除()
  On Error GoTo エラー処理
      Cells.SpecialCells(xlCellTypeComments).ClearComments
      MsgBox "すべてのコメントを削除しました。"
  Exit Sub
エラー処理:
      MsgBox "コメントは挿入されていません。処理を終了します。"
End Sub
2行目【On Error GoTo エラー処理】
セルにコメントが設定されていないとエラーが発生してデバックモードで停止してしまうので停止しないように、On Error【オンエラー】ステートメントを使用してエラー処理をします。エラーが発生したらGoTo【ゴートゥ】ステートメントで、6行目のエラー処理ラベルまで処理をジャンプしデバックモードで停止しないようにします。


3行目【Cells.SpecialCells(xlCellTypeComments).ClearComments】
Cells【セルズ】プロパティですべてのセルを参照してRange【レンジ】オブジェクトのSpecialCells【スペシャルセルズ】メソッドを使用して「コメントが含まれるセル」を参照しRange【レンジ】オブジェクトのClearComments【クリアコメンツ】メソッドを実行して
セルに挿入されているすべてのコメントを削除します。


4行目【 MsgBox “すべてのコメントを削除しました。”】
MsgBox関数を使用してユーザーにコメントを削除したことを伝えます。


5行目【Exit Sub】
Exit【エグジット】ステートメントでSub【サブ】プロシージャを途中で終了します。


6行目~7行目【エラー処理:
MsgBox “コメントは挿入されていません。処理を終了します。”】

エラーが発生したとき、つまりセルにコメントが設定されていないとき、2行目のGoToステートメントで、エラー処理ラベルまで処理がジャンプしMsgBox関数でユーザーにメッセージを表示します。


Comment【コメント】プロパティ

セルに設定されているコメントを参照するには、Range【レンジ】オブジェクトのComment【コメント】プロパティを使用します。

Comment【コメント】プロパティの書式と設定値の説明

オブジェクト.Comment

  • オブジェクト(必須)
    コメントが設定されているセルをRange【レンジ】オブジェクトで指定します。

※コメントが挿入されていないセルにComment【コメント】プロパティを使用するとエラーになります。


Commentオブジェクトの主なメソッドとプロパティ

メソッド内容
Text【テキスト】コメントの文字列を指定します。
Delete【デリイト】コメントを削除します。

プロパティ内容
Shape【シェイプ】コメントの図形を参照します。
Visible【ビジブル】コメントの表示/非表示を設定します。

Text【テキスト】メソッド

指定したセルのコメントにテキストを追加、または設定するには、指定したセルのコメントを表すComment【コメント】オブジェクトのText【テキスト】メソッドを使用します。

Text【テキスト】メソッドの書式と設定値(引数)の説明

[]内は省略可能です。
オブジェクト.Text( [Text, Start, Overwrite] )
【戻り値】文字列型 (String)

  • オブジェクト(必須)
    AddComment【アドコメント】メソッドで追加したComment【コメント】オブジェクト、またはComment【コメント】プロパティで参照したComment【コメント】オブジェクトを指定します。
  • Text【テキスト】(省略可)
    追加または、設定するテキストを設定します。データ型(Variant)
  • Start【スタート】(省略可)
    文字列を配置する文字の位置番号を指定します。この引数を省略すると、既存の文字列は削除されます。データ型(Variant)
  • Overwrite【オーバーライト】(省略可)
    既存の文字列を上書きするかしないかをブール型の値で設定します。

    設定値内容
    False既存の文字列に指定した文字列が追加されます。(既定値)
    True既存の文字列が追加した文字列に置き換えられます。

Delete【デリイト】メソッド

設定されているコメントを削除するには、指定したセルのコメントを表すComment【コメント】オブジェクトのDelete【デリイト】メソッドを使用します。

Delete【デリイト】メソッドの書式と設定値の説明

オブジェクト.Delete

  • オブジェクト(必須)
    削除するコメントを表すComment【コメント】プロパティで参照したComment【コメント】オブジェクトを指定します。

※Comment【コメント】オブジェクトがない場合はエラーになります。


Shape【シェイプ】プロパティ

指定されたコメントに図形を設定するには、指定したセルのコメントを表すComment【コメント】オブジェクトのShape【シェイプ】プロパティでComment【コメント】オブジェクトの図形を参照し参照した図形を表すShape【シェイプ】オブジェクトのAutoShapeType【オートシェイプタイプ】プロパティを使用して図形のタイプを設定します。

Shape【シェイプ】プロパティの書式と設定値の説明

オブジェクト.Shape.AutoShapeType = 設定値

  • オブジェクト(必須)
    図形を設定するComment【コメント】プロパティで参照したComment【コメント】オブジェクトを指定します。
  • 設定値(必須)
    設定する図形のタイプを下記のMsoAutoShapeType列挙型の定数または、値で指定します。

MsoAutoShapeType列挙型


Visible【ビジブル】プロパティ

設定したComment【コメント】オブジェクトを常に表示するには、Comment【コメント】オブジェクトのVisible【ビジブル】プロパティを使用します。

Visible【ビジブル】プロパティの書式と設定値の説明

オブジェクト.Visible = 設定値

  • オブジェクト(必須)
    設定するComment【コメント】プロパティで参照したComment【コメント】オブジェクトを指定します。
  • 設定値(必須)
    Comment【コメント】オブジェクトを表示するか非表示にするかをブール型の値で設定します。

    設定値内容
    False非表示にします。(既定値)
    True常に表示します。

セルにコメントを挿入するコードと解説

Sub コメント追加()
  If TypeName(Range("D1").Comment) = "Comment" Then
     MsgBox "すでにコメントが設定されています。処理を終了します。"
     Exit Sub
  End If
  With Range("D1").AddComment
      .Text Format(Date, "yyyy/mm") & "現在"
      .Visible = True
      .Shape.AutoShapeType = 15
  End With
End Sub
2行目【If TypeName(Range(“D1”).Comment) = “Comment” Then】
条件分岐とTypeName【タイプネーム】関数を使用して、「D1セルにコメントが挿入されているとき」を定義します。


3行目【MsgBox “すでにコメントが設定されています。処理を終了します。”】
条件が成立したとき、つまり、D1セルにすでにコメントが挿入されているとき、MsgBox関数を利用してユーザーにメッセージで伝えます。


4行目【Exit Sub】
条件が成立したとき、つまり、D1セルにすでにコメントが挿入されているとき、Exit【エグジット】ステートメントを使用してSubプロシージャを途中で終了します。


6行目【With Range(“D1”).AddComment】
AddComment【アドコメント】メソッドを使用して、D1セルにComment【コメント】オブジェクトを追加してWith【ウィズ】ステートメントで指定します。


7行目【.Text Format(Date, “yyyy/mm”) & “現在”】
With【ウィズ】ステートメントで指定したComment【コメント】オブジェクトのText【テキスト】メソッドを使用して、Comment【コメント】オブジェクトに文字列を追加します。

Format【フォーマット】関数を使用して現在の年と月を文字列で取得し設定します。


8行目【.Visible = True】
With【ウィズ】ステートメントで指定した、Comment【コメント】オブジェクトのVisible【ビジブル】プロパティを使用して、Comment【コメント】オブジェクトを常に表示するように設定します。


9行目【.Shape.AutoShapeType = 15】
With【ウィズ】ステートメントで指定した、Comment【コメント】オブジェクトのShape【シェイプ】プロパティを使用し、Comment【コメント】オブジェクトのShape【シェイプ】オブジェクトを参照してShape【シェイプ】オブジェクトのAutoShapeType【オートシェイプタイプ】プロパティに図形のタイプを15に設定します。


実行結果


以上で、セルにコメント挿入するセルのコメントを削除する方法についての解説を終了します。ありがとうございました。

スポンサーリンク

関連記事・広告