シートの全セルから指定文字列を検索する
シートやブックから指定文字列を検索する場合、Ctrl + Fキーでの検索機能を使いますね。
とても便利な機能ですが、複数のセルが検索に一致した場合にどのセルが対象なのかは分かりにくい面があります。
そこで、検索に一致したセルに背景色を付けて一目でわかるようにしましょう。
検索した文字列を含むセルの背景色を設定するコード
シートの入力セル範囲に対して検索文字列があるセルの背景色を設定する関数です。
引数が2つあります。
1つ目が検索文字列で、この文字列を含むセルが背景色を設定する対象になります。
2つ目が設定する背景色です。Colorプロパティに設定するためRBG関数や以下のVBAの色定数(ColorConstantsのメンバー)を指定できます。
| 色見本 | 定数 | 色 | 値 | 16進数 | 
|---|---|---|---|---|
| vbBlack | 黒 | 0 | 0 | |
| vbRed | 赤 | 255 | &HFF | |
| vbGreen | 緑 | 65280 | &HFF00 | |
| vbYellow | 黄 | 65535 | &HFFFF | |
| vbBlue | 青 | 16711680 | &HFF0000 | |
| vbMagenta | マゼンタ | 16711935 | &HFF00FF | |
| vbCyan | シアン | 16776960 | &HFFFF00 | |
| vbWhite | 白 | 16777215 | &HFFFFFF | 
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | '// 引数1:検索文字列 '// 引数2:背景色 Sub SetBkColorSameStr(a_sFind, a_SetColor)     Dim r As Range  '// 入力されているセル範囲     Dim c As Range  '// 入力されているセル範囲のループ中の1セル     '// 入力されているセル範囲を取得     Set r = ActiveSheet.UsedRange     '// 入力セル範囲をループし、1セルずつ処理     For Each c In r         '// 検索文字列を含む場合         If (InStr(1, c.Value, a_sFind) > 0) Then             '// 背景色を設定             c.Interior.Color = a_SetColor         End If     Next End Sub | 
使い方
“100”を含むセルにマゼンタ、”a”を含むセルに薄い緑を設定するサンプルです。
検索文字列によって色を変えたい場合は以下のように複数回呼び出すようにします。
| 1 2 3 4 | Sub SetBkColorSameStrTest()     Call SetBkColorSameStr("100", vbMagenta)     Call SetBkColorSameStr("a", RGB(150, 230, 200)) End Sub | 
実行前

実行後

カスタマイズ方法
上記の関数ではシート全体の入力セル範囲を対象としていますが、選択セル範囲を対象としたい場合は8行目の右辺を以下のように「Selection」に変更します。
変更前
| 7 8 |     '// 入力されているセル範囲を取得     Set r = ActiveSheet.UsedRange | 
変更後
| 7 8 |     '// 入力されているセル範囲を取得     Set r = Selection |