エクセルVBAで使用するコードの備忘録。VBAでワークシート上のセルにコメントを追加するコード。新規に追加するだけなく、既存のコメントに追記する方法についてもご紹介します。
新規にコメントを追加する
新規にコメントを追加するには、コメントを追加したいセルのRangeオブジェクトでAddCommentメソッドを使用します。引数としてはコメントとして追加したい文字列を渡します。
ただし、AddCommentメソッドはすでにコメントが存在している場合にはエラーになってしまいます。そのため、AddCommentを使用する前には必ずClearCommentメソッドでコメントを消去しておきます。
下記のサンプルコードを使用する際はカッコに囲まれた部分([***])を自分のプログラムに合わせて変更してください。
サンプルコード
Public Sub AddCommentTest1()
'--- ワークシート ---'
Dim ws As Worksheet
Set ws = ThisWorkbook.Worksheets("[ワークシート名]")
'--- セルのアドレス ---'
Dim adr As String
adr = "[セルアドレス]"
'--- コメントを消去 ---'
ws.Range(adr).ClearComments
'--- コメントを追加 ---'
Call ws.Range(adr).AddComment("[コメント]")
End Sub
既存のコメントに追記する
上記でも説明した通り、AddCommentメソッドはすでにセルにコメントがあった場合にはエラーになるという特性があり、そのままではコメントの追記にはなりません。そのため既存のコメントに追記をするには
- 既存のコメントを一時別変数に保存
- 既存のコメントを削除
- 別保存した既存コメントに新規コメントをつなげてコメントを新規に追加
というステップを踏む必要があります。
セルのコメントはRangeオブジェクトのCommentプロパティで取得できます。コメントが存在しない場合はNothingを返すので、これを判定に使用して既存コメントに追加するようにします。
なおこちらも、下記のサンプルコードを使用する際はカッコに囲まれた部分([***])を自分のプログラムに合わせて変更してください。
サンプルコード
Public Sub AddCommentTest1()
'--- ワークシート ---'
Dim ws As Worksheet
Set ws = ThisWorkbook.Worksheets("[ワークシート名]")
'--- セルのアドレス ---'
Dim adr As String
adr = "[セルアドレス]"
'--- 既存のコメントを格納する変数 ---'
Dim commentTmp As String
'--- コメントが存在する場合は一時的に変数に格納 ---'
If (ws.Range(adr).Comment Is Nothing) Then
commentTmp = ""
Else
commentTmp = ws.Range(adr).Comment.Text
End If
'--- コメントを消去 ---'
ws.Range(adr).ClearComments
'--- 新規に追加するコメント ---'
Dim newComment As String
newComment = "[新規コメント]"
'--- コメントを追加 ---'
Call ws.Range(adr).AddComment(commentTmp & newComment)
End Sub