マクロ記録で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 ・・・新着記事一覧を見る

ExcelマクロVBA入門目次|エクセルの神髄(2024-03-20)
VBA10大躓きポイント(初心者が躓きやすいポイント)|VBA技術解説(2024-03-05)
テンキーのスクリーンキーボード作成|ユーザーフォーム入門(2024-02-26)
無効な前方参照か、コンパイルされていない種類への参照です。|エクセル雑感(2024-02-17)
初級脱出10問パック|VBA練習問題(2024-01-24)
累計を求める数式あれこれ|エクセル関数応用(2024-01-22)
複数の文字列を検索して置換するSUBSTITUTE|エクセル入門(2024-01-03)
いくつかの数式の計算中にリソース不足になりました。|エクセル雑感(2023-12-28)
VBAでクリップボードへ文字列を送信・取得する3つの方法|VBA技術解説(2023-12-07)
難しい数式とは何か?|エクセル雑感(2023-12-07)


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

1.最終行の取得(End,Rows.Count)|VBA入門
2.RangeとCellsの使い方|VBA入門
3.セルのコピー&値の貼り付け(PasteSpecial)|VBA入門
4.繰り返し処理(For Next)|VBA入門
5.変数宣言のDimとデータ型|VBA入門
6.ブックを閉じる・保存(Close,Save,SaveAs)|VBA入門
7.並べ替え(Sort)|VBA入門
8.条件分岐(IF)|VBA入門
9.セルのクリア(Clear,ClearContents)|VBA入門
10.マクロとは?VBAとは?VBAでできること|VBA入門




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


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



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