Range.FormatConditions.Addメソッド
条件付き書式の設定を行うにはRangeオブジェクトの条件付き書式を管理するFormatConditionsコレクションのAddメソッドを使います。
Addメソッドは「条件付き書式ルールの管理」ダイアログの「新規ルール」ボタンに該当します。

AddメソッドによりFormatConditionオブジェクトが返されます。この時点でFormatConditionsコレクションに追加された状態になります。上の画像に追加した場合はFormatConditions(4)が追加された状態になります。
あとは書式の設定をFormatConditionオブジェクトのFontプロパティ(文字設定)、Interiorプロパティ(背景色)、Borderプロパティ(罫線)などの設定を行います。ここは書き方に特徴があるためサンプルコードを参照してください。
構文
Excel2003までの場合
|
Function Range.FormatConditions.Add(Type As XlFormatConditionType, [Operator As XLFormatConditionOperator], [Formula1], [Formula2]) As FormatCondition |
Excel2007以降
|
Function Range.FormatConditions.Add(Type As XlFormatConditionType, [Operator As XLFormatConditionOperator], [Formula1], [Formula2], [String], [TextOperator As XlContainsOperator], [DateOperator As XlTimePeriods], [ScopeType As XlPivotConditionScope]) As FormatCondition |
AddメソッドはExcel2003までは引数が4個ですが、2007以降では8個に増えています。
しかし、Microsoftのヘルプでは4個までしか記載がありません。
https://msdn.microsoft.com/ja-jp/VBA/Excel-VBA/articles/formatconditions-add-method-excel
ヘルプに書いていない分も含めて引数は以下で説明します。
Type |
条件付き書式の種類をXlFormatConditionType列挙型の定数で指定します。
定数 |
値 |
内容 |
xlAboveAverageCondition |
12 |
平均以上 |
xlBlanksCondition |
10 |
空白 |
xlCellValue |
1 |
セル値 |
xlColorScale |
3 |
カラースケール |
xlDatabar |
4 |
データバー |
xlErrorsCondition |
16 |
エラー条件 |
xlExpression |
2 |
演算 |
xlIconSets |
6 |
アイコンセット |
xlNoBlanksCondition |
13 |
空白条件なし |
xlNoErrorsCondition |
17 |
エラー条件なし |
xlTextString |
9 |
文字列 |
xlTimePeriod |
11 |
期間 |
xlTop10 |
5 |
上位10位 |
xlUniqueValues |
8 |
一意値 |
|
Operator |
条件付き書式の演算子をXLFormatConditionOperator列挙型の定数で指定します。引数TypeがxlExpressionの場合は無視されます。省略可能です。
定数 |
値 |
内容 |
xlBetween |
1 |
範囲内 |
xlEqual |
3 |
等しい |
xlGreater |
5 |
次の値より大きい |
xlGreaterEqual |
7 |
以上 |
xlLess |
6 |
次の値より小さい |
xlLessEqual |
8 |
以下 |
xlNotBetween |
2 |
範囲外 |
xlNotEqual |
4 |
等しくない |
|
Formula1 |
条件の値となる数値、文字列、セル参照、数式を設定します。省略可能です。 |
Formula2 |
引数OperatorがxlBetween(範囲内)、または、xlNotBetween(範囲外)の場合に引数Formula1に対応する値を設定します。省略可能です。 |
String |
引数TypeでxlTextString(文字列)を指定した場合に対象となる文字列を指定します。この場合は引数Formula1と引数Formula2は無視されます。省略可能です。 |
TextOperator |
引数TypeでxlTextString(文字列)を指定した場合に引数Stringの判定方法をXlContainsOperator列挙型で指定します。省略可能です。
定数 |
値 |
内容 |
xlBeginsWith |
2 |
ではじまる |
xlContains |
0 |
を含む |
xlDoesNotContain |
1 |
を含まない |
xlEndsWith |
3 |
で終わる |
|
DateOperator |
引数TypeでxlTimePeriod(期間)を指定した場合に対象の期間をXlTimePeriods列挙型で指定します。省略可能です。
定数 |
値 |
内容 |
xlLast7Days |
2 |
過去7日間 |
xlLastMonth |
5 |
先月 |
xlLastWeek |
4 |
先週 |
xlNextMonth |
8 |
来月 |
xlNextWeek |
7 |
来週 |
xlThisMonth |
9 |
今月 |
xlThisWeek |
3 |
今週 |
xlToday |
0 |
今日 |
xlTomorrow |
6 |
明日 |
xlYesterday |
1 |
昨日 |
|
ScopeType |
条件付き書式がピボットテーブルに対して適用する場合に、XlPivotConditionScope列挙型で指定します。
定数 |
値 |
内容 |
xlDataFieldScope |
2 |
指定されたフィールドのデータに基づく |
xlFieldsScope |
1 |
指定されたフィールドに基づく |
xlSelectionScope |
0 |
指定された選択基準に基づく |
|
サンプルコード
A列に1を入力した場合に、セルの背景色などを設定するサンプルコードです。
|
Sub FormatCollectionsAddTest() Dim r As Range Dim f As FormatCondition '// 対象範囲指定 Set r = Range("A:A") '// 条件付き書式の追加(セルに1が入力された場合) Set f = r.FormatConditions.Add(Type:=xlCellValue, Operator:=xlEqual, Formula1:=1) '// フォント太字、文字色、背景色 f.Font.Bold = True f.Font.Color = RGB(20, 140, 150) f.Interior.Color = RGB(200, 250, 180) f.Borders.LineStyle = xlContinuous End Sub |
実行結果
条件付き書式の設定は以下のように登録されます。

この状態でA列に1を入力すると以下のようになります。
