マクロ記録で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回.行の挿入・削除

行の挿入と、行の削除をやってみましょう、では、マクロの記録です。1.マクロの記録 2.1行目を選択 3.「挿入」…Ctrl+Shift++ 4.A列を選択 5.「挿入」…Ctrl+Shift++ 6.1行目を選択 7.「削除」…Ctrl+Shift+- 8.A列を選択 9.「削除」…Ctrl+Shift+- 10.…
第17回.並べ替え
エクセルでは避けて通れない、「並べ替え」をやります。実は、あまりやりたくないのですが… いや、2003と2007以降で、全く変わってしまったのです。1行目がタイトル、2~11行にデータが入っているとします。
第18回.オートフィルタ
フィルタをやりましょう。まあ、表計算らしい機能ではあります。では、マクロの記録です、データは何でも良いでしょう。1.マクロの記録 2.フィルタ 3.1のみ選択…たまたま1のデータを入れただけです。4.記録終了 作成れたマクロは、2003の場合は、Selection.AutoFilterSelection.AutoF…
第19回.オートフィルタ2
前回の続きで、フィルタをやります。以下の表で説明します。では、マクロの記録です。まずは、日付の絞り込みです。1.マクロの記録 2.A1を選択 3.フィルタ 4.2011/6/5のみ選択 5.記録終了 作成れたマクロは… (コメント行は省略します) 上は、2010or2007でのマクロの記録です。
第20回.ジャンプのセル選択
割と便利で、使っている人は使っている、使っていない人は使っていない。(←当たり前) 「ジャンプ」の「セル選択」をやってみましょう。まずは、新規シートのバラバラな位置に数値を入れて下さい。では、マクロの記録です。
第21回.条件付き書式
第22回.シートの移動コピー
シートの移動、コピーをやってみましょう。まずは、マクロの記録です。ブックはBook1.xls、シートは、Sheet1、Sheet2、Sheet3、があり、Sheet1が選択状態から。1.マクロの記録 2.Sheet3をドラッグで先頭へ移動 3.Sheet3をCtrlを押しながら、最後にコピー 4.新規シートを最後に…
第23回.セルの結合
はい、セルの結合をやります。では、マクロの記録から 1.マクロの記録 2.A1~B2を選択 3.セルを結合して中央揃え 4.記録終了 作成れたマクロは… うーん、長いですよね、省略できるところは省略しちゃいましょう。SubMacro1()WithRange("A1:B2").HorizontalAlignment=…
第24回.印刷
印刷やります。本当は、ペーパーレスが良いのですが、なかなかそうもいきません。では、マクロの記録から、2010での記録です。1.マクロの記録 2.印刷 3.記録終了 作成れたマクロは… ActiveWindow.SelectedSheets.PrintOut これで印刷します。
第25回.開く・保存・閉じる
いろいろやってきましたが、変更したエクセルをマクロで保存する必要があります。さらに、その前に、他のブックを開くことも必要になってきます。ではマクロの記録です。1.マクロの記録 2.フャイル 3.開く…ファイルを指定(C:\Excel\Book2.xls) 3.記録終了 作成れたマクロは… ChDir"C:\Exce…
第26回.最終回
全25回に渡って、マクロの記録をやってきましたが、今回で終わりとします。ここまでの内容が理解できれば、後は、ご自身でマクロの記録から、自由に作成できるはずです。マクロの記録で作成されたマクロには、無駄が多く、処理速度も遅いです。


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

ブール型(Boolean)のis変数・フラグについて|VBA技術解説(2024-04-05)
テキストの内容によって図形を削除する|VBA技術解説(2024-04-02)
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)


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

1.最終行の取得(End,Rows.Count)|VBA入門
2.セルのコピー&値の貼り付け(PasteSpecial)|VBA入門
3.RangeとCellsの使い方|VBA入門
4.ひらがな⇔カタカナの変換|エクセル基本操作
5.繰り返し処理(For Next)|VBA入門
6.変数宣言のDimとデータ型|VBA入門
7.ブックを閉じる・保存(Close,Save,SaveAs)|VBA入門
8.並べ替え(Sort)|VBA入門
9.セルのクリア(Clear,ClearContents)|VBA入門
10.Findメソッド(Find,FindNext,FindPrevious)|VBA入門




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


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


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