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

使ってみたら意外と便利だったのでまとめてみました。変数と改行組み合わせて文字列作成して、コメントとして入れてあげるとかなり実用性が増します。
工夫次第でかなり使える!
発注の数なんかをデータベースからExcelに取り込んだときに、「発注日:YY/MM/DD(改行)納入日:YY/MM/DD」みたいにコメントとして付加してあげたり、「備考」があったときだけ入れたりとか。列/行を増やしたくないとか、セルじゃなくてちょっと差別化したいってときなんかにも、結構有用です。
コメントの有無を調べて書く
1 2 3 4 5 6 7 8 9 10 |
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 |
コメントを削除する
1 2 3 |
Sub コメント削除() Range("A1").ClearComments '削除 End Sub |
既に存在するコメント内容を取得する
1 2 3 4 5 |
Sub コメント内容取得() Dim str As String str = Range("A1").NoteText '取得 End Sub |
コメントが存在しなかった場合は空白が入ります。
コメント枠・フォントサイズの変更
1 2 3 4 5 6 7 8 9 10 |
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 |
存在しないコメントオブジェクトをセットしようとするとエラーになってしまうので、最初に存在有無の確認をします。
コメントの表示・非表示
1 2 3 4 5 6 |
Sub コメント表示() If Range("A1").NoteText <> "" Then 'コメントが存在するときだけ Range("A1").Comment.Visible = True '表示 Range("A1").Comment.Visible = False '非表示 End If End Sub |
これも存在しないコメントはエラーになるので、存在確認してから。
ざっと書き出して、だいたいこんなところでしょうか。自分用ではありますが、どなたかのお役に立てたら嬉しいです!
ExcelVBAに興味をお持ちの方は、こちらの記事もどうぞ!
- これからExcelのマクロを始めたいという方に!簡単な練習問題作りました。
- 私がExcelVBAでよく使う便利なコード・スニペットまとめ
- プログラム初心者さんへ贈る、エラーが起きたら試してみて欲しいこと
- ExcelVBAのクラスモジュールって何?という人向けの使い方まとめ
書籍を執筆しています。

2件のコメント
先日メッセージさせていただいたものです!
*youさんのブログ、全てにおいて勉強させられてます。
VBAもまったくの未知の世界…(^_^;)私もデータ色々扱っていながらも効率は良くなく。ちょっとのやる気でどうにでもなるのに、と反省。
沢山吸収したいです。
これからも更新楽しみにしています!
すまこさん、こんにちは!
先日はメッセージありがとうございました、記事にまでコメント頂けて嬉しいです(*´∀`*)
Web系の方にはVBAは響かず、VBAを求めている方にはWeb系の記事は必要ないという、ちょっと離れたジャンルを書いているという自覚があるので、どちらも読んで頂けるなんてこんなに光栄なことはありません!
VBA、そんなに極めなくても、ちょこっと覚えるだけでかなり使い勝手が良いので、ぜひぜひお勧めです!ルーチンワークが目に見えて時間短縮できるのはとっても楽しいですよー♡
コメントは承認制ですので、反映までしばらくお待ち下さい。(稀にスパムの誤判定にて届かないこともあるようですので、必要な際はお問い合わせからお願い致します。)