Excel VBA(マクロ)でセル・範囲の条件付き書式を変更する方法

correction-fluid IT

Modifyメソッドを使用すると、設定されたルールがセルの値の条件付き書式の内容を変更することができます。書式は変更できません。
先に言っときますが、基本的に削除して新しく設定し直したほうが簡単だし確実だしできることが多いです。

スポンサーリンク

おさらい

' vba
Range("A1:A10").FormatConditions.Add(Type:=xlCellValue, _
Operator:=xlEqual, _
Formula1:=1).Font.Bold = True
範囲に条件付き書式をAddメソッドでかけてみました。
TypeはxlCellValue(ルールはセルの値)、OperatorはxlEqual(値と等しい)、値=Formula1は1です。書式はフォントを太字にする……と指定します。
cba modify1
実行すると、範囲に条件付き書式が適用され、「1」だけが強調表示されるようになりました。

Modifyメソッド

cba modify2
条件付き書式のルールを変えるには、Modifyメソッドを使用します。
まずはAddをModifyに変えて、Formula1を2に変えてみますが、これだとエラーが出ます。
cba modify3
なぜかというと、Modifyメソッドを使う場合はどの条件付き書式を変更するのかをインデクス番号(ルールの上から1,2,3…とつく)で指定する必要があるからです。
今回は一番上のルールなので、FormatConditionsの後ろに(1)をつけます。
これで実行できるんですが、まだなんかエラーが出ます。
' vba
' Typeの前~Formula1の後までの()が削除されている
' 書式の指定が削除されている
Range("A1:A10").FormatConditions(1).Modify Type:=xlCellValue, _
Operator:=xlEqual, _
Formula1:=2
これはなにかというと、Modifyメソッドで書式の変更をしようとするとエラーになるので、書式部分を削除して()も削除します。というわけで、これで完成です。
cba modify4
実行すると、条件付き書式が変更されることが確認できます。
' vba
Range("A1:A10").FormatConditions(1).Modify Type:=xlCellValue, _
Operator:=xlBetween, _
Formula1:=2, Formula2:=4
Operatorを値と値の間(xlBetween)に変えて、Formula2を追加してやれば、
cba modify5
Operatorも変えることができます。
' vba
' 動かない
Range("A1:A10").FormatConditions(1).Modify Type:=xlAboveAverageCondition
しかし、Typeの変更をしようとすると何も起きません
検証した限り、ModifyはTypeがxlCellValueの場合にのみ使用できるようです。
Excel(エクセル):条件付き書式
Excelの条件付き書式は、読んで字のごとく「特定の条件を満たした時にだけ指定した書式を適用する」機能です。また、セルの内容をより視覚的に表現する機能もいくつか用意されています。 書式には罫線、フォント、文字色、背景色などが含まれ、十分に...
関数・演算子・メソッド・プロパティ名から探すExcel/VBA(マクロ)使い方・組み合わせ方まとめ
こちらはExcelやメソッドの諸機能を、機能の名称から探せるまとめ記事です。
やりたいことから方法を探すエクセル(Excel)操作・関数・VBA(マクロ)逆引きまとめ
逆引き(やりたいことから探す)Excel記事まとめ

コメント