Commentオブジェクトとコメントの変更
コメントを表すオブジェクトは Comment オブジェクトです。 Comment オブジェクトは各セルから取得することができ、取り出したいセルを表す Range オブジェクトの「Comment」プロパティを使って取得することが出来ます。ここでは Excel VBA で Comment オブジェクトを取得する方法について解説します。
(Last modified: )
Commentオブジェクトとコメントの変更
コメントオブジェクトは次のように取得することができます。
Dim comment1 As Comment Set comment1 = Range("A1").Comment
既にコメントがあるセルの場合にはCommnetオブジェクトをが取得できますが、コメントが無いセルの「Commnet」プロパティを参照しても何もないため、取り出したオブジェクトの型を調べてみると「Nothing」となります。
例えばセルB2にはコメントが存在するが、他のセルにはコメントが無い場合に次のプログラムを実行してみます。
Sub テスト() Dim comment1 As Comment Dim comment2 As Comment Set comment1 = Range("B2").Comment Set comment2 = Range("C2").Comment MsgBox TypeName(comment1) MsgBox TypeName(comment2) End Sub
「TypeName」関数は、引数に指定したオブジェクトの型を調べてくれます。最初は「Commnet」型と表示されますが、次は「Nothing」と表示されます。セルC2にはコメントが無いため何も取得出来ていないためです。
では取得したCommnetオブジェクトを利用してみます。Commentオブジェクトの「Text」メソッドで、コメントの値を設定することが出来ます。
Dim comment1 As Comment Set comment1 = Range("A1").Comment comment1.Text "変更したコメント"
注意する点としては、コメントが設定されていないセルからはCommnetオブジェクトを取り出すことができないため当然のことながら「Text」メソッドを実行することは出来ません。その為、Commnetオブジェクトの「Text」メソッドは、既にコメントが設定されているセルに対してコメントを修正することになります。まだコメントが設定されていないセルに対してはこのメソッドは利用できませんので注意して下さい。
サンプルプログラム
では簡単なサンプルで試してみましょう。
Sub テスト() Dim comment1 As Comment Set comment1 = Range("B2").Comment comment1.Text "新しいコメント" End Sub
上記マクロを実行すると次のようになります。
今回はセルB2に既にコメントがある状態で、コメントの中身を書き換えました。
-- --
Excel VBA で Comment オブジェクトを取得する方法について解説しました。
( Written by Tatsuo Ikura )
著者 / TATSUO IKURA
これから IT 関連の知識を学ばれる方を対象に、色々な言語でのプログラミング方法や関連する技術、開発環境構築などに関する解説サイトを運営しています。