Excelで毎月の予約表を手作業で作成していると、日付入力や休日設定、営業時間外の表示などに多くの時間がかかります。VBAを利用すると、ボタンを押すだけで指定した年月の予約表を自動作成し、日曜日や祝日を除外したり、水曜日・土曜日の午後休業部分に斜線を入れたりする仕組みを作ることができます。この記事では、初心者でも理解しやすいように、予約表を自動生成するVBAの考え方や作成方法を解説します。
VBAを使えば毎月の予約表作成を自動化できる
Excel VBAでは、あらかじめ決めた処理をボタン操作だけで実行できます。予約表の場合は、入力した年と月をもとに日付を計算し、必要な日だけシートを作成するような仕組みが可能です。
例えば「2026年4月」と入力してボタンを押すと、「4月1日」「4月2日」のように日付ごとの予約枠を自動作成できます。翌月になった場合も年月を変更するだけで新しい予約表を作成できます。
毎月同じ形式の表を作る業務では、VBAによる自動化の効果が特に大きく、入力ミスの防止にもつながります。
予約表自動作成で必要になるVBAの基本構成
予約表を作成する場合、主に以下のような処理を組み合わせます。
- 指定した年と月を取得する
- その月の日数を計算する
- 曜日を判定する
- 日曜日や祝日を除外する
- 水曜日・土曜日の午後部分に斜線を設定する
- 予約入力用のセルを配置する
VBAではDateSerial関数を利用すると、指定した年月の日付を簡単に作成できます。またWeekday関数を使うことで、その日が何曜日なのかを判定できます。
例えば、日曜日の場合は作成処理を停止し、水曜日や土曜日の場合は午後のセルだけ書式を変更するといった条件分岐を作ることができます。
年月を入力して日付シートを自動作成するVBA例
基本的な流れとして、入力した年月から日付ごとのシートを作成するコードは以下のようになります。
実際の業務では、会社ごとの予約項目や担当者欄などを追加してカスタマイズしますが、まずは日付を自動生成する仕組みを理解すると応用しやすくなります。
Sub 予約表作成()
Dim 年 As Integer
Dim 月 As Integer
Dim 日 As Integer
Dim 最終日 As Integer
Dim 日付 As Date
年 = Range("B1").Value
月 = Range("B2").Value
最終日 = Day(DateSerial(年, 月 + 1, 0))
For 日 = 1 To 最終日
日付 = DateSerial(年, 月, 日)
If Weekday(日付) <> vbSunday Then
Sheets.Add After:=Sheets(Sheets.Count)
ActiveSheet.Name = 月 & "月" & 日 & "日"
End If
Next 日
End Sub
このような処理を基本にして、休日判定や書式設定を追加していくことで、業務用の予約表として利用できる形に近づけられます。
日曜日や祝日を作成対象から除外する方法
日曜日を除外する場合は、曜日判定を利用します。Weekday関数で日曜日の場合だけ処理を飛ばすように設定できます。
祝日については、Excelシートに祝日一覧を作成しておき、COUNTIF関数やVBAの検索処理を利用して一致する日付を除外する方法がおすすめです。
例えば別シートに「2026/1/1」「2026/2/11」のように祝日一覧を登録しておけば、毎年変更される祝日にも対応できます。
水曜日と土曜日の午後休業に斜線を入れる方法
水曜日と土曜日だけ午後休業にする場合は、曜日を判定して午後部分のセルに罫線を設定します。
例えば予約表の午前欄をB列、午後欄をC列としている場合、水曜日または土曜日ならC列のセルに斜線を追加する処理を行います。
If Weekday(日付) = vbWednesday Or Weekday(日付) = vbSaturday Then
Range("C5").Borders(xlDiagonalDown).LineStyle = xlContinuous
End If
実際の予約表では、午後休業部分をグレー表示にしたり、「休業」と文字を表示したりする方法もあります。利用者が見やすい形式になるよう調整すると便利です。
VBA初心者が予約表を作るときの進め方
初めから複雑な予約システムを作ろうとすると難しく感じます。そのため、以下のような順番で作成すると理解しやすくなります。
- 年月入力欄を作る
- 日付を自動生成する
- 曜日判定を追加する
- 休日処理を追加する
- 予約入力欄や担当者欄を追加する
- ボタン操作で実行できるようにする
例えば最初は「指定した月の日付一覧を作る」だけでも十分です。その後、営業時間や休日ルールを追加していくことで、自社専用の予約表へ発展させられます。
まとめ|VBAならボタン1つで業務用予約表を作成できる
Excel VBAを使えば、毎月手作業で作っていた予約表を自動化することができます。年月を指定するだけで日付を作成し、曜日や祝日に応じた表示変更も可能です。
日曜日や祝日を除外したり、水曜日・土曜日の午後休業に斜線を入れたりする処理も、曜日判定とセルの書式設定を組み合わせれば実現できます。
VBA初心者の場合は、まず簡単な日付自動作成から始め、少しずつ条件や機能を追加していくことがおすすめです。業務内容に合わせて改善を重ねることで、使いやすい予約管理ツールを自分で作成できるようになります。


コメント