〖ExcelVBA〗特定文字列を含む行だけ色付けするマクロ|エラー・注意行を自動で強調表示

ExcelVBA

Excelで一覧表を見ていると、 特定のキーワードを含む行だけを目立たせたい と思うことはありませんか?

たとえば、次のようなケースです。

  • 「未対応」「エラー」「要確認」と書かれた行を目立たせたい
  • クレーム・注意事項を含むデータだけ色付けしたい
  • 重要なステータスの行を一瞬で判別したい

条件付き書式でも対応できますが、 文字列が複雑だったり、毎回同じ処理をしたい場合はVBAのほうが便利です。

そこで今回は、指定した文字列を含む行だけを自動で色付けするExcelVBAマクロをご紹介します。


スポンサーリンク
スポンサーリンク

この記事でできること

  • 指定列に特定文字列が含まれているかを判定
  • 該当行だけ背景色を変更
  • 部分一致(含まれていればOK)に対応
  • 色・列・キーワードを自由に変更可能

想定するデータ例

例として、次のような表を想定します。

この中で、
C列に「未対応」という文字列を含む行だけを色付けします。


特定文字列を含む行だけ色付けするマクロ(コピペOK)

以下のコードを標準モジュールに貼り付けてください。

Option Explicit

Sub HighlightRowsByKeyword()

    Dim ws As Worksheet
    Dim lastRow As Long
    Dim r As Long

    ' ===== 設定項目 =====
    Set ws = ActiveSheet
    Const TARGET_COL As Long = 3      ' 判定する列(C列=3)
    Const KEYWORD As String = "未対応" ' 検索する文字列
    Const COLOR_R As Long = 255        ' 色(赤)
    Const COLOR_G As Long = 230
    Const COLOR_B As Long = 230
    ' ====================

    ' 最終行を取得(A列基準)
    lastRow = ws.Cells(ws.Rows.Count, 1).End(xlUp).Row

    ' 行ごとにチェック
    For r = 2 To lastRow

        If InStr(ws.Cells(r, TARGET_COL).Value, KEYWORD) > 0 Then
            ' 行全体を色付け
            ws.Rows(r).Interior.Color = RGB(COLOR_R, COLOR_G, COLOR_B)
        Else
            ' 該当しない行は色を解除
            ws.Rows(r).Interior.ColorIndex = xlColorIndexNone
        End If

    Next r

    MsgBox "色付けが完了しました。", vbInformation

End Sub

コード解説(初心者向け)

① InStr で「文字列を含むか」を判定

If InStr(ws.Cells(r, TARGET_COL).Value, KEYWORD) > 0 Then

InStr は、 「指定した文字列が含まれているかどうか」を調べる関数です。

  • 含まれている → 1以上
  • 含まれていない → 0

完全一致ではなく、部分一致で判定できるのがポイントです。


② 行全体を色付けする方法

ws.Rows(r).Interior.Color = RGB(255, 230, 230)

この指定で、 該当する行すべてのセルが色付けされます。


③ 設定項目を変えるだけで使い回せる

次の部分を変更すれば、どんな表にも対応できます。

  • TARGET_COL:判定したい列
  • KEYWORD:探したい文字列
  • RGB:色

応用例

① 複数のキーワードを対象にしたい

If InStr(cell.Value, "未対応") > 0 _
   Or InStr(cell.Value, "要確認") > 0 Then

② 大文字・小文字を区別せずに判定したい

If InStr(1, cell.Value, KEYWORD, vbTextCompare) > 0 Then

③ 色付けではなく文字色を変えたい

ws.Rows(r).Font.Color = RGB(255, 0, 0)

実行手順

  1. 対象のデータがあるシートを表示
  2. Alt + F11 → VBAエディタを起動
  3. 「挿入」→「標準モジュール」
  4. マクロを貼り付け
  5. HighlightRowsByKeyword を実行

まとめ:重要な行はVBAで一瞬で見える化

特定の文字列を含む行だけを色付けできると、

  • チェック漏れが減る
  • 作業効率が上がる
  • 目視確認が楽になる

というメリットがあります。

条件付き書式が合わないケースでも、 VBAなら柔軟にルールを作れるのが強みです。

ぜひ、あなたのExcel業務に取り入れてみてください。

スポンサーリンク
スポンサーリンク
ExcelVBA
いがぴをフォローする

コメント

タイトルとURLをコピーしました