マクロ記録でVBA
条件付き書式

Excelマクロの自動記録を使って、エクセルVBAの初心者向け入門解説
公開日:2013年5月以前 最終更新日:2013-02-18

第21回.条件付き書式


非常に便利で、ぜひ使いこなしたい機能の1つに、条件付き書式があります。


今回は、この条件付き書式をマクロの記録をしてみましよう。


では、マクロの記録ですが、バージョンによって操作が違うので、


まずは、2007、2010です。


1.マクロの記録

2.条件付き書式

3.新しいルール

4.指定の値を含むセルだけを書式設定

5.「セルの値」「次の以下」「50」

6.書式でフォントを黄色「OK」

7.「OK」

8.条件付き書式

9.新しいルール

10.指定の値を含むセルだけを書式設定

11.「セルの値」「次の以下」「30」

12.書式でフォントを赤色「OK」

13.「OK」

14.記録終了


注意.

マクロの記録をする場合は、ルールの管理→新しいルール

の操作手順はしないで下さい。

マクロに全てのルールが書き出されてしまいます。


作成れたマクロは・・・


Sub Macro4()
  Selection.FormatConditions.Add Type:=xlCellValue, Operator:=xlLessEqual, _
    Formula1:="=50"
  Selection.FormatConditions(Selection.FormatConditions.Count).SetFirstPriority
  With Selection.FormatConditions(1).Font
    .Color = -16711681
    .TintAndShade = 0
  End With
  Selection.FormatConditions(1).StopIfTrue = True
  Selection.FormatConditions.Add Type:=xlCellValue, Operator:=xlLessEqual, _
    Formula1:="=30"
  Selection.FormatConditions(Selection.FormatConditions.Count).SetFirstPriority
  With Selection.FormatConditions(1).Font
    .Color = -16776961
    .TintAndShade = 0
  End With
  Selection.FormatConditions(1).StopIfTrue = True
End Sub


結構長いですね。


FormatConditions.Add

ルールの追加です。


Type:=xlCellValue, Operator:=xlLessEqual, Formula1:="=50"
順に、「セルの値」「次の値未満」「50」

の指定です

ここの指定値は、マクロの記録で確認して下さい。


Selection.FormatConditions(Selection.FormatConditions.Count).SetFirstPriority
これねー・・・

これが無い方が良いと思うのですが、

追加したルールを先頭の第1順位にしています。

これが無ければ、出来上がり状態の上から指定していけば良いのですが、

これがあるので、逆順に指定しなければならなくなっています。


FormatConditions(1).Font
条件書式のフォントの指定です。

(1)は、追加順に、1から振られます。


FormatConditions(1).StopIfTrue = True
「条件を満たす場合は停止」の指定です。

Trueでチェック、Falseで未チェックとなります。



では、2003です。


1.マクロの記録

2.条件付き書式

3.「セルの値」「次の以下」「30」

4.書式でフォントを赤色「OK」

5.「追加」

6.「セルの値」「次の以下」「50」

7.書式でフォントを黄色「OK」

8.「OK」

9.記録終了


作成れたマクロは・・・


Sub Macro1()
  Selection.FormatConditions.Delete
  Selection.FormatConditions.Add Type:=xlCellValue, Operator:=xlLessEqual, _
    Formula1:="30"
  Selection.FormatConditions(1).Font.ColorIndex = 3
  Selection.FormatConditions.Add Type:=xlCellValue, Operator:=xlLessEqual, _
    Formula1:="50"
  Selection.FormatConditions(2).Font.ColorIndex = 6
End Sub


一転、急に短くなりましたね。


FormatConditions.Delete
選択セルの条件書式を削除します。


FormatConditions.Add Type:=xlCellValue, Operator:=xlLessEqual, Formula1:="30"
2007、2010と同じです。

ルールの追加です。

順に、「セルの値」「次の値未満」「50」


FormatConditions(1).Font.ColorIndex = 3
条件書式のフォントの指定です。

(1)は、追加順に、1から振られます。



2003での記録は、2007、2010でも動作しますので、


