この記事では、シートのセルに設定されているコメント(メモ)の文字列を検索・特定する方法についてご説明します。
呼び方がバージョンによって異なり紛らわしいですが、本記事では「コメント(メモ)」という言い方で説明します。
【動画】シートのセルに設定されているコメント(メモ)の文字列を検索・特定する実際の動き
本題に入る前に、まずは次の動画をご覧ください。
Comment.Textプロパティでコメント(メモ)の文字列を取得することができるので、Instr関数を使って検索文字(列)を特定します。
動画のソースコードでは、検索文字(列)が見つかったコメント(メモ)の背景色をオレンジに設定しています。
※コメント(メモ)のデフォルトの背景色は明るい黄(値(RGB)は「255, 255, 225」)です。
マクロ作成の流れ
Excelファイルの例
お見せしたExcelのシートでは、次のセルにコメントが設定されています。
- B2
- F3
- D6
- C9
- F11
- G3
- G10
- 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週間の無料体験があるので、これで「プログラミングの基礎」を学ぶのにおすすめですよ。