VBA入門
コメント(Comment)

ExcelマクロVBAの基本と応用、エクセルVBAの初級・初心者向け解説
最終更新日:2021-11-03

第94回.コメント(Comment)


マクロVBAでセルにコメントを入れたり、編集したり、削除したりするVBAコードを解説します。


セルに対する注意書き等をコメントとして入れておくことで、使いやすいシートにします。


コメント(Comment)に関する各種オブジェクト

Rangeオブジェクト

RangeオブジャクトのCommentに関するプロパティとメソッド

名前 説明
プロパティ Comment セル範囲の左上隅のセルに関連付けられているコメントを表す Comment オブジェクトを取得します。
メソッド AddComment 範囲にコメントを追加します。
ClearComments 指定されたセル範囲からすべてのコメントを消去します。

Commentオブジェクト

セルのコメントを表すオブジェクトです。

名前 説明
プロパティ Application 対象となるオブジェクトが指定されない場合は、Excel アプリケーション (Application オブジェクト) を返します。
対象となるオブジェクトが指定された場合は、指定されたオブジェクトを作成した Application オブジェクトを返します。
OLE オートメーションを使っていて、オブジェクトのアプリケーションにアクセスするときなどに、このプロパティを使います。
値の取得のみ可能です。
Author コメントの作成者を示す文字列を返します。
値の取得のみ可能です。
文字列型 (String) の値を使用します。
Creator 現在のオブジェクトが作成されたアプリケーションを示す 32 ビットの整数を取得します。
値の取得のみ可能です。長整数型 (Long) の値を使用します。
Parent 指定されたオブジェクトの親オブジェクトを取得します。
値の取得のみ可能です。
Shape 指定されたコメントに結合される図形を表す Shape オブジェクトを返します。
Visible オブジェクトを表示するかどうかを表すブール型 (Boolean) の値を設定します。
値の取得および設定が可能です。
メソッド Delete オブジェクトを削除します。
Next 次のコメントを表す Comment オブジェクトを返します。
Previous 前のコメントを表す Comment オブジェクトを返します。
Text コメントの文字列を設定します。

Commentsコレクション

Commentオブジェクトのコレクションです。

複数セルのコメントを扱う場合に使うので、通常はあまり使う事はないと思います。

名前 説明
プロパティ Application 対象となるオブジェクトが指定されない場合は、Excel アプリケーション (Application オブジェクト) を返します。
対象となるオブジェクトが指定された場合は、指定されたオブジェクトを作成した Application オブジェクトを返します。
OLE オートメーションを使っていて、オブジェクトのアプリケーションにアクセスするときなどに、このプロパティを使います。
値の取得のみ可能です。
Count コレクションに含まれるオブジェクトの数を表す長整数型 (Long) の値を返します。
Creator 現在のオブジェクトが作成されたアプリケーションを示す 32 ビットの整数を取得します。
値の取得のみ可能です。長整数型 (Long) の値を使用します。
Parent 指定されたオブジェクトの親オブジェクトを取得します。
値の取得のみ可能です。
メソッド Item コレクションから単一のオブジェクトを返します。


コメント(Comment)の挿入

Range.AddComment[(Text)]

Range("A1").AddComment "練習"

Textは、コメント テキストを指定します。
Textは省略可能です、その場合はコメントの枠だけが挿入されることになります。
既にコメントが挿入されている場合は、AddCommentはエラーとなります。


コメント(Comment)の削除

Range.ClearComments
または、
Range.Comment.Delete

Range("A1").ClearComments
Range("A1").Comment.Delete


どちらでもコメントは削除できます。

ただし、対象セルにコメントがない場合は、
Range.ClearCommentsは問題なく実行できますが、
Range.Comment.Deleteは、エラーとなります。


コメント(Comment)の編集

コメントを編集する為には、Commentオブジェクトを操作します。

Range.Comment

これでCommentオブジェクトを取得し、
そのCommentオブジェクトのプロパティ、メソッドを使います。

Range("A1").Comment.Text "練習"


コメント(Comment)実践例

Sub sample1()
  With Range("A1").AddComment
    .Text Text:="yamaoka:" & vbLf & "コメント"
    .Visible = True
    .Shape.Select
    With Selection.Font
      .Size = 14
      .Bold = True
    End With
    .Visible = False
  End With
End Sub

マクロの記録を参考にして普通に書くとこんな感じになったりしますが、

.Shape.Select
With Selection.Font

