カレンダーテーブル取得クラス

祝日判定をプログラムソースコード上でゴリゴリ書かないというのが今回の命題です。
この記事は2018年に作成しています。   今までの方法では、年間各月の祝日の判定はプログラムソース記述で行なっているのが現状でした。
2019~2021年では、平成天皇の退位や令和天皇の即位による「天皇誕生日」の移動、東京五輪特別措置法による祝日変更などで、祝日判定プログラムを変更する必要が発生しておりました。
であれば、このような祝日変更をプログラムの修正なく対応できないものか、と考えたのです。

春分の日、秋分の日は特殊な計算が必要ですが、それ以外の祝日はテーブル登録から計算できないかと考える時期が来ました。
そこで考えたのが「祝日パラメータ」シートによる方法です。
検証を含めており「年間カレンダー」を作成するようにしてあり、祝日判定に影響を受ける「営業日数計算」「営業日数経過後日付計算」も今回作成したプログラムに含めており、動作を検証するシートがサンプルにあるので確認して下さい。
なお、このページのタイトルは「クラス」になっているのですが、動作レスポンスの問題でクラスの初期化が問題となったため、モジュールでの供給に変更しています。

なお、そもそもの「祝日」についての定義は内閣府の説明があります。以下にリンクを置きます。
「国民の祝日」について(内閣府)

このページを作成するに至ったのは、所属する会社での「祝日処理」の一元化と今回のように「ソースコードに依存しない」更新手段の確立の上での事前検証でした。

このページの記事は2020年12月12日に更新しており、2021年東京五輪に関する祝日移動の特別措置法等の対応を行なった状態です。本件の説明も加えてあります。
「年間カレンダー」を作成するサンプルとしています。

作成した年間カレンダーのイメージ
(画像をクリックすると、このページのサンプルがダウンロードできます)

「カレンダー作成」シートからは、「年」期間を指定してその間の各年の祝日を反映した年間カレンダーが1年を1シートとして作成できます。
別のワークブックに転出されるので、作成したカレンダーブックにはマクロは残りません。

「営業日数関連」シート

今回作成したクラスには「営業日数計算」「営業日数経過後日付計算」のプロシージャも用意しており、「営業日数関連」シートで検証できるようにしています。

祝日情報は「祝日パラメータ」シートで設定します。

「祝日パラメータ」シート

このような「祝日パラメータ」シートを作成してあり、この設定に従って祝日の判定が行なわれるようになっています。
祝日の改正が行なわれる場合はこの「祝日パラメータ」シートを変更するだけで、プログラムソースコードの変更は必要ありません。
ダウンロードしていただくサンプルでは2020年、2021年の「東京五輪に関する祝日移動の特別措置法」等の対応を反映させたものになります。
この「祝日パラメータ」シートの設定項目や変更方法については「年間カレンダーの作成2(VBA応用)の中段の説明をご覧下さい。

「祝日パラメータ」シート

「祝日パラメータ」シートには年末年始や創立記念日など会社独自の休日も反映できるようになっています。

本機能を在来ワークブックに持ち込むには....
この機能を利用中のワークブックでこれらを利用するためには、以下のものを持ち込んで下さい。

オブジェクト 用途等
「祝日パラメータ」シート 上記のワークシートで、実行側ではこのシートは非表示にしておいて構いません。
modAboutCalendar2 月間カレンダーテーブルのユーザー定義や公開プロシージャ(起動部分)が収容されています。
clsAboutCalendar2 祝日パラメータテーブルや公開プロシージャ(実動作部分)を含む全機能が収容されています。
機能の呼び出し方については、本サンプルのソースコードを参考にして下さい。
各区分等の説明は「年間カレンダーの作成2」で説明しています。

「祝日パラメータシート」は使いたくない!
シート構成が変更できないなど「祝日パラメータシート」は使いたくないというご意見もいただきました。
本件については「年間カレンダー作成(祝日パラメータシートを使わない方法)で説明しています。