
Excelで毎月カレンダー予定表を作りたいけど、楽な方法ないかな?
毎月、日付をかいて、罫線引いてと、結構手間がかかるんだよね。
ボタン一つで作成できるといいのだけどなぁ…
毎月、Excelでカレンダー予定表を作るのって結構大変ですよね、日付書いて、土日に色分けしてと、色々と手を加えれば、時間が取られてしまいます。
年月だけを指定して、ボタン一つでその月のカレンダーを作れると嬉しいですよね。
そこで、Excelのvbaを使って、ボタンひとつでカレンダー予定表ができるツールを作ってみました。

そうそう、こういうのが欲しかったんですよ!
私は7年程、システムエンジニアで実務をやっていた経験があり、その時Excelのvbaも使用していました。
それでは、Excelのvbaでカレンダー予定表を作ってみましょう!
Excelvbaでカレンダー予定表を作ってみた
今回vbaで作ったカレンダー予定表は以下の4点の機能を搭載しています。
- 年月を入れてボタンを押すと、新しいシートとカレンダー予定表が作られる
- 土曜日は青、日曜日は赤の文字色
- カレンダーにはその日ごとの予定記入欄がある
- シート名は記入された年月とする

へー! 年月を入れてボタンを押すとカレンダー予定表が出来るんだ!
それでは作成したvbaの機能について、詳しく説明して行きますね!
カレンダー予定表作成の年月入力画面
年月を記入できるようになっています。そして、作成ボタンを押すと、新規のシートが自動で作られて、そのシートに記入された年月のカレンダー予定表が作成されます。
作成されたカレンダー予定表
vbaを使って作成されたカレンダー予定表には日付とその日の予定を記入する欄を設けています。土曜日は青、日曜日は赤色の文字色にしています。
カレンダー用に新しくシートを作成します。シート名は、入力された年月となっています。
既に入力された年月のシートが作成されていたら、作れないようにしています。
Excelvbaでカレンダー予定表の作成方法
Excelvbaを使って、カレンダー予定表の作成方法について説明します。
年月を入力するセルを用意する
1.「年月入力シート」という名前のシートを作成します
2.年月入力シートを以下の通りにして、入力画面を作ります。
- B1セルに「入力した年月のカレンダーを作成します。」と入力します
- B2、D2セルのセル色を変えます
- C2に「年」、E2に「月」と入力します
- 図形(正方形)を入力欄の隣に置いて、「作成」と入力します

まずは入力画面を作るのですね!
カレンダー予定表のテンプレートを用意する
新しいシートを作成し「temp」と名前をつけて、以下の通りにします。
- B1に「年」、B2に「月」、C2に「カレンダー」と入力します
- A3に「日付」と入力し、背景色を変更します
- B3からG3を結合して、「予定」と入力し、背景色を変更します
- B4からG4を結合して、B5からG5…….B34からG34まで結合していきます
- B3からG34までを選択して、罫線を引きます

カレンダー予定表のテンプレートだね、これに年月日が入るんだね!
vbaを使ってコードを入力する
1.ツール⇨マクロ⇨マクロの表示よりマクロの画面を表示する
2.マクロ名を「カレンダ」と入力して、「+」ボタンを押す。するとvbaエディターが開きます。
3.vbaエディターに以下、色付き枠内のソースをコピペする。
Dim strDate As String Dim StrWeek As String With Worksheets("年月入力シート") If Not (IsDate(.Range("B2").Value & "/" & .Range("D2").Value & "/1")) _ Or (.Range("B2").Value < 1000) Then MsgBox "年月の入力が間違いです" End End If Worksheets("temp").Copy after:=Worksheets("年月入力シート") Worksheets(2).Visible = True On Error GoTo myError Worksheets(2).Name = .Range("B2").Value & Format(.Range("D2").Value, "00") Worksheets(2).Cells(1, 1).Value = .Range("B2").Value Worksheets(2).Cells(2, 1).Value = .Range("D2").Value strDate = .Range("B2").Value & "/" & .Range("D2") & "/" End With With Worksheets(2) For i = 1 To 31 If IsDate(strDate & i) Then .Cells(3 + i, 1).Value = i Select Case Weekday(strDate & i) Case 1 StrWeek = "(日)" .Cells(3 + i, 1).Font.Color = RGB(255, 0, 0) Case 2 StrWeek = "(月) " Case 3 StrWeek = "(火)" Case 4 StrWeek = "(水)" Case 5 StrWeek = "(木)" Case 6 StrWeek = "(金)" Case 7 StrWeek = "(土) " .Cells(3 + i, 1).Font.Color = RGB(0, 0, 255) End Select .Cells(3 + i, 1).Value = .Cells(3 + i, 1).Value & StrWeek Else Exit For End If Next i .Select End With Exit Sub myError: Application.DisplayAlerts = False Worksheets(2).Delete Application.DisplayAlerts = ture Worksheets("年月入力シート").Select MsgBox " 既に作成されている年月です"
以上でExcelvbaを使ったプログラミングは終わりです。

プログラミングは難しいけど、コピペすればいいんですね!
ボタンにマクロを登録する
作成ボタンを右クリックして、マクロの登録をします。
作成した「カレンダ」マクロを選択します。以上でカレンダー作成機能が終わりです。

よし、作成ボタンにマクロ登録したよ!
Excelvbaでカレンダー予定表が作られるか確認
vbaでカレンダー予定表を作る機能を搭載したら、実際に動くかどうか試してみましょう!
B2に「2019」と入力して、D2に「2」と入力して作成ボタンを押します。
上記のような予定表ができたら成功です。これからは、好きな年月のカレンダー予定表が作成できますよ!

やった、これでカレンダー作りが楽になります!
まとめ
Excelvbaを使って、以下の機能を持つカレンダー予定表を作成するプログラムを作りました。
- 年月を入れてボタンを押すと、新しいシートとカレンダー予定表が作られる
- 土曜日は青、日曜日は赤の文字色
- カレンダー予定表にはその日ごとの予定記入欄がある
このプログラムがあれば、いつでも好きな年月のカレンダー予定表が作成することが出来て、少し便利になります。
また、簡単なvbaプログラミングなので、vbaについて勉強にもなると思います。
この記事が、あなたのお役に立てるなら幸いです。
コメント