Replaceメソッドで、テキストを置換するのではなく書式(フォントの色やセルの色など)を設定するマクロです。[検索と置換]ダイアログボックスの操作と同等なのですが、いくつかのノウハウや注意点があるので、そうした事柄を中心に紹介します。
Sub デスクトップ上ファイルの参照をマーク()
Const sFind As String = "C:\*\Desktop\"
Dim rngFml As Range
Dim i As Long
Set rngFml = ActiveSheet.Cells.SpecialCells(xlCellTypeFormulas, 23)
With Application.ReplaceFormat
.Clear
.Font.Color = RGB(255, 0, 0)
End With
rngFml.Cells.Replace _
What:=sFind, _
Replacement:="", _
LookAt:=xlPart, _
MatchCase:=False, _
SearchFormat:=False, _
ReplaceFormat:=True
End Sub
検出できるテキスト/できないテキスト
検索対象は数式だけになります。(FindメソッドにはLookInパラメータがありますがReplaceメソッドにはありません)
ここでの「数式」とは「セルに入力されたテキスト」を指します。例えば「abc」を検索したとき、「abcde」や「="abcde"」「=LEFT("abcde",2)」は検出されます。「="ab"&"cde"」は検出されません。
Whatパラメーターに使えるワイルドカード
Whatパラメーター には検索テキストを指定しますが、これには次の2種類のワイルドカードを使えます。
* : 0文字以上の任意の文字に合致
? : 1文字の任意の文字に合致
Range.Replace 検索の対象セル
Cells.Replace とすると、シート内の全セルを検索対象にできます。
特定の範囲を指定して、検索でさらに絞り込むような使い方もできます。サンプルでは、数式が入力されたセルだけを検索対象にしています( SpecialCells(xlCellTypeFormulas, 23) )。 これにより、直接入力された値を対象から除外しています。
書式を変更する場合
Application.ReplaceFormat で、置換で適用する書式を指定します。
Replacement:="" と ReplaceFormat:=True との組み合わせで指定します。これにより、テキストは変更しないで書式の設定のみの置換になります。

