Excel VBA(マクロ)でセル・範囲に条件付き書式を設定・追加する方法/FormatConditions.Addメソッドの使い方

brushes IT

VBAでセルに条件付き書式を追加したい場合は、FormatConditionsコレクション参考)のAddメソッドを実行します。
この記事では、セルの値を判定する例(値が一致、以上以下など)を作りたいと思います。他のTypeについては別途記事作る予定です。

スポンサーリンク

FormatConditions.Addメソッド

基本形(セルの値)

条件付き書式の作成(セルの値)
FormatConditions.Add(Type:=xlCellValue,Operator,Formula1,Formula2).適用する書式
条件付き書式 マクロ1
A1セルに何も条件付き書式が設定されていない状態から始めます。
条件付き書式 マクロ2
まずは範囲の指定ですが、RangeやCellsの後にFormatConditionsをくっつければ、(範囲の)条件付き書式の集合であるFormatConditionsコレクションが取得されます。
コレクションという概念についてここで解説はしませんが、とりあえずわからなくても問題ないです。
条件付き書式 マクロ3
オブジェクト.FormatConditionsの後ろにAddを付けると、指定範囲条件付き書式追加するという意味になります。本来どういった書式を追加するかなどを追加指定していくんですが、
' vba
Range("A1").FormatConditions.Add 1, 3, 1
それは後にして、まず簡単なコードを用意しました。これを実行してみます。
条件付き書式 マクロ5
実行後にA1セルの条件付き書式を確認すると、書式こそ指定されていないものの、条件付き書式が作成されていることがわかります。
条件付き書式 マクロ6
さらに書式の中身を確認すると、①セルの値②1③一致する場合、書式を変更する設定になっています。
先ほどのコードでいう最後の1、3、1が、それぞれ①③②を意味しています。
' vba
Range("A1").FormatConditions.Add Type:=1, Operator:=3, Formula1:=1
メソッドの引数にはそれぞれ名前があり、決められた順番で書く以外にもフィールド名で指定する書き方もあります。
フィールド名を指定するとこういった書き方になります。
①ルール(セルの値)のフィールド名がType
②参照する値がFormula1
③条件(一致する)がOperatorとなります。
' vba
Range("A1").FormatConditions.Add Type:=1, Operator:=4, Formula1:=10
少し値を変更してみます。Typeはそのまま、Operatorを4に、Formula1を10に変更してみます。
条件付き書式 マクロ7
実行結果を見ると、条件が変化していることが確認できます。

Type

Typeでは、ルールの種類を数字またはXlFormatCondition列挙型定数で指定できます。

定数名 内容
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

Operatorでは、条件付き書式の演算子を数字またはXlFormatConditionOperator列挙型定数で指定できます。
演算子を使わない条件付き書式では使用しません。

定数名 内容
xlBetween 1 値の間(Folmula2必須)
xlNotBetween 2 値の間以外(Folmula2必須)
xlEqual 3 次の値と等しい
xlNotEqual 4 次の値と等しくない
xlGreater 5 次の値より大きい
xlLess 6 次の値より小さい
xlGreaterEqual 7 次の値以上
xlLessEqual 8 次の値以下

Formula1、Formula2

条件付き書式 マクロ8
Formula1Formula2は演算で仕様する値です。対象の値がひとつしかない場合、Formula2は設定できません。
条件付き書式 マクロ9
Formula2も指定する例としてはこのようになり、
' vba
Range("A1").FormatConditions.Add Type:=xlCellValue, _
Operator:=xlBetween, _
Formula1:=1, _
Formula2:=5
上の例をコードで実装するとこのようになります。
xlCellValueおよびxlBetweenは値でいうと1です。定数名、値、どちらでも引数は指定できます。

ここまでで条件の設定の説明は一旦終わり、次に書式の設定に移ります。

書式の指定

条件付き書式 マクロ10
条件を満たした場合の書式を指定するには、まずAddの後の引数部分を全部()で閉じます。これだけだと構文エラーになりますが、
' vba
Range("A1").FormatConditions.Add(Type:=xlCellValue, _
Operator:=xlBetween, _
Formula1:=1, Formula2:=5).Font.Bold = True
)の後ろに指定したい書式を記述すると、実行可能な状態になります。
Font.Bold = Trueは文字を太字にする命令です(TrueでON、FalseでOff)。
条件付き書式 マクロ11
実行すると、A1セルに条件付き書式が適用されていて、書式も反映されることが確認できます。
' vba
With Range("A1").FormatConditions.Add(Type:=xlCellValue, _
Operator:=xlBetween, _
Formula1:=1, Formula2:=5)
.Font.Color = RGB(200, 0, 0)
.Interior.Color = RGB(30, 30, 250)
End With
もし複数の書式を指定したい場合は、Withステートメントでまとめて設定することができます。色変更についはこちら
条件付き書式 マクロ12
複数の条件付き書式がひとつのセルにある場合、先に指定した(優先順位の高い)条件付き書式が反映されるのでご注意ください。

関連記事

Excel(エクセル):条件付き書式
Excelの条件付き書式は、読んで字のごとく「特定の条件を満たした時にだけ指定した書式を適用する」機能です。また、セルの内容をより視覚的に表現する機能もいくつか用意されています。 書式には罫線、フォント、文字色、背景色などが含まれ、十分に...
関数・演算子・メソッド・プロパティ名から探すExcel/VBA(マクロ)使い方・組み合わせ方まとめ
こちらはExcelやメソッドの諸機能を、機能の名称から探せるまとめ記事です。
やりたいことから方法を探すエクセル(Excel)操作・関数・VBA(マクロ)逆引きまとめ
逆引き(やりたいことから探す)Excel記事まとめ

コメント