ふだん仕事の中で、作業日程をもう少し細かく設定したくなったので、以前作成したカレンダー作成ツールを再改造しました。
■ 改造点と主な機能
- 休日の色を外部から自由に変更できるように改善しました。
- 週・月・年単位を選択してカレンダーを生成できるようにしました。
- 内部処理をVBAのクラスモジュールで設計し、オブジェクト指向による構造化を行いました。
■ 想定環境・前提条件
- Microsoft Excel (デスクトップ版)
- マクロ(VBA)の実行が有効な環境
■ カレンダー作成ツールの再構成サンプルコード
元となった配布ファイルが現在入手できないため、記事の仕様に基づきクラスモジュールを活用したカレンダー作成の再構成サンプルコードを以下に示します。
1. クラスモジュール: CalendarGenerator.cls
' クラスモジュール名: CalendarGenerator
Option Explicit
Private wsTarget As Worksheet
Private holidayColor As Long
Public Property Set TargetSheet(ByVal ws As Worksheet)
Set wsTarget = ws
End Property
Public Property Let HolidayColorCode(ByVal cColor As Long)
holidayColor = cColor
End Property
' カレンダー生成処理のメインメソッド
Public Sub CreateCalendar(ByVal targetYear As Integer, ByVal targetMonth As Integer, ByVal mode As String)
If wsTarget Is Nothing Then
MsgBox "出力先シートが設定されていません。", vbCritical
Exit Sub
End If
wsTarget.Cells.Clear
Select Case UCase(mode)
Case "MONTH"
GenerateMonthlyCalendar targetYear, targetMonth
Case Else
MsgBox "サポートされていないモードです: " & mode, vbExclamation
End Select
End Sub
Private Sub GenerateMonthlyCalendar(ByVal y As Integer, ByVal m As Integer)
Dim startDate As Date
Dim lastDay As Date
Dim i As Long
startDate = DateSerial(y, m, 1)
lastDay = DateSerial(y, m + 1, 0)
wsTarget.Cells(1, 1).Value = y & "年 " & m & "月 スケジュール"
wsTarget.Cells(3, 1).Value = "日付"
wsTarget.Cells(3, 2).Value = "曜日"
wsTarget.Cells(3, 3).Value = "作業内容"
For i = 0 To (Day(lastDay) - 1)
Dim currentDate As Date
currentDate = DateAdd("d", i, startDate)
wsTarget.Cells(4 + i, 1).Value = Format(currentDate, "yyyy/mm/dd")
wsTarget.Cells(4 + i, 2).Value = Format(currentDate, "aaa")
' 土日判定と休日カラー適用例
If Weekday(currentDate, vbSunday) = vbSaturday Or Weekday(currentDate, vbSunday) = vbSunday Then
wsTarget.Cells(4 + i, 2).Interior.Color = holidayColor
End If
Next i
wsTarget.Columns("A:C").AutoFit
End Sub
2. 標準モジュール: MainModule.bas
' 標準モジュール
Option Explicit
Public Sub RunCalendarCreation()
Dim calGen As CalendarGenerator
Set calGen = New CalendarGenerator
' 出力先シートを指定
Set calGen.TargetSheet = ActiveSheet
' 休日カラーに薄い赤色を指定 (&H8080FF& または RGB)
calGen.HolidayColorCode = RGB(230, 230, 250)
' 2026年10月の月間カレンダーを生成
calGen.CreateCalendar 2026, 10, "MONTH"
MsgBox "カレンダーの生成が完了しました。", vbInformation
End Sub
■ 実行手順
- Excelを開き、
Alt + F11キーを押してVBE(Visual Basic Editor)を起動します。 - メニューの [挿入] から [クラス モジュール] を選択し、プロパティウィンドウで名前を
CalendarGeneratorに変更します。 - 上記のクラスモジュール用コードを貼り付けます。
- 同様に [挿入] から [標準モジュール] を追加し、標準モジュール用コードを貼り付けます。
- Excelシートに戻り、マクロ
RunCalendarCreationを実行して動作を確認します。
■ セキュリティ・制約事項
- マクロを含むため、保存時は
.xlsm(マクロ有効ブック) 形式を使用してください。 - 実際の運用に合わせてシート構成やエラーハンドリング(
On Error等)を追加してご利用ください。
この記事の更新履歴
この記事は、生成AIを活用した自動レビュー・更新フローにより内容を見直し、必要な修正を反映しています。
2026年9月30日
- 削除リンク切れとなっている古い外部ZIPファイルのダウンロードリンクを削除しました。
- 追加クラスモジュールを用いたExcel VBAによるカレンダー・スケジュール作成の再構成サンプルコードと実行手順を追加しました。

