Range.FormatCondition.Modifyメソッド

既に登録されている条件付き書式の編集を行うにはRangeオブジェクトの条件付き書式を管理するFormatConditionオブジェクトのModifyメソッドを使います。

条件付き書式の設定を行うAddメソッドについては「VBAで条件付き書式を追加する」を参照ください。

Modifyメソッドは「条件付き書式ルールの管理」ダイアログの「ルールの編集」ボタンに該当します。

Modifyメソッドには戻り値はなく、メソッド実行後はFormatConditionsコレクションの登録内容が編集された状態になります。上の画像でのModifyメソッドはFormatConditions(1)から(3)が編集対象になります。

あとは必要があれば書式の設定をFormatConditionオブジェクト(コードではFormatConditions(x)と書くことも可能)のFontプロパティ(文字設定)、Interiorプロパティ(背景色)、Borderプロパティ(罫線)などの設定を行います。ここの書き方はAddメソッドと同じです。

構文

Modifyメソッドの引数はAddメソッドと似ていますが若干異なります。

構文では引数OperatorとOperator2にはそれぞれ列挙型を書いていますが、実際の定義上では型は未定義です。便宜上付けています。

Microsoftのヘルプには引数は4つしか書かれていませんが実際には6つあります。以下では6つの引数について説明します。
https://msdn.microsoft.com/ja-jp/vba/excel-vba/articles/formatcondition-modify-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は無視されます。省略可能です。
Operator2 引数TypeでxlTextString(文字列)を指定した場合に引数Stringの判定方法をXlContainsOperator列挙型で指定します。省略可能です。

定数 内容
xlBeginsWith 2 ではじまる
xlContains 0 を含む
xlDoesNotContain 1 を含まない
xlEndsWith 3 で終わる

 

サンプルコード

条件付き書式を設定し、その後編集するサンプルです。引数Operator2を使うコードを見たことがないので書いてみました。

まず、A列とB列で文字列”aaa”を含んでいる場合に書式を設定する条件付き書式を設定します。これはAddメソッドでの処理になります。

上のコードを実行後に文字列を入力するとこのようになります。

次に、文字列”aaa”を含まない、という条件に変更します。

コードを実行するとこのようになります。”aaa”を含まない、という条件になるため書式が反転します。

シート内の条件付き書式の一部を修正するサンプルコード

以下のサンプルはシートに含まれる全ての条件付き書式を見て、それぞれの設定内容を見た上で、編集対象とみなした場合のみ編集するコードです。