VBA セルに条件付き書式を設定する

スポンサーリンク

セルに条件付き書式を設定する方法

セルに条件書式を設定するには、Range【レンジ】オブジェクトに含まれる条件付き書式の集まりであるFormatConditions【フォーマットコンディションズ】コレクションのAdd【アド】メソッドを使用して、条件付き書式を表すFormatCondition【フォーマットコンディション】オブジェクトを作成します。

作成したFormatCondition【フォーマットコンディション】オブジェクトに対して、Font【フォント】プロパティ、Interior【インテリア】プロパティ、Border【ボーダー】プロパティなどを使用して書式を設定します。

FormatConditionsコレクションのAddメソッドの書式と設定値(引数)の説明

[]内は省略可能です。
オブジェクト.Add(type[,Operator,Formula1,Formula2])
【戻り値】FormatCondition【フォーマットコンディション】オブジェクト

  • オブジェクト(必須)
    条件付き書式の集まりであるFormatConditions【フォーマットコンディションズ】コレクションを指定します。
  • TYpe【タイプ】(必須)
    条件書式の種類をxlFormatConditionType列挙型の定数で指定します。

    xlFormatConditionType列挙型の定数
    定数 内容
    xlCellValue 1 セルの値
    xlExpression 2 演算
    xlColorScale 3 カラースケール
    xlDatabar 4 データバー
    xlTop10 5 上位10の値
    XlIconSet 6 アイコンセット
    xlUniqueValues 8 一意の値
    xlTextString 9 テキスト文字列
    xlBlanksCondition 10 空白の条件
    xlTimePeriod 11 期間
    xlAboveAverageCondition 12 平均以上の条件
    xlNoBlanksCondition 13 空白の条件なし
    xlErrorsCondition 16 エラー条件
    xlNoErrorsCondition 17 エラー条件なし
  • Operator【オペレーター】(省略可)
    条件付き書式の演算子をxlFormatCondithionOperator列挙型の定数で指定します。引数TypeがxlExpressionの場合は、この設定は無視されます。

    xlFormatCondithionOperator列挙型の定数
    定数 内容
    xlBetween 1 範囲内
    xlNotBetween 2 範囲外
    xlEqual 3 等しい
    xlNotEqual 4 等しくない
    xlGreater 5 次の値より大きい
    xlLess 6 次の値より小さい
    xlGreaterEqual 7 以上
    xlLessEqual 8 以下
  • Formula1【フォーミュラワン】(省略可)
    条件となる値を指定します。数値、文字列、セル参照、数式を使って指定します。
  • Formula2【フォーミュラツゥ】(省略可)
    引数OperatorがxlBetweenまたはxlNotBetweenのときに2つめの条件となる値を設定します。

条件付き書式は、指定したセル範囲に複数指定することができます。条件書式を設定するプロシージャを実行すると、実行のたびに条件付き書式が追加されます。

条件付き書式を削除する方法

指定されたセル範囲に設定されている条件書式を削除するには、FormatConditions【フォーマットコンディションズ】コレクションのDelete【デリイト】メソッドを使用して以下のように記述します。
セル範囲.FormatConditions.Delete
シート全体の設定されている条件書式を削除するには、「Cells.FormatConditions.Delete」と記述します。

不要な条件付き書式を削除しておく方法

条件付き書式を追加すると、すでに設定されている条件付き書式に加えて新しく条件付き書式が追加されます。複数の条件付き書式を追加するのでなければ、不要な条件付き書式を削除してから設定し直します。

選択範囲にすでに条件書式が設定されているかを、FormatConditions【フォーマットコレクションズ】コレクションのCount【カウウント】プロパティで調べ、値が0でなかったら(条件付き書式が設定されていたら)設定されている条件付き書式を削除するコード例は以下のようになります。

A列の2行目から条件があることを想定して、条件付き書式が設定されていたら条件付き書式を削除するコード例

Sub 条件削除()
Dim 最終行 As Long
最終行 = Cells(Rows.Count, 1).End(xlUp).Row
If Range("A2", "A" & 最終行).FormatConditions.Count <> 0 Then
Range("A2", "A" & 最終行).FormatConditions.Delete
End If
End Sub

A列のセルの値が100より大きい場合に文字を太くして背景色を赤にするコード例

Sub 条件書式1()
Dim 最終行 As Long
最終行 = Cells(Rows.Count, 1).End(xlUp).Row
If Range("A2", "A" & 最終行).FormatConditions.Count <> 0 Then
Range("A2", "A" & 最終行).FormatConditions.Delete
End If
With Range("A2", "A" & 最終行).FormatConditions.Add _
(Type:=xlCellValue, Operator:=xlGreater, Formula1:=100)
.Font.Bold = True
.Interior.Color = RGB(250, 0, 0)
End With
End Sub

引数typeをxltextString(テキスト文字例)に設定した場合のコード例

A列に文字列「山」が含まれている文字列のフォントを太くして背景を赤にする例

Sub 条件書式2()
Dim 最終行 As Long
最終行 = Cells(Rows.Count, 1).End(xlUp).Row
If Range("A2", "A" & 最終行).FormatConditions.Count <> 0 Then
Range("A2", "A" & 最終行).FormatConditions.Delete
End If
With Range("A2", "A" & 最終行).FormatConditions.Add _
(Type:=xlTextString, String:="山", TextOperator:=xlContains)
.Font.Bold = True
.Interior.Color = RGB(250, 0, 0)
End With
End Sub

  • 引数Typeの条件をxlTextStringでテキスト文字列にした場合
    引数TextOperatorで引数Stringに対する条件の判断方法をxlContainsOperator列挙型の定数で指定します
xlContainsOperator列挙型の定数
定数 内容
xlContains を含む
xlDoesNotContain を含まない
xlBeginsWith ではじまる
xlEndsWith で終わる

指定した期間の場合に書式を設定する

A列に入力されている日付で今週の文字を太くしてセルを赤く塗りつぶすコード例

Sub 条件書式日付()
Dim 最終行 As Long
最終行 = Cells(Rows.Count, 1).End(xlUp).Row
If Range("A2", "A" & 最終行).FormatConditions.Count <> 0 Then
Range("A2", "A" & 最終行).FormatConditions.Delete
End If
With Range("A2", "A" & 最終行).FormatConditions.Add _
(Type:=xlTimePeriod, DateOperator:=xlThisWeek)
.Font.Bold = True
.Interior.Color = RGB(250, 0, 0)
End With
End Sub
  • 引数Typeの条件をxlTimePeriodで期間にした場合
    引数DateOperatorで期間をxlTimePeriod列挙型の定数で指定します
xlTimePeriod列挙型の定数
定数 内容
xlYesterday 昨日
xlToday 今日
xlTomorrow 明日
xlLast7Days 過去7日間
xlLastWeek 先週
xlThisWeek 今週
xlNextWeek 来週
xlLastMonth 先月
xlThisMonth 今月
xlNextMonth 来月

以上で、条件付き書式の設定についての解説を終了します。ありがとうございました。

スポンサーリンク

関連記事・広告