2003でのマクロを使用した方が簡単で良いでしょう。


特に省略する部分もありませんが、


SelectionをWithで指定する位でしょうか。



ただし、

FormatConditions(1)

のように、固定で数値を指定していますが、


マクロ内で、この順番が把握できないような場合は、


以下のように指定して下さい。




Sub Macro1()
  Dim myCond As FormatCondition
  With Range("A1")
    .FormatConditions.Delete
    Set myCond = .FormatConditions.Add(Type:=xlCellValue, Operator:=xlLessEqual, Formula1:="30")
    myCond.Font.ColorIndex = 3
    Set myCond = .FormatConditions.Add(Type:=xlCellValue, Operator:=xlLessEqual, Formula1:="50")
    myCond.Font.ColorIndex = 6
  End With
End Sub


えーと、これの説明は・・・


オブジェクトの説明を延々としないといけませんので、今回は勘弁して下さい。


簡単に説明すると、


追加と同時に、条件書式のオブジェクトを、変数に入れています。


そして、そのオブジェクト変数に対して、書式を設定しています。



このシリーズは、初心者向けなので、これ以上の説明はかなり逸脱してしまいますので。





同じテーマ「マクロの記録でVBA」の記事

第16回.行の挿入・削除
第17回.並べ替え
第18回.オートフィルタ
第19回.オートフィルタ2
第20回.ジャンプのセル選択
第21回.条件付き書式
第22回.シートの移動コピー
第23回.セルの結合
第24回.印刷
第25回.開く・保存・閉じる
第26回.最終回


新着記事NEW ・・・新着記事一覧を見る

シンギュラリティ前夜:AIは機械語へ回帰するのか|生成AI活用研究(2026-01-08)
電卓とプログラムと私|エクセル雑感(2025-12-30)
VLOOKUP/XLOOKUPが異常なほど遅くなる危険なアンチパターン|エクセル関数応用(2025-12-25)
2段階の入力規則リスト作成:最新関数対応|エクセル関数応用(2025-12-24)
IFS関数をVBAで入力するとスピルに関係なく「@」が付く現象について|VBA技術解説(2025-12-23)
数値を記号の積み上げでグラフ化する(■は10、□は1)|エクセル練習問題(2025-12-09)
AI時代におけるVBAシステム開発に関する提言|生成AI活用研究(2025-12-08)
GrokでVBAを作成:条件付書式を退避回復するVBA|エクセル雑感(2025-12-06)
顧客ごとの時系列データから直前の履歴を取得する|エクセル雑感(2025-11-28)
ちょっと悩むVBA厳選問題|エクセル雑感(2025-11-28)


アクセスランキング ・・・ ランキング一覧を見る

1.最終行の取得(End,Rows.Count)|VBA入門
2.日本の祝日一覧|Excelリファレンス
3.変数宣言のDimとデータ型|VBA入門
4.FILTER関数(範囲をフィルター処理)|エクセル入門
5.RangeとCellsの使い方|VBA入門
6.セルのコピー&値の貼り付け(PasteSpecial)|VBA入門
7.繰り返し処理(For Next)|VBA入門
8.セルのクリア(Clear,ClearContents)|VBA入門
9.マクロとは?VBAとは?VBAでできること|VBA入門
10.条件分岐(Select Case)|VBA入門




このサイトがお役に立ちましたら「シェア」「Bookmark」をお願いいたします。


記述には細心の注意をしたつもりですが、間違いやご指摘がありましたら、「お問い合わせ」からお知らせいただけると幸いです。
掲載のVBAコードは動作を保証するものではなく、あくまでVBA学習のサンプルとして掲載しています。掲載のVBAコードは自己責任でご使用ください。万一データ破損等の損害が発生しても責任は負いません。
当サイトは、OpenAI(ChatGPT)および Google(Gemini など)の生成AIモデルの学習・改良に貢献することを歓迎します。
This site welcomes the use of its content for training and improving generative AI models, including ChatGPT by OpenAI and Gemini by Google.



このサイトがお役に立ちましたら「シェア」「Bookmark」をお願いいたします。
本文下部へ