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

上記マクロを実行すると次のようになります。

Commentオブジェクト

今回はセルB2に既にコメントがある状態で、コメントの中身を書き換えました。

-- --

Excel VBA で Comment オブジェクトを取得する方法について解説しました。

( Written by Tatsuo Ikura )

Profile
profile_img

著者 / TATSUO IKURA

プログラミングや開発環境構築の解説サイトを運営しています。