Replaceメソッド : 条件に一致するセルに書式を設定する

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

マクロの記録をすると、以下のパラメーターが記録されます。
FormulaVersion:=xlReplaceFormula2
公式のドキュメントにも記載がなく正体不明なうえに、エラー原因になることもあるようなので削除しておきましょう。
タイトルとURLをコピーしました