はじめに
前回のカレンダーを改良して祝日や六曜を表示できるようにしました。誕生日などのイベントも表示できます。
六曜の表示には、以下のサイト(Vector)からダウンロードしたモジュールを利用させていただきました。感謝!!
※Visual BasicまたはExcel VBAで旧暦を計算する標準モジュール(ソース付き)
ダウンロード
今回も前回と同様にA4縦サイズです。上段に好みの写真やイラストを表示できます。
1か月単位で出力できるので必要な分だけ印刷して利用できます。
※ZIP圧縮形式なのでどこかに解凍してご利用ください。
※2021年の祝日を適用いたしました。【2020/12/13更新】
ちょこっと解説
カレンダーシート
メインのシートです。このシートでカレンダーを生成し印刷できます。
画像シート、祝日シート、休日シート
前回と同様なので省略します。
イベントシート
新しく追加しました。1行だけ表示可能ですが、誕生日、記念日、運動会などのイベントを記入出来ます。
VBA
カレンダーの表示部分のセルが変更になったので大きく変更しておりますが、基本的な処理は同様なのでダウンロードしてご確認ください。
六曜
1ヵ月分を取得して配列に格納したものを返す関数を作りました。
Vectorからダウンロードしたモジュールを標準モジュールに追加して六曜取得の処理を追加してあります。
Calc_Kyureki y, m, dd
で1日毎に旧暦を求めて
Kyureki.QRokuyou
で六曜を取得できます。
''' 六曜取得 Private Function GetRokuyo(y As Integer, m As Integer) Dim d(5, 6) As String Dim startDate As Date Dim endD As Integer Dim youbi As Integer ' 1:日曜日 ~ 7:土曜日 Dim i As Integer Dim j As Integer Dim dd As Integer ' 日付配列初期化 For i = 0 To 5 For j = 0 To 6 d(i, j) = "" Next j Next i ' 開始曜日取得 startDate = CDate(y & "/" & m & "/1") youbi = Weekday(startDate) ' 月末日付取得 endD = CInt(Format(DateAdd("d", -1, DateAdd("m", 1, startDate)), "d")) dd = 1 For i = 0 To 5 If dd > endD Then Exit For For j = 0 To 6 If i = 0 And j < youbi - 1 Then Else If dd > endD Then Exit For Calc_Kyureki y, m, dd d(i, j) = Kyureki.QRokuyou dd = dd + 1 End If Next j Next i GetRokuyo = d Exit Function Err_Handler: MsgBox Err.Description, vbExclamation End Function
最後に
意外と大変なのが、1年分の画像を用意することですね。
勝手に配布も出来ないため、がんばってご用意ください。
【2020/12/13追記】
カレンダーv2を以前にダウンロードされた方の祝日シートに以下のデータが抜けているため過去のカレンダーを扱う場合はご注意ください。
最新版をダウンロードしていただくことで修正され、かつ2021年の祝日も追加されます。
1959/04/10 親王結婚の儀
1966/09/15 敬老の日
1966/10/10 体育の日
1984/09/24 振替休日
1989/02/24 大喪の礼
1990/09/24 振替休日
1990/11/12 即位礼正殿の儀
1993/06/09 親王結婚の儀
2007/02/12 振替休日
2007/04/30 振替休日
2007/09/24 振替休日
2007/12/24 振替休日
2013/11/04 振替休日