こんにちは、Ryoです。
Excelの機能の一つである条件付き書式設定を仕様することは多々ありますが、その設定された内容をVBAのModifyメソッドを利用することで変更することができますので、今回はその内容について書いていきます。
1.サンプル概要
セルE2~E11には下の画像の通り、条件付き書式として50000より大きい値に「赤文字+赤背景」になるよう設定してあります。
この設定されている条件付き書式について「80000未満は赤文字+赤背景」にサンプルコードで変更処理します。
実行結果は以下の通り設定が変更され、80000未満の値が入力されているセルの表示が変わっています。
以上がサンプル概要になります。
2.サンプルコード
Sub Sample1() 'セルE2~E11に設定されている一番目の条件付き書式の設定を '80000未満に変更する Range("E2:E11").FormatConditions(1).Modify Type:=xlCellValue, _ Operator:=xlLess, Formula1:=80000 '※ Modifyメソッドで変更できるのは「指定条件」なので、 ' 条件に沿った書式まで変更したい場合は条件付き書式を削除して ' Addメソッドで再度条件付き書式の設定を行う必要があります。 End Sub
このように条件付き書式の設定を変更するにはModifyメソッドを利用します。
構文:オブジェクト.Modify(Type, Operator, Formula1, Formula2)
Modifyメソッドは指定した条件付き書式の設定を変更するもので、オブジェクトにはFormatConditionオブジェクトを指定します。引数については以下の通りです。
≪引数Typeに指定するXlFormatConditionTypeクラスの値≫
クラス名 | 内容 |
xlAbobeAverageCondition | 平均以上の条件 |
xlBlanksCondition | 空白の条件 |
xlCellValue | セルの値 |
xlColorScale | カラースケール |
xlDatabar | データバー |
xlErrorsCondition | エラー条件 |
xlExpression | 演算 |
xlIconset | アイコンセット |
xlNoBlanksCondition | 空白の条件なし |
xlNoErrorsCondition | エラー条件なし |
xlTextString | テキスト文字列 |
xlTimePeriod | 期間 |
xlTop10 | 上位の10個の値 |
xlUniqueValues | 一意の値 |
≪引数Operatorに設定するXlFormatConditionOperatorクラスの値≫
クラス名 | 内容 |
xlBetween | 次の値の間 |
xlEqual | 次の値に等しい |
xlGreater | 次の値より大きい |
xlGreatEqual | 次の値以上 |
xlLess | 次の値より小さい |
xlLessEqual | 次の値以下 |
xlNotBetween | 次の値の間以外 |
xlNotEqual | 次の値と等しくない |
サンプルでは既に設定されている「50000より大きい値」という条件に対して、「80000より小さい値」の条件変更を行っていますのでTypeはxlCellValue、OperatorはxlLess、Formula1に80000を指定して実行しています。
このModifyメソッドで変更できるのは「指定条件」なので、条件に沿った書式自体の変更ができません。その場合は書式自体の削除を行ってから改めて再度条件付き書式をAddメソッドで追加する形になりますのでご注意ください。
3.まとめ
条件付き書式は便利な機能なので使うことも多いのですが、VBA等で処理を絡めた場合でも扱えることを知っておくと何かと便利です。
上でも書いていますが変更できるのは指定条件なので、書式自体を変えることはできない点にはご注意ください。
以上、条件付き書式の設定変更を行う方法についてでした!今回に記事が何かの参考になれば幸いです。
Ryo