【2025年対応】VBA・マクロで祝日を自動で判定して色分け!エクセルでカレンダーをもっと見やすく

ExcelVBA

「この日って祝日だったっけ?」
「手作業で祝日をチェックするのが大変…」

そんな悩みを解決するのが、祝日を自動で判定してセルに色をつける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で祝日リストを使って処理すれば、毎年の更新も簡単!

手作業のミスや確認作業を減らしたい方に、ぜひおすすめします!

コメント

タイトルとURLをコピーしました