Excel内の検索文字の文字の色を変更するVBAのサンプルコード

VBA
記事内に広告が含まれています。

セル全体の色を変える方法はよく見かけるのですが、セル内の検索した文字列だけ色を変えるマクロはなかなか見かけないので、サンプルコードを作成してみました。

仕様

「検索文字」の欄に文字列を入力してボタンを押下すると、検索ヒットした一覧表のセル内の文字列を赤字にしてみます。

セル内に複数の検索結果があっても、ヒットした文字列の色を全て変更するのがポイントです。

ソースコード

基本的な構文は下記のとおりです。

Cells(行,列).Characters(Start:=num1, Length:=num2).Font.Color = RGB(numR,numG,numB)

これを使って、サンプルコードを記述しました。

Sub changeColor()
    
    Dim target As String
    Dim targetLength As Integer
    
    '検索対象
    target = Range("B2").Value
    '長さ
    targetLength = Len(target)
    
    '表の最後までループする
    Dim i As Long
    For i = 6 To Cells(Rows.Count, 1).End(xlUp).Row
        
        Dim strStartPosition As Long
        
        Do
            'セル内を文字列検索する
            strStartPosition = InStr(strStartPosition + 1, Cells(i, 2), target, vbBinaryCompare)
        
            'セル内に検索対象が存在する場合
            If strStartPosition <> 0 Then
                '赤色に色づけする
                Cells(i, 2).Characters(Start:=strStartPosition, Length:=targetLength).Font.Color = RGB(255, 0, 0) '赤
                'セル内の検索位置を1文字ずらす
                strStartPosition = strStartPosition + 1
            
            End If
        
        Loop Until strStartPosition = 0
            
    Next

End Sub

テスト実行

こちらをテスト実行してみます。

実行前

実行前は、何も色付けされていません。

なお、検索文字は「博多」にしてみました。

実行後

実行すると、「博多」という文字列が存在するセル内の文字に色付けされました。

もちろん、その他の文字列でも大丈夫です。

※「市」で検索してみました。

参考情報

環境

下記の環境で作成・実行しております。

No.環境バージョン
1OSWindows10
2ExcelExcel2016
環境一覧

以上です。