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

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

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


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

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

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

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

  str = "サンプル" & vbCrLf & "テキスト" 'コメントに入れる文字列(vbCrLfは改行)
  If Range("A1").NoteText = "" Then 'コメントが存在しなかったとき
    Range("A1").AddComment Text:=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 Range("A1").NoteText <> "" 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

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

コメントの表示・非表示

Sub コメント表示()
  If Range("A1").NoteText <> "" 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 を使っています。コメントデータの処理方法の詳細はこちらをご覧ください

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