トップ > 汎用コード > セル内の任意の文字列に色を設定

セル内の任意の文字列に色を設定2023.05.31 更新日:2023.12.24

選択しているセル範囲の各セル内の任意の文字列に色を付けるマクロです。
任意の文字列(以下、検索文字列)は、コード内で定数として設定します。

対象のセル範囲を選択し、マクロ「ExampleOfUse_SetColorForCharacters」を実行すると、セル範囲を検索し、検索文字列に色を設定します。
シートが保護されているとエラーになるため、マクロを実行する場合には予めシートの保護を解除しておいてください。

■参考動画


【お薦め】マクロ・プロシージャを管理する無料のツール!
 Excelマクロ管理ツール

サンプルコード2023.05.31 更新日:2023.12.24

コードの貼り付け場所   VBAコードをカラーで印刷・Web掲載するためのツールはこちら

'------------------------------------------------------------------------------
' 実行マクロ
'------------------------------------------------------------------------------
Sub ExampleOfUse_SetColorForCharacters()
    
    '検索文字列
    Const C_WHAT As String = "市" '検索文字列はここで設定
    
    '選択しているオブジェクトがセルでなければ抜ける
    If TypeName(Selection) <> "Range" Then
        MsgBox "対象のセル範囲を選択してください", vbInformation, "終了します"
        Exit Sub
    End If
    
    'Rangeオブジェクトに選択セル範囲を設定
    Dim rngTarget As Range
    Set rngTarget = Selection
    
    'プロシージャの実行
    Dim strMessage As String
    strMessage = SetColorForCharacters(rngTarget, C_WHAT)

    '結果メッセージ
    If strMessage = "" Then
        MsgBox "実行完了しました。", vbInformation
    Else
        MsgBox strMessage, vbExclamation
    End If
End Sub

'------------------------------------------------------------------------------ ' セル内の任意の文字列に色を設定するプロシージャ '------------------------------------------------------------------------------ '[引数] ' Target:検索対象セル範囲 ' What :検索文字列 ' Color :文字列に設定する色番号(既定:赤) ' Start :各セル内で検索を開始する文字の位置(既定:1) ' Times :各セル内で色を設定する回数(既定:0:制限なし) '[戻り値] ' 成功:空の文字列 失敗:メッセージ '[作成日]2023/05/31 [更新日]2023/06/09 'https://excel.syogyoumujou.com/vba/set_charactersfontcolor.html '------------------------------------------------------------------------------ Function SetColorForCharacters(ByRef Target As Range, _ ByVal What As String, _ Optional Color As XlRgbColor = rgbRed, _ Optional Start As Long = 1, _ Optional Times As Long = 0) As String 'Target にセルが設定されていなければ抜ける If Target Is Nothing Then SetColorForCharacters = "セルオブジェクトが設定されていません" Exit Function End If '検索文字列が空の場合は抜ける If What = "" Then SetColorForCharacters = "検索文字列がありません" Exit Function End If Dim strAddress As String 'セルアドレス格納用 Dim lngStart As Long '検索スタート位置設定用 Dim lngPos As Long 'テキスト内の検索文字列位置格納用 Dim lngTimes As Long 'テキスト内での色設定回数 (セル毎) Dim lngLen As Long '検索文字列の長さ格納用 Dim rngFnd As Range '検索用 '検索文字列の文字数取得 lngLen = Len(What) '対象セル範囲から検索文字列を含むセルを検索 Set rngFnd = Target.Find(What:=What, _ LookIn:=xlValues, _ SearchOrder:=xlByRows, _ LookAt:=xlPart, _ MatchCase:=False, _ MatchByte:=False) '検索に一致するセルがなければ抜ける If rngFnd Is Nothing Then SetColorForCharacters = "対象の文字列はありません" Exit Function End If '最初に一致したセルのアドレスを取得 strAddress = rngFnd.Address On Error GoTo ERROR_HANDLER Do 'テキスト内の検索文字列に色を設定 lngStart = Start lngTimes = 0 Do 'テキストを検索 lngPos = InStr(lngStart, rngFnd.Value, What, vbTextCompare) 'テキスト内に検索文字列が見つからなかったら抜ける If lngPos = 0 Then Exit Do rngFnd.Characters(lngPos, lngLen).Font.Color = Color lngTimes = lngTimes + 1 '指定した設定回数に到達したら抜ける If lngTimes = Times Then Exit Do '検索スタート位置を再設定 lngStart = lngPos + lngLen Loop '対象セル範囲内で次の検索一致セルを検索 Set rngFnd = Target.FindNext(rngFnd) 'セルのアドレスが変数のアドレスと一致したらループを抜ける Loop Until strAddress = rngFnd.Address On Error GoTo 0 Exit Function ERROR_HANDLER: SetColorForCharacters = "エラーが発生しました" & vbLf & _ "エラー番号:" & Err.Number & vbLf & _ Err.Description Err.Clear End Function

SetColorForCharactersプロシージャの引数

Target
対象範囲のRangeオブジェクトを設定します。

What
色を設定する対象の文字列(検索文字列)を設定します。

Color
文字列に設定する色番号を設定します。
型はExcelの組み込み定数 XlRgbColor となります(引数の設定時にリスト表示されます)。
省略した場合には赤が自動設定されます。

Start
各セル内で、検索を開始する文字の位置です。
省略した場合には1文字目から検索を開始します。

Times
一つのセル内で検索文字列に色をつける回数の設定です。
省略した場合には「Start」以後の全ての検索文字列を対象とします。

ページトップへ戻る

Excel 汎用コード

Copyright(C) 2009- 坂江 保 All Rights Reserved.