「この日って祝日だったっけ?」
「手作業で祝日をチェックするのが大変…」
そんな悩みを解決するのが、祝日を自動で判定してセルに色をつけるExcel VBAです!
今回は、A列に入力された日付に対して、日本の祝日かどうかを判定し、祝日であれば赤色で塗りつぶすVBAコードをご紹介します。
※祝日データは「別シートに一覧で登録する方式」を採用しています。
このExcelVBAコードはこんな人におすすめです!!
- Excelでスケジュールや勤務表を作っている方
- 祝日を手作業で調べて色付けしている方
- 見た目も分かりやすい予定表を作りたい方
VBAで使う祝日データの準備(重要!)
1.新しいシート「祝日
一覧」を作成しA列に祝日の日付を「2025/01/01」のような日付形式で入力してください

2.シート「Sheet1」のA列に2025/1/1~2025/1/15を入力してください

3.シート「Sheet1」を表示(アクティブ)させておいてください
では準備ができましたら、下記コードを入力してください。
Sub ColorHolidays()
Dim wsData As Worksheet
Dim wsHoliday As Worksheet
Dim checkRange As Range
Dim cell As Range
Dim holidayDates As Collection
Dim i As Long
Dim lastRow As Long
Dim hDate As Variant
Set wsData = ActiveSheet
Set wsHoliday = Worksheets("祝日一覧")
' 祝日データをコレクションに読み込む
Set holidayDates = New Collection
lastRow = wsHoliday.Cells(wsHoliday.Rows.Count, 1).End(xlUp).Row
On Error Resume Next
For i = 1 To lastRow
hDate = wsHoliday.Cells(i, 1).Value
If IsDate(hDate) Then
holidayDates.Add Format(hDate, "yyyymmdd"), CStr(Format(hDate, "yyyymmdd"))
End If
Next i
On Error GoTo 0
' チェック対象(A列)の最終行取得
lastRow = wsData.Cells(wsData.Rows.Count, "A").End(xlUp).Row
Set checkRange = wsData.Range("A2:A" & lastRow)
' 色分け処理
For Each cell In checkRange
If IsDate(cell.Value) Then
Dim dateKey As String
dateKey = Format(cell.Value, "yyyymmdd")
On Error Resume Next
hDate = holidayDates.Item(dateKey)
If Err.Number = 0 Then
cell.Interior.Color = RGB(255, 204, 204) ' 祝日:ピンク
Else
cell.Interior.ColorIndex = xlNone ' 祝日でなければ色を消す
End If
Err.Clear
On Error GoTo 0
End If
Next cell
MsgBox "祝日のセルに色を付けました!", vbInformation
End Sub
動作確認
コードの入力が終わりましたら、実際に動作するか見てみましょう。
エディター上で実行ボタンまたはF5を押してください。

祝日一覧シートで指定した日付が入力されているセルに色がつきました。

今回は祝日のみ色をつけるコードを紹介しました。他にも土日のセルに色をつけるコードも紹介していますので、良ければ見てください。
まとめ
祝日の自動判定と色分けは、スケジュール表の可読性や実用性を一気に高めてくれます。
VBAで祝日リストを使って処理すれば、毎年の更新も簡単!
手作業のミスや確認作業を減らしたい方に、ぜひおすすめします!
コメント