PR

【VBA】条件付き書式の設定変更を行う

これで楽に!?VBA活用
記事内に広告が含まれています。

こんにちは、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

タイトルとURLをコピーしました