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
との組み合わせで指定します。これにより、テキストは変更しないで書式の設定のみの置換になります。