【VBA】選択範囲内の指定文字列の色を変更する

サンプルプログラム概要

・選択範囲はプログラムの中で指定する
・色の変更と一緒に太字にする

サンプルプログラム

Option Explicit

Sub sample()
    
    Dim color As Long
    Dim targetStr As String
    
    '選択範囲を指定
    range("A1:A10").Select
    
    '文字列を指定
    targetStr = "aiueo"
    
    '色を指定
    color = RGB(255, 0, 0)     '赤
    'color = RGB(0, 0, 255)     '青
    'color = RGB(0, 153, 0)     '緑
    'color = RGB(102, 0, 102)   '紫
    'color = RGB(255, 102, 0)   'オレンジ
    'color = RGB(153, 102, 0)   '茶色
    'color = RGB(255, 51, 153)  'ピンク
    'color = RGB(153, 153, 255) '水色
    'color = RGB(153, 153, 0)   '黄緑
    'color = RGB(102, 102, 102) '灰色
    
    '文字色を変更
    Call fontChange(targetStr, color)
    
    'フォーカスをセル「A1」にする
    range("A1").Select

End Sub


'文字色を変更
Sub fontChange(targetStr As String, color As Long)

    Dim fontObj As Font            'Fontオブジェクト
    Dim i As Integer               '対象文字列のセルの位置
    Dim targetStrLen As Integer    '対象文字列の文字数
    Dim range As range             'セル範囲の1セル
    
    targetStrLen = Len(targetStr)
    
    '選択範囲を1セルずつ繰り返し
    For Each range In Selection
        
        '検索開始位置を1に初期化
        i = 1
        
        'セル内の文字列から対象文字列を全て検索
        Do
            'セル内の文字列から対象文字列を検索
            i = InStr(i, range.Value, targetStr)
            
            '対象文字列が存在しない場合、次のセルへ進む
            If (i = 0) Then
                Exit Do
            End If
            
            '対象文字列部分のFontオブジェクトを取得
            Set fontObj = range.Characters(i, targetStrLen).Font
            
            'フォント設定
            fontObj.color = color  '// 文字色
            fontObj.Bold = True    '// 太さ
            
            '次検索用に検索開始位置をずらす
            i = i + targetStrLen
        Loop
    Next
End Sub

実行前

実行後

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