セルに条件付き書式を設定する方法
セルに条件書式を設定するには、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列挙型の定数で指定します
定数 | 内容 |
---|---|
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列挙型の定数で指定します
定数 | 内容 |
---|---|
xlYesterday | 昨日 |
xlToday | 今日 |
xlTomorrow | 明日 |
xlLast7Days | 過去7日間 |
xlLastWeek | 先週 |
xlThisWeek | 今週 |
xlNextWeek | 来週 |
xlLastMonth | 先月 |
xlThisMonth | 今月 |
xlNextMonth | 来月 |
以上で、条件付き書式の設定についての解説を終了します。ありがとうございました。