【VBA】文字列に対する条件付き書式(完全一致・部分一致)

数値だけでなく、文字列(テキスト)に基づいて書式を変更することも可能です。
例えば「セルに ‘完了’ と入力されたら緑色にする」や「セルに ‘エラー’ を含む場合は赤背景にする」といった条件付き書式を、VBAで操作できます。


1. 完全一致(例:セルが「完了」のとき緑色)

Sub 条件付き書式_文字列一致()
    Dim rng As Range
    Set rng = Range("A1:A10") '対象範囲を指定
    
    '既存の条件付き書式を削除
    rng.FormatConditions.Delete
    
    '条件付き書式を追加(数式を利用)
    rng.FormatConditions.Add _
        Type:=xlExpression, _
        Formula1:="=$A1=""完了"""
    
    '書式を設定(緑背景)
    rng.FormatConditions(1).Interior.Color = RGB(200, 255, 200)
End Sub

ポイント

  • Type:=xlExpression を使い、数式を条件にする。
  • Formula1:="=$A1=""完了""" とすることで、「セルの値が完了と等しい」場合に適用。
  • ダブルクォーテーション "" を重ねて文字列を指定。

2. 部分一致(例:「エラー」を含むとき赤字)

Sub 条件付き書式_文字列部分一致()
    Dim rng As Range
    Set rng = Range("A1:A10")
    
    '既存の条件付き書式を削除
    rng.FormatConditions.Delete
    
    '条件付き書式を追加(数式を利用)
    rng.FormatConditions.Add _
        Type:=xlExpression, _
        Formula1:="=ISNUMBER(SEARCH(""エラー"", $A1))"
    
    '書式を設定(赤字)
    rng.FormatConditions(1).Font.Color = vbRed
End Sub

ポイント

  • SEARCH("エラー", $A1) は「セル内に ‘エラー’ が含まれている位置」を返す。
  • ISNUMBER は、その結果が数値ならTRUE(つまり「エラー」が含まれている)。
  • これにより部分一致が可能。

3. 応用例

  • 「未対応」を含むセルを黄色背景
    rng.FormatConditions.Add _
    Type:=xlExpression, _
    Formula1:="=ISNUMBER(SEARCH(""未対応"", $A1))" rng.FormatConditions(2).Interior.Color = RGB(255, 255, 150)
  • 大文字・小文字を区別したい場合
    • SEARCH → 大文字小文字を区別しない
    • FIND → 大文字小文字を区別する

4. 注意点

  • 文字列判定は 数式(xlExpression) を使う必要がある。
  • 参照セルは $A1 のように固定・相対を正しく指定する。
  • 複数条件を設定したい場合は FormatConditions.Add を繰り返す。

5. まとめ

  • 完全一致 → =$A1="完了"
  • 部分一致 → =ISNUMBER(SEARCH("文字列", $A1))
  • VBAを使えば複雑な文字列判定も可能になり、管理や自動化に便利。

コメント

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