Excel VBA 逆引き集 | コメントの挿入

Excel VBA
スポンサーリンク

コメントの挿入

「セルに注意書きや補足を付けたい」「提出前にメモを残したい」—セルコメント(旧来の“メモ”)をVBAで安全に追加・編集・削除する方法を、初心者向けテンプレートと例題でまとめます。基本は Range.AddComment、存在チェックは Range.Comment、表示制御は Comment.Visible を使います。Excelのバージョンによって“新しいコメント(スレッド形式)”は扱いが異なる点も押さえます。


基本:コメントを追加・表示・削除

Sub AddCommentBasic()
    'A1セルにコメントを追加
    Range("A1").AddComment "これはコメントです"
End Sub

Sub ShowComment()
    'コメントを常時表示(ふきだしを出しっぱなし)
    If Not Range("A1").Comment Is Nothing Then
        Range("A1").Comment.Visible = True
    End If
End Sub

Sub DeleteComment()
    'コメント削除
    If Not Range("A1").Comment Is Nothing Then
        Range("A1").Comment.Delete
    End If
End Sub
VB
  • ポイント:
    • 追加: Range.AddComment “テキスト”。
    • 存在チェック: Range.Comment が Nothing かどうか。
    • 表示制御: Comment.Visible を True/False。
    • AddCommentは旧来の“メモ”機能に対応し、表示や削除などは Comment オブジェクトで操作します。

複数セルへまとめてコメント(安全テンプレート)

Sub AddCommentsMultiple()
    Dim c As Range
    For Each c In Range("B2:B6")
        If c.Comment Is Nothing Then
            c.AddComment Format(Now, "yyyy/mm/dd hh:nn") & " 入力チェック"
        End If
    Next
End Sub
VB
  • ポイント:
    • 既存コメントがあるセルに対して AddComment を呼ぶとエラーになるため、先に c.Comment Is Nothing を確認してから追加します。

改行入りコメント(複数行のメモ)

Sub AddMultilineComment()
    Dim txt As String
    txt = "注意点" & vbCrLf & "・値の更新は毎週" & vbCrLf & "・担当:営業1課"
    ActiveCell.AddComment txt
End Sub
VB
  • ポイント:
    • vbCrLf(改行コード)や Char(10) を使って複数行にできます。マクロ記録では Char(10) が記録されますが vbCrLf でもOKです。

コメントの編集(テキスト更新・追記)

Sub EditCommentText()
    With Range("C3")
        If .Comment Is Nothing Then
            .AddComment "初回登録"
        Else
            .Comment.Text .Comment.Text & vbCrLf & "追記:" & Format(Date, "yyyy/mm/dd")
        End If
    End With
End Sub
VB
  • ポイント:
    • 既存コメントのテキストは Comment.Text で取得・上書きできます。追記時は現在のテキストに連結してから設定します。

表示形式やふきだし形状の制御(基本)

Sub ToggleCommentVisibility()
    With Range("D5")
        If Not .Comment Is Nothing Then
            .Comment.Visible = Not .Comment.Visible
        End If
    End With
End Sub
VB
  • ポイント:
    • AddCommentは Comment オブジェクトを返し、Visibleで表示/非表示を切替できます。形状(Shape)などの詳細は Comment.Shape を経由して扱えます。

一括削除と既存チェック

Sub ClearCommentsInRange()
    '範囲内のコメントをすべて削除
    Range("B2:E20").ClearComments
End Sub

Sub AddCommentIfNone()
    Dim target As Range: Set target = Range("C3")
    If target.Comment Is Nothing Then
        target.AddComment "このセルにはメモが追加されました。"
    Else
        MsgBox "すでにコメントが存在しています。"
    End If
End Sub
VB
  • ポイント:
    • ClearCommentsで範囲内の全コメントを削除可能。個別に扱うなら Comment.Delete を使います。

バージョン注意:新しいコメント(スレッド形式)

  • 要点:
    • 旧来の“コメント(メモ)”は AddComment/Comment で操作。
    • Microsoft 365などの“新しいコメント(スレッド)”は VBAでは CommentThreaded として別扱いで、AddCommentは従来型にのみ対応します。提出先のExcelバージョンに合わせて設計してください。

例題で練習

例題1:見出し列に作業メモをまとめて付与

Sub Example_HeaderNotes()
    Dim c As Range
    For Each c In Range("B2:E2")
        If c.Comment Is Nothing Then
            c.AddComment "更新担当:" & Environ$("Username")
            c.Comment.Visible = True
        End If
    Next
End Sub
VB

例題2:検査結果のセルに自動で注意メモ(閾値判定)

Sub Example_ThresholdNotes()
    Dim last As Long, r As Long
    last = Cells(Rows.Count, "F").End(xlUp).Row
    For r = 3 To last
        With Cells(r, "F")
            If .Value < 0 And .Comment Is Nothing Then
                .AddComment "負値検出:" & Format(Now, "mm/dd hh:nn")
            End If
        End With
    Next
End Sub
VB

例題3:コメントを見やすく改行・常時表示に

Sub Example_MultilineVisible()
    With Range("H5")
        .AddComment "手順" & vbCrLf & "1. 入力" & vbCrLf & "2. 検算" & vbCrLf & "3. 提出"
        .Comment.Visible = True
    End With
End Sub
VB

実務の落とし穴と対策

  • 既存コメントへのAddCommentでエラー:
    • 対策: 事前に .Comment Is Nothing を確認してから追加する。既存がある場合は .Comment.Text で編集。
  • 表示されない・消えて見える:
    • 対策: 常時表示は Comment.Visible = True。マウスオーバーのみの表示が既定です。
  • 大量処理での速度:
    • 対策: ScreenUpdating=False を併用。テキスト生成はまとめて文字列にしてから追加。
  • バージョン差(新しいコメント):
    • 対策: 従来型メモが目的なら AddComment/Comment を使用。スレッド型は操作が制限されるため仕様確認。
タイトルとURLをコピーしました