数値だけでなく、文字列(テキスト)に基づいて書式を変更することも可能です。
例えば「セルに ‘完了’ と入力されたら緑色にする」や「セルに ‘エラー’ を含む場合は赤背景にする」といった条件付き書式を、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を使えば複雑な文字列判定も可能になり、管理や自動化に便利。
コメント