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に設定します。


実行結果


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

スポンサーリンク
スポンサーリンク

フォローする

スポンサーリンク
スポンサーリンク