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

スポンサーリンク
スポンサーリンク

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

セルに条件書式を設定するには、
Rangeオブジェクトに含まれる条件付き書式の集まりである
FormatConditions【フォーマットコンディションズ】コレクションの
Add【アド】メソッドを使用して
FormatCondition【フォーマットコンディション】オブジェクトを作成します。
作成したFormatConditionオブジェクトに対して
Font【フォント】プロパティ、Interior【インテリア】プロパティ
Border【ボーダー】プロパティなどを使用して書式を設定します。

FormatConditionsコレクションのAddメソッドの書式

[]内は省略可能です。
オブジェクト.Add(type[,Operator,Formula1,Formula2])
【戻り値】FormatConditionオブジェクト


設定値(引数)の説明

  • オブジェクト
    FormatConditions【フォーマットコンディションズ】コレクションを指定します。
  • TYpe
    xlFormatConditionType列挙型の定数で指定します。
xlFormatConditionType列挙型の定数
定数内容
xlCellValue1セルの値
xlExpression2演算
xlColorScale3カラースケール
xlDatabar4データバー
xlTop105上位10の値
XlIconSet6アイコンセット
xlUniqueValues8一意の値
xlTextString9テキスト文字列
xlBlanksCondition10空白の条件
xlTimePeriod11期間
xlAboveAverageCondition12平均以上の条件
xlNoBlanksCondition13空白の条件なし
xlErrorsCondition16エラー条件
xlNoErrorsCondition17エラー条件なし
  • Operator【オペレーター】
    条件付き書式の演算子を
    xlFormatCondithionOperator列挙型の定数で指定します。

    引数TypeがxlExpressionの場合は、この設定は無視されます。
xlFormatCondithionOperator列挙型の定数
定数内容
xlBetween1範囲内
xlNotBetween2範囲外
xlEqual3等しい
xlNotEqual4等しくない
xlGreater5次の値より大きい
xlLess6次の値より小さい
xlGreaterEqual7以上
xlLessEqual8以下
  • Formula1【フォーミュラワン】
    条件となる値を指定します。
    数値、文字列、セル参照、数式を使って指定します。
  • Formula2【フォーミュラツゥ】
    引数OperatorがxlBetweenまたはxlNotBetweenのときに
    2つめの条件となる値を設定します。

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

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

指定されたセル範囲に設定されている条件書式を削除するには
セル範囲.FormatConditions.Delete」と記述します。
シート全体の設定されている条件書式を削除するには
Cells.FormatConditions.Delete」と記述します。

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

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

選択範囲にすでに条件書式が設定されているかを
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来月

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

スポンサーリンク
スポンサーリンク

フォローする

スポンサーリンク
スポンサーリンク