この部分が、どうにもスッキリしていないです。
そこで、以下のようにします。

Sub samle2()
  Dim cm As Comment
  With Range("A1").AddComment
    .Text Text:="yamaoka:" & vbLf & "コメント"
    With .Shape.TextFrame
      .Characters.Font.Size = 14
      .Characters.Font.Bold = True
    End With
  End With
End Sub

Shape.TextFrame
コメントとは直接関係なくなってしまうのですが、
オートシェイプのテキストを変更する場合の指定です。

つまり、コメント(Comment)の実態部分はオートシェイプと同じShapeオブジェクトでできているという事です。
これさえ理解していれば、
後はオートシェイプ同様にShapeオブジェクトを操作すれば良いという事が分かります。
第97回.図形オートシェイプ(Shape)
・図形オートシェイプ(Shape)関連のオブジェクト群 ・図形オートシェイプ(Shape)の追加 ・図形オートシェイプ(Shape)の削除 ・図形オートシェイプ(Shape)の編集 ・図形オートシェイプ(Shape)の全選択 ・図形オートシェイプ(Shape)の扱い方を工夫する ・オートシェイプ(Shape)を扱う実践例 ・図形オートシェイプ(Shape)に関連する記事

こちらご参考にしてください。
コメントの位置移動と自動サイズ調整する(Comment)
コメントの位置をセルの横にぴったりくっつけて、サイズし入力文字列に応じて自動サイズ調整に設定します。正直言って、そんなに使い道があるとは思えませんが、ごくたまに必要にる場合も出てきます。そもそも、この位置はコメントの表示で、常時表示する場合の位置です。




同じテーマ「マクロVBA入門」の記事

第126回.入力規則(Validation)
第92回.名前定義(Names)
第93回.ピボットテーブル(PivotTable)
第94回.コメント(Comment)
第95回.ハイパーリンク(Hyperlink)
第96回.グラフ(Chart)
第97回.図形オートシェイプ(Shape)
第136回.フォームコントロール
第137回.ActiveXコントロール
第98回.Findメソッド(Find,FindNext,FindPrevious)
第99回.Replaceメソッド(置換)


新着記事NEW ・・・新着記事一覧を見る

TOROW関数(配列を横1行の配列にして返す)|エクセル入門(2022-10-31)
TOCOL関数(配列を縦1列の配列にして返す)|エクセル入門(2022-10-31)
CHOOSECOLS関数(配列から複数の指定された列を返す)|エクセル入門(2022-10-29)
CHOOSEROWS関数(配列から複数の指定された行を返す)|エクセル入門(2022-10-29)
WorksheetFunctionの効率的な使い方とスピル新関数の利用|VBA入門(2022-10-27)
VSTACK関数(配列を縦方向に順に追加・結合)|エクセル入門(2022-10-25)
HSTACK関数(配列を横方向に順に追加・結合)|エクセル入門(2022-10-25)
LAMBDA以降の新関数の問題と解説(配列操作関数編)|エクセル入門(2022-10-24)
LAMBDA以降の新関数の問題と解説(ヘルパー関数編)|エクセル入門(2022-10-24)
LAMBDA以降の新関数の問題集|エクセル入門(2022-10-24)


アクセスランキング ・・・ ランキング一覧を見る

1.最終行の取得(End,Rows.Count)|VBA入門
2.RangeとCellsの使い方|VBA入門
3.変数宣言のDimとデータ型|VBA入門
4.繰り返し処理(For Next)|VBA入門
5.セルのコピー&値の貼り付け(PasteSpecial)|VBA入門
6.Excelショートカットキー一覧|Excelリファレンス
7.並べ替え(Sort)|VBA入門
8.マクロって何?VBAって何?|VBA入門
9.エクセルVBAでのシート指定方法|VBA技術解説
10.ExcelマクロVBAの基礎を学習する方法|エクセルの神髄




このサイトがお役に立ちましたら「シェア」「Bookmark」をお願いいたします。


記述には細心の注意をしたつもりですが、
間違いやご指摘がありましたら、「お問い合わせ」からお知らせいただけると幸いです。
掲載のVBAコードは動作を保証するものではなく、あくまでVBA学習のサンプルとして掲載しています。
掲載のVBAコードは自己責任でご使用ください。万一データ破損等の損害が発生しても責任は負いません。



このサイトがお役に立ちましたら「シェア」「Bookmark」をお願いいたします。
本文下部へ