ExcelVBAでセル上のコメントを操作する

ExcelVBAでセル上のコメントを操作する

使ってみたら意外と便利だったのでまとめてみました。変数と改行組み合わせて文字列作成して、コメントとして入れてあげるとかなり実用性が増します。


工夫次第でかなり使える!

発注の数なんかをデータベースからExcelに取り込んだときに、「発注日:YY/MM/DD(改行)納入日:YY/MM/DD」みたいにコメントとして付加してあげたり、「備考」があったときだけ入れたりとか。列/行を増やしたくないとか、セルじゃなくてちょっと差別化したいってときなんかにも、結構有用です。

コメントの有無を調べて書く

Sub コメント書込()
  Dim str As String

  str = "サンプル" & vbCrLf & "テキスト" 'コメントに入れる文字列(vbCrLfは改行)
  If Range("A1").Comment Is Nothing Then 'コメントが存在しなかったとき
    Range("A1").AddComment str '新規書込
  Else '既にコメントがあるとき
    Range("A1").Comment.Text str '上書き
  End If
End Sub

コメントを削除する

Sub コメント削除()
  Range("A1").ClearComments '削除
End Sub

既に存在するコメント内容を取得する

Sub コメント内容取得()
  Dim str As String

  str = Range("A1").NoteText  '取得
End Sub

コメントが存在しなかった場合は空白が入ります。

コメント枠・フォントサイズの変更

Sub コメント枠フォント変更()
  Dim cmt As Comment
  
  If Not Range("A1").Comment Is Nothing Then 'コメントが存在するときだけ
    Set cmt = Range("A1").Comment 'コメントオブジェクトをセット
    cmt.Shape.Height = 50 '高さ
    cmt.Shape.Width = 100 '幅
    cmt.Shape.TextFrame.Characters.Font.Size = 12 'フォントサイズ
  End If
End Sub

存在しないコメントオブジェクトをセットしようとするとエラーになってしまうので、最初に存在有無の確認をします。

Range(“A1”).Comment.Shape.TextFrame.AutoSize = True と書くとオートサイズで大きさ調整してくれるからこっちも便利!

コメントの表示・非表示

Sub コメント表示()
  If Not Range("A1").Comment Is Nothing Then 'コメントが存在するときだけ
    Range("A1").Comment.Visible = True '表示
    Range("A1").Comment.Visible = False '非表示
  End If
End Sub

これも存在しないコメントはエラーになるので、存在確認してから。

ざっと書き出して、だいたいこんなところでしょうか。自分用ではありますが、どなたかのお役に立てたら嬉しいです!

公開日:2013/10/25
更新日:2014/11/11

2件のコメント

  1. すまこ より:

    先日メッセージさせていただいたものです!
    *youさんのブログ、全てにおいて勉強させられてます。
    VBAもまったくの未知の世界…(^_^;)私もデータ色々扱っていながらも効率は良くなく。ちょっとのやる気でどうにでもなるのに、と反省。
    沢山吸収したいです。
    これからも更新楽しみにしています!

    • *you より:

      すまこさん、こんにちは!
      先日はメッセージありがとうございました、記事にまでコメント頂けて嬉しいです(*´∀`*)

      Web系の方にはVBAは響かず、VBAを求めている方にはWeb系の記事は必要ないという、ちょっと離れたジャンルを書いているという自覚があるので、どちらも読んで頂けるなんてこんなに光栄なことはありません!

      VBA、そんなに極めなくても、ちょこっと覚えるだけでかなり使い勝手が良いので、ぜひぜひお勧めです!ルーチンワークが目に見えて時間短縮できるのはとっても楽しいですよー♡


コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください

コメントは承認制ですので、反映までしばらくお待ち下さい。(稀にスパムの誤判定にて届かないこともあるようですので、必要な際はお問い合わせからお願い致します。)