【ExcelVBA】シートのセルに設定されているコメント(メモ)の文字列を検索・特定する方法とは

この記事では、シートのセルに設定されているコメント(メモ)の文字列を検索・特定する方法についてご説明します。

コメントとメモについて
Excel2019を含め過去のバージョンはコメントですが、Excel2021からはメモと呼び方が変わりました。

呼び方がバージョンによって異なり紛らわしいですが、本記事では「コメント(メモ)」という言い方で説明します。

 
Excel2019を含め過去のバージョン

 
Excel2021

【動画】シートのセルに設定されているコメント(メモ)の文字列を検索・特定する実際の動き

本題に入る前に、まずは次の動画をご覧ください。


Comment.Textプロパティでコメント(メモ)の文字列を取得することができるので、Instr関数を使って検索文字(列)を特定します。

動画のソースコードでは、検索文字(列)が見つかったコメント(メモ)の背景色をオレンジに設定しています。

※コメント(メモ)のデフォルトの背景色は明るい黄(値(RGB)は「255, 255, 225」)です。

マクロ作成の流れ

STEP.1
文字列を検索するコメント(メモ)が設定されている範囲のセルを指定する
文字列を検索するコメント(メモ)が設定されている範囲のセルを指定します。
STEP.2
Comment.Textプロパティでコメント(メモ)の文字列を取得することができるので、Instr関数を使って検索文字(列)を特定する
Comment.Textプロパティでコメント(メモ)の文字列を取得することができるので、Instr関数を使って検索文字(列)を特定します。

Excelファイルの例

お見せしたExcelのシートでは、次のセルにコメントが設定されています。

  1. B2
  2. F3
  3. D6
  4. C9
  5. F11
  6. G3
  7. G10
  8. B14

今回は①~⑤のセル(表の中のセル)に設定されているコメント(メモ)に対して文字(列)を検索します。

⑥~⑧のセル(表の外のセル)に設定されているコメントには何もしません。

コードの例

Excelのマクロのコード(例)

Option Explicit

Sub test()

    Dim rng     As Range
    Dim rngWk   As Range
    
    'セルの範囲を取得する
    Set rng = Worksheets("Top").Range("B2:F11").SpecialCells(xlCellTypeComments)
    
    For Each rngWk In rng
    
        If InStr(rngWk.Comment.Text, "2") > 0 Then
        
            '「2」が含まれるメモの場合
        
            '「2」が含まれるメモの背景色を濃いオレンジ(値(RGB)は「255, 140, 0」)に設定する
            rngWk.Comment.Shape.Fill.ForeColor.RGB = RGB(255, 255, 225)
        
        End If

    Next rngWk

End Sub

注目すべきコード①

最初に見て頂きたいのは9行目です。

    'セルの範囲を取得する
    Set rng = Worksheets("Top").Range("B2:F11").SpecialCells(xlCellTypeComments)

9行目では、コメントを表示または非表示したい範囲内のセルを取得して変数「rng」に格納します。

SpecialCellsメソッドは、SpecialCellsメソッドに指定した定数に該当するセルを返します。

定数xlCellTypeCommentsは「コメントが含まれているセル」を表す定数で、コメントが設定されているセルを取得したい場合にSpecialCellsメソッドの引数にこのxlCellTypeCommentsを指定します。

また、RangeオブジェクトにB2からF11のセルの範囲を指定していますが、B2からF11の範囲内に存在するコメントが設定されているセルを取得しています。

注目すべきコード②

次に見て頂きたいのは13行目です。

    If InStr(rngWk.Comment.Text, "2") > 0 Then

Comment.Textプロパティでコメント(メモ)の文字(列)を取得することができます。

取得した文字(列)に対してInstr関数を使うことで検索文字(列)を特定することができます。

上記コードでは「2」が含まれるかどうかを判定しています。

動作確認

マクロ実行前

下のExcelは、マクロを実行する前の状態です。

マクロ実行後

検索文字(列)が含まれているコメント(メモ)に対して背景色にオレンジ色が設定されています。(「コメント2」と書き込まれたコメント(メモ))

最後に

本記事では、シートのセルに設定されているコメント(メモ)の文字列を検索・特定する方法についてご説明しました。

コメント(メモ)に書き込んだ文字列がどこにあるのか探したい時に参考にしてみてくださいね。

プログラミングのスキルを習得するなら

プログラミングのスキルを習得したい、今のスキルをもっと高めたい、そう考えているなら「プログラミングスクール」がおすすめです。

プログラミングのスキルの基礎を身につけるなら「TechAcademy」で1週間の無料体験があるので、これで「プログラミングの基礎」を学ぶのにおすすめですよ。

→ TechAcademyの「1週間 無料体験」はこちら