こんにちは!ぐーです。
突然ですが、毎月の「カレンダー作成」にどれくらいの時間を使っていますか?
日付を打ち直し、曜日を修正し、土曜日は青色、日曜日は赤色、祝日を確認して……。
もしこの作業に毎月30分かけているとしたら、年間で6時間も「ただ表を作るだけ」に費やしていることになります。これ、もったいないですよね。
そこで今回は、こうした事務作業の負担をExcel VBAによって一瞬で解消する方法をご紹介します。
プログラミングの知識がなくても、「コピー&ペーストしてボタンを押すだけ」で動作する便利なコードをご用意しました。
VBAによるカレンダー作成を推奨する理由
「既存のテンプレートを活用すれば十分ではないか」
そう感じる方もいらっしゃるかもしれません。
でも、実務では指定のフォーマットに合わせたり、特定の箇所にメモ欄を設けたりといった、細かな調整が求められる場面が多いものです。
VBA(マクロ)を導入すれば、ご自身の業務に最適化されたカレンダーを、正確かつ瞬時に作成できるようになります。
何より、手作業で発生しがちな日付の入力ミスや色付けの漏れを完全に排除できる点が、最大のメリットと言えるでしょう。
コピペで使える!カレンダー自動生成VBAコード
では、さっそくコードをご紹介します。
以下の手順に従って、Excelへ反映させてみてください。
- Excelを開き、[Alt] + [F11] キーを押す。
- メニューの「挿入」→「標準モジュール」をクリック。
- 出てきた白い画面に、以下のコードを全てコピペする。
Sub カレンダー作成()
' 変数の宣言
Dim 年 As Integer
Dim 月 As Integer
Dim 月初日 As Date
Dim 月末日 As Date
Dim i As Integer
Dim 行 As Integer
' 画面の更新を止めて高速化
Application.ScreenUpdating = False
' ① 何年何月のカレンダーを作るか確認
On Error Resume Next ' キャンセル対策
年 = InputBox("西暦を入力してください(例:2026)", "年の指定", Year(Date))
月 = InputBox("月を入力してください(例:1)", "月の指定", Month(Date))
On Error GoTo 0
If 年 = 0 Or 月 = 0 Then Exit Sub ' キャンセルされた場合は終了
' ② シートを初期化して見出しを作成
Cells.Clear
Range("A1").Value = 年 & "年 " & 月 & "月"
Range("A1").Font.Size = 16
Range("A1").Font.Bold = True
' 曜日の見出しを入力(A3セルから開始)
Range("A3").Value = "日付"
Range("B3").Value = "曜日"
Range("C3").Value = "予定・メモ"
' 列幅を調整
Columns("C").ColumnWidth = 40 ' メモ欄を広く
' ③ 日付データを計算して書き込む
月初日 = DateSerial(年, 月, 1)
月末日 = DateSerial(年, 月 + 1, 0)
行 = 4 ' 4行目から日付スタート
' 1日から月末まで繰り返す
For i = 0 To Day(月末日) - 1
Cells(行, 1).Value = 月初日 + i ' 日付
Cells(行, 2).Value = Format(月初日 + i, "aaa") ' 曜日
' 土日の色付け(土曜:青、日曜:赤)
Select Case Weekday(月初日 + i)
Case vbSaturday
Range(Cells(行, 1), Cells(行, 3)).Interior.Color = RGB(220, 230, 255) ' 薄い青
Cells(行, 2).Font.Color = vbBlue
Case vbSunday
Range(Cells(行, 1), Cells(行, 3)).Interior.Color = RGB(255, 220, 220) ' 薄い赤
Cells(行, 2).Font.Color = vbRed
End Select
行 = 行 + 1
Next i
' 格子状に枠線を引く
Range("A3:C" & 行 - 1).Borders.LineStyle = xlContinuous
' 画面更新を再開
Application.ScreenUpdating = True
MsgBox "カレンダーができました!", vbInformation
End Sub
貼り付けたら、Excelの画面に戻って [Alt] + [F8] を押し、「カレンダー作成」を選んで「実行」ボタンを押してみてください。
入力画面が表示されますので、年月を指定するだけで、瞬時にカレンダーが完成します!
▼完成例

本コードの主要な3つのポイント
- InputBox(インプットボックス):ユーザーと対話するためのツールです。作成したい年月を尋ねる役割を担います。
- DateSerial(デイトシリアル): 入力された数値を日付データに変換します。この機能により、うるう年の計算なども自動で行われます。
- For ~ Next(繰り返し): 1日から月末まで、日付の記入や着色といった定型作業を反復します。正確かつ高速な処理は、コンピュータが最も得意とする領域です。
VBAを独学で学び、業務自動化に5年以上携わってきた私が、「本当に実務で役立った!」と感じた2冊を紹介します。 もう本選びで失敗したくない方は、よければ参考にしてみてください。
リンク
リンク

コメント