Excelマクロの記録で覚えるVBA
第21回.条件付き書式

Excelマクロの自動記録を使って、エクセルVBAの初心者向け入門解説
最終更新日: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


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


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


簡単に説明すると、


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


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



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






同じテーマ「Excelマクロの記録で覚えるVBA」の記事

行の挿入・削除
並べ替え
オートフィルタ
オートフィルタ2
ジャンプのセル選択
条件付き書式
シートの移動コピー
セルの結合
印刷
開く・保存・閉じる
最終回

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

「VBAによる解析シリーズその2 カッコ」をやってみた|エクセル(5月21日)
VBA+SeleniumBasicで検索順位チェッカー作成|VBA技術解説(5月18日)
テーブル操作のVBAコード(ListObject)|VBA入門(5月12日)
テーブル操作の概要(ListObject)|VBA入門(5月12日)
VBAのスクレイピングを簡単楽にしてくれるSelenium|VBA技術解説(5月6日)
Excelワークシート関数一覧(2010以降)|VBAリファレンス(4月22日)
クラスとCallByNameとポリモーフィズム(多態性)|VBA技術解説(4月6日)
VBAでのタイマー処理(SetTimer,OnTime)|VBA技術解説(4月3日)
クラスとイベントとマルチプロセス並列処理|VBA技術解説(4月2日)
エクセルの日付と時刻のまとめ|エクセル関数超技(3月6日)

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

1.ひらがな⇔カタカナの変換|エクセル基本操作
2.最終行の取得(End,Rows.Count)|VBA入門
3.セルのコピー&値の貼り付け(PasteSpecial)|VBA入門
4.Range以外の指定方法(Cells,Rows,Columns)|VBA入門
5.RangeとCellsの使い方|ExcelマクロVBA入門
6.変数とデータ型(Dim)|ExcelマクロVBA入門
7.マクロって何?VBAって何?|ExcelマクロVBA入門
8.繰り返し処理(For Next)|ExcelマクロVBA入門
9.とにかく書いて見よう(Sub,End Sub)|VBA入門
10.セルに文字を入れるとは(Range,Value)|VBA入門



  • >
  • >
  • >
  • 条件付き書式

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


    記述には細心の注意をしたつもりですが、
    間違いやご指摘がありましたら、「お問い合わせ」からお知らせいただけると幸いです。
    なお、掲載のVBAコードは自己責任で使ってください。万一データ破損等の損害が発生しても責任は負いません。






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

    本文下部へ