« カテゴリー「Excel VBA」の記事一覧 | トップページ | リストの入力規則を設定する »

2020年5月27日 (水)

コメントの追加,削除,表示/非表示をする

Excelのコメントについて
この記事では以下の項目をVBAで実行する方法を見ていきます。

1. コメントを追加する
2. コメントを削除する
3. シートにあるすべてのコメントを削除する
4. シートにあるコメントの位置と内容の一覧を作成する
5. コメント一覧を使用して指定したコメントを削除する
6. コメントの内容を検索して置換する
7. コメントの表示/非表示の切り替える

1. コメントを追加する

コメントを追加するにはAddCommentメソッドを使用します。
コメント内容を改行したい場合は
Text引数に指定する文字列にChr(10)を含めます。

次のコードはA1セルにコメントを追加します。

コメントを追加するコード:

Sub macro2020527a()
'コメントを追加する
   
    With Range("A1").AddComment
        .Visible = False
        .Text Text:="コメント1行目" _
            & Chr(10) & "コメント2行目"
    End With

End Sub

コメントを追加するセルをCellsで指定したい場合は
上記コードの「Range("A1")」を
「Cells(1,1)」などと書き換えてください。

 

2. コメントを削除する

コメントを削除するにはClearCommentsメソッドを使います。
次のコードはA1セルのコメントを削除します

コメントを削除するコード:

Sub macro2020527b()
'コメントを削除する

    Range("A1").ClearComments

End Sub

Rangeで複数範囲を指定するには

Range("A1:B3").ClearComments

のようにします。

 

3. シートにあるすべてのコメントを削除する

次のコードは
アクティブシートのすべてのコメントを削除します。

シートにあるすべてのコメントを削除するコード:

Sub macro20200527c()
'アクティブシートにあるすべてのコメントを削除する

    ActiveSheet.Cells.ClearComments

End Sub

 

4. シートにあるコメントの位置と内容の一覧を作成する

次のコードは
アクティブシートのコメントの位置,作成者,内容を
シートを追加して一覧にします。

シートにあるコメントの一覧を作成するコード:

Sub macro20200527d()
'アクティブシートのコメント一覧を作成する

    Dim sh As Worksheet
    Dim i As Integer
    Dim c
   
    Set sh = ActiveSheet
    i = 0
   
    Sheets.Add.Name = "コメント一覧-" & sh.Name
    Cells(1, 1) = "コメント一覧-" & sh.Name
    Cells(4, 2) = "行"
    Cells(4, 3) = "列"
    Cells(4, 4) = "作成者"
    Cells(4, 5) = "コメント内容"
   
    For Each c In sh.Comments
        Cells(i + 5, 2) = c.Parent.Row
        Cells(i + 5, 3) = c.Parent.Column
        Cells(i + 5, 4) = c.Author
        Cells(i + 5, 5) = c.Text
        i = i + 1
    Next c
   
    Cells.EntireColumn.AutoFit
    Cells.EntireRow.AutoFit

End Sub

実行結果一例:
Vba20200527a

 

5. コメント一覧を使用して指定したコメントを削除する

4項のコードで作成したコメント一覧を使用して
不要なコメントを選択して削除します。
A列に何かしらの値を入力したコメントを削除します。

[読み取り専用を推奨する]設定をするコード:

Sub macro20200527e()
'アクティブシートのコメント一覧を使用する
'A列が空欄でないときコメントを削除
'実行前にコメント一覧のシートを表示させておく

    Dim sh As Worksheet
    Dim sh_name As String
    Dim i As Integer
   
    sh_name = Mid(Cells(1, 1), InStr(Cells(1, 1), "-") + 1, Len(Cells(1, 1)))
    Set sh = Sheets(sh_name)
   
    For i = 5 To Cells(5, 2).End(xlDown).Row
        If Cells(i, 1) <> "" Then
            sh.Cells(Cells(i, 2), Cells(i, 3)).ClearComments
        End If
    Next i

End Sub

 

6. コメントの内容を検索して置換する

4項のコードで作成したコメント一覧を使用して
コメント内容を置換します。

Excelではコメント内容を検索することはできますが
置換はできません。
4項のコードでコメント一覧を作成することで
コメントをセルの値として使用できるようになったので
Excelの置換機能を使用してE列のコメントの内容を変更してください。
置換後のコメントを再設定することで
コメントの内容を置換します。

コメントの内容を検索して置換するコード:

Sub macro20200527f()
'アクティブシートのコメント一覧を使用して
'コメントを再設定
'実行前にコメント一覧のシートを表示させておく

    Dim sh As Worksheet
    Dim sh_name As String
    Dim i As Integer
   
    sh_name = Mid(Cells(1, 1), InStr(Cells(1, 1), "-") + 1, Len(Cells(1, 1)))
    Set sh = Sheets(sh_name)
   
    For i = 5 To Cells(4, 2).End(xlDown).Row
        sh.Cells(Cells(i, 2), Cells(i, 3)).ClearComments
        With sh.Cells(Cells(i, 2), Cells(i, 3)).AddComment
            .Visible = False
            .Text Text:=CStr(Cells(i, 5))
        End With
    Next i

End Sub

 

7. コメントの表示/非表示の切り替える

コメントの表示は次3パターンあります。

① コメントとコメントマークを表示
② コメントマークのみ表示
③ コメントとコメントマークを表示しない
Vba20200527b

次のコードはコメントの表示を変更します。
①~③のいずれかを適宜使用してください。

コメントの表示/非表示の切り替えるコード:

Sub macro20200527g()
'コメントの表示/非表示の切り替える

    '①コメントとコメントマークを表示
    Application.DisplayCommentIndicator = xlCommentAndIndicator
   
    '②コメントマークのみ表示
    Application.DisplayCommentIndicator = xlCommentIndicatorOnly

    '③コメントとコメントマークを表示しない
    Application.DisplayCommentIndicator = xlNoIndicator
   
End Sub

使用Ver:Win10, Excel For Office365

 

|

« カテゴリー「Excel VBA」の記事一覧 | トップページ | リストの入力規則を設定する »

コメント

この記事へのコメントは終了しました。