【VBA】指定した文字列のフォントを変更する

例えば
シート上の文字列「要注意」のみに対し…

実行前
実行前

VBAでフォントを
 ・赤くしたり
 ・太字にしたり
できます!

実行後(指定した文字列のみのフォントを赤色にして太字にした)
実行後(指定した文字列のみのフォントを赤色にして太字にした)
PR

VBAコード

ここでは例として、
 ・指定したシート(例:sample)上の
 ・指定した文字列(例:要注意)を
 ・太字及び指定した色(例:赤)へ
変更します。

シート「sample」の内容
シート「sample」の内容
Option Explicit

Sub main()
    
    '文字列のフォントを変更する処理を実行
    Call changeStrFont("sample", "要注意", XlRgbColor.rgbRed)

End Sub

'----------------------------------------------------------------------
'文字列のフォントを変更する処理
'引数「sheetName」:シート名
'引数「targetStr」:フォントを変更したい文字列
'引数「color」  :色
'----------------------------------------------------------------------
Sub changeStrFont(sheetName As String, targetStr As String, color As Long)

    Dim targetStrLen As Integer   '「フォントを変更したい文字列」の文字数
    Dim r As Range
    Dim index As Double           '開始位置
    Dim fontObj As Font           '文字列のFontオブジェクト
    
    '文字列の文字数を取得
    targetStrLen = Len(targetStr)
    
    '使用されているセル範囲のセルの数分繰り返す
    For Each r In Worksheets(sheetName).UsedRange
    
        '開始位置を1に初期化
        index = 1
        
        Do
            '文字列の開始位置を取得
            index = InStr(index, r.Value, targetStr)
            
            '文字列の開始位置が0かどうか(=存在するかどうか)を確認
            If (index <> 0) Then
                '文字列のFontオブジェクトを取得
                Set fontObj = r.Characters(index, targetStrLen).Font
                '文字列のフォントを変更
                With fontObj
                    .color = color '色を変更
                    .Bold = True   '太くする
                End With
                '同じセル内に他にも文字列が存在するか確認するために、開始位置をずらす
                index = index + targetStrLen
            Else
                '次のセルへ進む(Doループを抜けてFor Eachループを進める)
                Exit Do
            End If

        Loop
        
    Next
    
    '後片付け
    Set fontObj = Nothing

End Sub

「Worksheets(XXX).UsedRange」によって、そのシート上で使用されているセル範囲を取得します(27行目)。
※ここでは取得したセル範囲を使用して、セルの数分繰り返し処理をします。

「Range(XXX).Characters(XXX,XXX).Font」によって、セル内の指定した文字列のみに対し処理をします(39行目)。

PR

実行結果

指定した文字列のフォントを変更できました。

実行後(指定した文字列のみのフォントを赤色にして太字にした)
実行後(指定した文字列のみのフォントを赤色にして太字にした)
PR

参考①

上記で使用した以下の詳細は、公式サイトをご確認ください。

●「Worksheets(XXX).UsedRange」


●「Range(XXX).Characters(XXX,XXX)」

PR

参考②

上記のVBAコードでは、色の指定に列挙体「XlRgbColor」を使用しています。

列挙体「XlRgbColor」の詳細は、以下の記事をご確認ください。

PR

参考③

列挙体そのものについては、以下の記事をご確認ください。