空腹おやじのログと備忘録

VBA(主にExcel)でいろいろな実験的な事とか、Linuxのコマンドとか設定とかについて忘れないように、あれこれと・・・

VBAで休日判定処理を使って、Excelワークシートに休日カレンダーを作る

休日判定を作ったので、その応用を2。

Excelのワークシートに休日を指定色にしたカレンダーを作成してみる。
ソースコードへのリンクは下の方に・・・)

更新履歴

2019/6/13
横1列バージョンを追加しました。

仕様みたいなもの

通常(?)の1週間横並び
  • 年指定(1月から12月)
  • 年度指定(4月から翌年3月)

オプション

  • 横1行に表示する月数を可変
  • 書き込み基準位置指定可能
  • 月と月の間のセル数可変(縦、横)
  • 曜日と曜日の間のセル数可変
  • 週と週の間のセル数可変
  • 休日色(背景、文字)可変
  • 日付、曜日、休日名表示
  • 書き込み基準位置指定可能
  • 月、日(日付ではない)、曜日表示
  • 書き込み基準位置指定可能

サンプル画像

(4月29日とか、通常の休日を非休日と設定している部分もあるので、普通の正しい(?)カレンダーとは異なるのでご注意を。)
1月から12月(3×4)
f:id:Z1000S:20180909175227j:plain
1月から12月(4×3)
f:id:Z1000S:20180909175235j:plain
1月から12月(6×2)
f:id:Z1000S:20180909175243j:plain
1月から12月(3×4、日間セルあり)
f:id:Z1000S:20180909175251j:plain
4月から3月(3×4)
f:id:Z1000S:20180909175258j:plain

f:id:Z1000S:20180909175304j:plain

f:id:Z1000S:20190613104721j:plain

事前準備

休日判定処理クラスの休日設定(の確認)

パブリックメソッド

  • createCalendarY(指定年の1月から12月までのカレンダー作成)
  • createCalendarYD(指定年度の4月から3月までのカレンダー作成)
  • createCalendarYMV(指定年月の縦カレンダー作成)
  • createCalendarYMH(指定年月の横カレンダー作成)

ソースコード

▶クリックで展開
注意
既存のワークシートに書き込む場合、以下のコードで確認メッセージなしで、全部クリアされますので・・・

    ws.Range(.Cells(1, 1), .Cells(.Rows.Count, .Columns.Count)).Clear

生成されるワークシート名は、以下の通りです。

TARGET_SHEET_PREFIX & CStr(lYear)

デフォルトのまま使うと
TARGET_SHEET_PREFIX は、"Calendar"
なので、2019年のカレンダーを作ろうとした場合、
Calendar2019
というワークシート名になります。

2021/4/11
都合により、ソースは、こちら に移動しました。
github.com

モジュール先頭の定数を適当にいじって、いろいろ試してみて下さい。

上記とは別に、CCompanyHolidayのソースも必要です。
CCompanyHoliday のソースは、こちらから持っていって下さい。

CCompanyHolidayのソースも、上記リンク にあります。

余談

今回の処理は、Excel限定なので、クラスモジュールの祝日定義のデータを、クラスモジュールからワークシートに移したほうが間違いなく使いやすく(メンテナンスしやすく)なります。
もし、本気で使おうとする(がんばりやさんの)方がいたら、ぜひ挑戦(?)してみて下さい。
祝日情報生成のたぐいのメソッドのインターフェイスを変えずに中身のみ変えれば出来ます。
空腹おやじは、そこまで元気がありませんので・・・