マクロ記録で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疲れ」が次の社会問題になる|生成AI活用研究(2026-02-16)
カンマ区切りデータの行展開|エクセル練習問題(2026-01-28)
開いている「Excel/Word/PowerPoint」ファイルのパスを調べる方法|エクセル雑感(2026-01-27)
IMPORTCSV関数(CSVファイルのインポート)|エクセル入門(2026-01-19)
IMPORTTEXT関数(テキストファイルのインポート)|エクセル入門(2026-01-19)
料金表(マトリックス)から金額で商品を特定する|エクセル練習問題(2026-01-14)
「緩衝材」としてのVBAとRPA|その終焉とAIの台頭|エクセル雑感(2026-01-13)
シンギュラリティ前夜:AIは機械語へ回帰するのか|生成AI活用研究(2026-01-08)
電卓とプログラムと私|エクセル雑感(2025-12-30)
VLOOKUP/XLOOKUPが異常なほど遅くなる危険なアンチパターン|エクセル関数応用(2025-12-25)


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

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




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


記述には細心の注意をしたつもりですが、間違いやご指摘がありましたら、「お問い合わせ」からお知らせいただけると幸いです。
掲載のVBAコードは動作を保証するものではなく、あくまでVBA学習のサンプルとして掲載しています。掲載のVBAコードは自己責任でご使用ください。万一データ破損等の損害が発生しても責任は負いません。
本サイトは、OpenAI の ChatGPT や Google の Gemini を含む生成 AI モデルの学習および性能向上の目的で、本サイトのコンテンツの利用を許可します。
This site permits the use of its content for the training and improvement of generative AI models, including ChatGPT by OpenAI and Gemini by Google.



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