【ExcelVBA入門】VBAで条件付き書式を追加する方法を徹底解説!

こんにちは、フリーランスエンジニア兼ライターのワキザカ サンシロウです。

皆さんは、VBAで条件付き書式を使う方法を知っていますか?

条件付き書式を使うとセルの色を強調し、データを見やすく整理することができるのでおすすめです。

ただ、条件付き書式は機能がとても多いので、VBAで書こうとすると一気に難しいと感じる方も多いと思います。

そこで今回は、

・条件付き書式とは

といった基礎的なことから、

・VBAで条件付き書式を使うために最低限覚えておくこと

・マクロの記録を使ってコードを素早く確認する方法

といった応用的な方法まで、徹底的に解説します!

目次

条件付き書式とは

最初に、条件付き書式について具体例を含め簡単に説明します。

条件付き書式を使えば、以下のようにセルに色を付けてデータを見やすく整理することができます。

条件付き書式 例1:

条件付き書式 例2:

例1では、日付が土日の場合は文字を赤、勤怠表で×になっているセルはグレーアウトするような条件付き書式を設定しています。

例2ではステータスが完了の場合は行全体をグレーアウト、遅延している場合は行全体を赤くすることで、タスク管理がしやすいよう条件付き書式を設定しています。

このように、データの変化によって自動で色を変えることができるのが条件付き書式です。

VBAで条件付き書式を使う方法とは

次に、条件付き書式をVBAで書く方法について解説します。

VBAで条件付き書式を設定する場合は、以下のように書きます。

セル範囲.FormatConditions.Add(Type, [Operator], [Formula1],[Formula2],[String],[TextOperator],[DateOperator],[ScopeType])

各引数の意味:

No引数意味
1Typeルールの種類
2Operator条件
3Formula1条件に指定した値1
4Formula2条件に指定した値2
5StringTypeでxlTextStringを指定したときのみ使用
対象となる文字列を指定
6TextOperatorTypeでxlTextStringを指定したときのみ使用
引数Stringの判定方法を指定
7DateOperatorTypeでxlTimePeriodを指定したときのみ使用
期間を指定
8ScopeType条件付き書式がピボットテーブルに対して適用する場合のみ指定

複数パラメータを設定する場合は「引数名:=設定値」をカンマで区切って以下のように設定します。

セル範囲.FormatConditions.Add(Type:=xlCellValue, Operator:=xlEqual, Formula1:="×")

また、引数によっていくつか選択肢があるので、表形式で紹介します。

Type:

No意味設定値
1平均以上xlAboveAverageCondition
2空白xlBlanksCondition
3セル値xlCellValue
4カラースケールxlColorScale
5データバーxlDatabar
6エラー条件xlErrorsCondition
7演算xlExpression
8アイコンセットxlIconSets
9空白条件なしxlNoBlanksCondition
10エラー条件なしxlNoErrorsCondition
11文字列xlTextString
12期間xlTimePeriod
13上位10位xlTop10
14一意値xlUniqueValues

Operator:

No意味設定値
1範囲内xlBetween
2等しいxlEqual
3次の値より大きいxlGreater
4以上xlGreaterEqual
5次の値より小さいxlLess
6以下xlLessEqual
7範囲外xlNotBetween
8等しくないxlNotEqual

TextOperator:

No意味設定値
1ではじまるxlBeginsWith
2を含むxlContains
3を含まないxlDoesNotContain
4で終わるxlEndsWith

DetaOperator:

No意味設定値
1過去7日間xlLast7Days
2先月xlLastMonth
3先週xlLastWeek
4来月xlNextMonth
5来週xlNextWeek
6今月xlThisMonth
7今週xlThisWeek
8今日xlToday
9明日xlTomorrow
10昨日xlYesterday

条件式追加後、書式の設定をFormatConditionオブジェクトのプロパティで追加していくことで、文字を太字にしたり、背景色を変えることができます。

マクロの記録を使って素早く書き方を確認する方法とは

先ほどのプロパティをみて、覚えるのが無理だ・・・と思った方も多いのではないでしょうか。

1つずつ覚えていけば覚えられるかもしれませんが、全てをいきなり覚えるのは難しいですよね。

そんな時はマクロの記録で一旦操作を確認するのがおすすめです!

マクロの記録で操作保存

保存したコードを見る

この記事の引数の意味を見つつコードを修正

の流れで書くことで、出来上がったコードと動きを見つつ修正ができるのでおすすめです!

マクロの記録の使い方については以下記事で詳しく解説しているため、使ったことがない方は見てみてくださいね!

サンプルコード

最後に、サンプルコードを用意したので紹介します。

VBA実行前のシート:

サンプルコード

Sub Test()
  Dim rngCellArea As Range
  Dim frmSetting As FormatCondition
  
  '条件付き書式の範囲
  Set rngCellArea = Range("A1:F5")
  
  '条件付き書式の追加
  Set frmSetting = rngCellArea.FormatConditions.Add(Type:=xlCellValue, Operator:=xlEqual, Formula1:="×")
  
  '太字・背景色をグレーに変更
  frmSetting.Font.Bold = True
  frmSetting.Interior.Color = RGB(204, 204, 204)

End Sub

VBA実行後のシート:

とても簡単な例ですが、指定した範囲のセルの中に「×」があるセルを太字・グレーアウトに変更しています。

「FormatConditions.Add」で条件付き書式を設定し、「Font.Bold」で太字、「Interior.Color」で背景色グレーを設定しています。

まとめ

今回は、VBAで条件付き書式を使う方法について解説しました。

条件付き書式は機能が多いですが、一度にすべて覚える必要はありません!

最後に紹介したマクロの記録を使いつつ、わからない部分のみググったりこの記事をみればOKです。

データの見やすさは作業効率にも影響するので、ぜひ使ってみてくださいね!

この記事を書いた人

北海道出身の30歳で、フリーランスエンジニア兼テックライターとして活動中。新卒入社したメーカー系のIT企業で、システムエンジニアとして約5年勤務。

Webアプリ、業務アプリ開発において、要件定義 ~ 運用保守まで様々な経験あり。また3歳の娘がいる1児のパパで、日々娘との時間を確保するために仕事を頑張っています!
侍エンジニアでは、【誰でもわかるレベルのわかりやすさ】を意識して、記事を執筆中。

目次