オブジェクト | 用途等 |
---|---|
modAboutCalendar2R | クラスの初期化及び月間カレンダーテーブルのユーザー定義や公開プロシージャが収容されています。 |
clsAboutCalendar2R | 実際のカレンダー作成の全機能が収容されているクラスです。利用者プログラムから呼び出すことも可能ですが、上記の「modAboutCalendar2R」が呼び出し部分を行なうようにしているので、
利用者プログラムは「祝日(休日)の変更」以外では意識しなくても良いようにしてあります。 ※祝日変更の場合は最後の方のプロシージャの修正が必要です。 |
プロシージャID | 説明 |
---|---|
GP_InitAboutCalendar | カレンダー関連関数クラス初期化 [戻値]なし [引数]なし |
GP_GetCalendarTable1 | カレンダーテーブル作成(当月1ヶ月用) [戻値]なし [引数]①年 ②月 ③カレンダーテーブルが返される ※カレンダー関連関数クラスが初期化済でない時は本処理から初期化される |
GP_GetCalendarTable1R | カレンダーテーブル作成(当月1ヶ月用) [戻値]なし [引数]①年 ②月 ③カレンダーテーブルが返される ※カレンダー関連関数クラスが初期化済であること(本処理内では判定しない) |
GP_GetCalendarTable3 | カレンダーテーブル作成(当月+前後の3ヶ月用) [戻値]なし [引数]①年 ②月 ③カレンダーテーブルが返される ④当月開始位置INDEXが返される(Option) ⑤当月終了位置INDEXが返される(Option) ※カレンダー関連関数クラスが初期化済でない時は本処理から初期化される |
GP_GetCalendarTable3R | カレンダーテーブル作成(当月+前後の3ヶ月用) [戻値]なし [引数]①年 ②月 ③カレンダーテーブルが返される ④当月開始位置INDEXが返される(Option) ⑤当月終了位置INDEXが返される(Option) ※カレンダー関連関数クラスが初期化済であること(本処理内では判定しない) |
GP_SumEigyoNissu | 営業日数算出(土日祝日を除外) [戻値]なし [引数]①期間開始日 ②期間終了日 ③営業日数が返される ④歴日数が返される(Option) |
GP_SumEigyoBi | 営業日数経過後営業日算出(土日祝日を除外) [戻値]なし [引数]①起算日 ②経過営業日数(マイナス可) ③算出結果(営業日日付)が返される |
'***************************************************************************************************
' カレンダー関連関数(クラス呼び出し部分) modAboutCalendar2R(Module)
'
' 作成者:井上治 URL:https://www.ne.jp/asahi/excel/inoue/ [Excelでお仕事!]
'***************************************************************************************************
' ※カレンダー関連関数の主要部分はクラス(clsAboutCalendar2R)側に実装されている
'***************************************************************************************************
'変更日付 Rev 変更履歴内容------------------------------------------------------------------------>
'18/09/17(1.70)新規作成
'18/09/23(1.71)クラス初期化判定を行なわないプロシージャを追加(連続呼び出し用)
'***************************************************************************************************
Option Explicit
'===================================================================================================
' 祝日含むカレンダーテーブル用ユーザー定義(公開)
Public Type g_typAboutCalendar2
Hiduke As Date ' 日付
Yobi As Long ' 曜日(0=日、1=月、2=火~6=土)
Syusu As Long ' 週数(1始まりで日曜日発見時に1加算)
HmSyusu As Long ' 週数(0始まりで月曜日発見時に1加算) ※祝日法(HM)対応
Syuku As Long ' 祝日判定(0=通常、1=祝日、2=振替休日、3=会社休日)
SyukuNm As String ' 祝日名称
FurikaeKbn As Long ' 振替区分(0=通常、1=振替休日を行なわない)
End Type
'---------------------------------------------------------------------------------------------------
' カレンダー関連関数クラス
Public g_clsAboutCalendar As clsAboutCalendar2R ' カレンダー関連関数クラス
Private g_blnInitAboutCalendar As Boolean ' カレンダー関連関数クラス初期化判定
' [注]VBAではモジュール保持変数の「保持」は保証されない
'***************************************************************************************************
' ■■■ 公開プロシージャ(Public) ■■■
'***************************************************************************************************
'* 処理名 :GP_InitAboutCalendar
'* 機能 :カレンダー関連関数クラス初期化
'---------------------------------------------------------------------------------------------------
'* 返り値 :(なし)
'* 引数 :(なし)
'---------------------------------------------------------------------------------------------------
'* 作成日 :2018年09月17日
'* 作成者 :井上 治
'* 更新日 :2018年09月23日
'* 更新者 :井上 治
'* 機能説明:
'* 注意事項:初期化済みの場合はスキップされる
'***************************************************************************************************
Public Sub GP_InitAboutCalendar()
'-----------------------------------------------------------------------------------------------
' 未初期化なら初期化を行なう
If Not g_blnInitAboutCalendar Then
' カレンダー関連関数クラスを初期化(クラス側で祝日パラメータテーブルが作成される)
Set g_clsAboutCalendar = New clsAboutCalendar2R
g_blnInitAboutCalendar = True
End If
End Sub
'***************************************************************************************************
'* 処理名 :GP_GetCalendarTable1
'* 機能 :カレンダーテーブル作成(当月1ヶ月用)
'---------------------------------------------------------------------------------------------------
'* 返り値 :(なし)
'* 引数 :Arg1 = 年(Long)
'* Arg2 = 月(Long)
'* Arg3 = カレンダーテーブル(Array:Structure) ※Ref参照
'---------------------------------------------------------------------------------------------------
'* 作成日 :2018年09月17日
'* 作成者 :井上 治
'* 更新日 :2018年09月17日
'* 更新者 :井上 治
'* 機能説明:
'* 注意事項:
'***************************************************************************************************
Public Sub GP_GetCalendarTable1(ByVal lngY As Long, _
ByVal lngM As Long, _
ByRef tblCalendar() As g_typAboutCalendar2)
'-----------------------------------------------------------------------------------------------
' カレンダー関連関数クラス初期化
Call GP_InitAboutCalendar
' カレンダーテーブル作成(当月分)
Call g_clsAboutCalendar.GetCalendarTable1(lngY, lngM, tblCalendar)
End Sub
'***************************************************************************************************
'* 処理名 :GP_GetCalendarTable1R
'* 機能 :カレンダーテーブル作成(当月1ヶ月用)
'---------------------------------------------------------------------------------------------------
'* 返り値 :(なし)
'* 引数 :Arg1 = 年(Long)
'* Arg2 = 月(Long)
'* Arg3 = カレンダーテーブル(Array:Structure) ※Ref参照
'---------------------------------------------------------------------------------------------------
'* 作成日 :2018年09月23日
'* 作成者 :井上 治
'* 更新日 :2018年09月23日
'* 更新者 :井上 治
'* 機能説明:
'* 注意事項:カレンダー関連関数クラスが初期化済であること(本処理内では判定しない)
'***************************************************************************************************
Public Sub GP_GetCalendarTable1R(ByVal lngY As Long, _
ByVal lngM As Long, _
ByRef tblCalendar() As g_typAboutCalendar2)
'-----------------------------------------------------------------------------------------------
' カレンダーテーブル作成(当月分)
Call g_clsAboutCalendar.GetCalendarTable1(lngY, lngM, tblCalendar)
End Sub
'***************************************************************************************************
'* 処理名 :GP_GetCalendarTable3
'* 機能 :カレンダーテーブル作成(当月+前後の3ヶ月用)
'---------------------------------------------------------------------------------------------------
'* 返り値 :(なし)
'* 引数 :Arg1 = 年(Long)
'* Arg2 = 月(Long)
'* Arg3 = カレンダーテーブル(Array:Structure) ※Ref参照
'* Arg4 = カレンダーテーブル当月開始INDEX(Long) ※Ref参照(Option)
'* Arg5 = カレンダーテーブル当月終了INDEX(Long) ※Ref参照(Option)
'---------------------------------------------------------------------------------------------------
'* 作成日 :2018年09月17日
'* 作成者 :井上 治
'* 更新日 :2018年09月17日
'* 更新者 :井上 治
'* 機能説明:
'* 注意事項:
'***************************************************************************************************
Public Sub GP_GetCalendarTable3(ByVal lngYear As Long, _
ByVal lngMonth As Long, _
ByRef tblCalendar() As g_typAboutCalendar2, _
Optional ByRef lngCurrStartIx As Long = -1, _
Optional ByRef lngCurrEndIx As Long = -1)
'-----------------------------------------------------------------------------------------------
' カレンダー関連関数クラス初期化
Call GP_InitAboutCalendar
' カレンダーテーブル作成(当月+前後の3ヶ月用)
Call g_clsAboutCalendar.GetCalendarTable3(lngYear, _
lngMonth, _
tblCalendar, _
lngCurrStartIx, _
lngCurrEndIx)
End Sub
'***************************************************************************************************
'* 処理名 :GP_GetCalendarTable3R
'* 機能 :カレンダーテーブル作成(当月+前後の3ヶ月用)
'---------------------------------------------------------------------------------------------------
'* 返り値 :(なし)
'* 引数 :Arg1 = 年(Long)
'* Arg2 = 月(Long)
'* Arg3 = カレンダーテーブル(Array:Structure) ※Ref参照
'* Arg4 = カレンダーテーブル当月開始INDEX(Long) ※Ref参照(Option)
'* Arg5 = カレンダーテーブル当月終了INDEX(Long) ※Ref参照(Option)
'---------------------------------------------------------------------------------------------------
'* 作成日 :2018年09月23日
'* 作成者 :井上 治
'* 更新日 :2018年09月23日
'* 更新者 :井上 治
'* 機能説明:
'* 注意事項:カレンダー関連関数クラスが初期化済であること(本処理内では判定しない)
'***************************************************************************************************
Public Sub GP_GetCalendarTable3R(ByVal lngYear As Long, _
ByVal lngMonth As Long, _
ByRef tblCalendar() As g_typAboutCalendar2, _
Optional ByRef lngCurrStartIx As Long = -1, _
Optional ByRef lngCurrEndIx As Long = -1)
'-----------------------------------------------------------------------------------------------
' カレンダーテーブル作成(当月+前後の3ヶ月用)
Call g_clsAboutCalendar.GetCalendarTable3(lngYear, _
lngMonth, _
tblCalendar, _
lngCurrStartIx, _
lngCurrEndIx)
End Sub
'***************************************************************************************************
'* 処理名 :GP_SumEigyoNissu
'* 機能 :営業日数算出(土日祝日を除外)
'---------------------------------------------------------------------------------------------------
'* 返り値 :(なし)
'* 引数 :Arg1 = 期間開始日(Date)
'* Arg2 = 期間終了日(Date)
'* Arg3 = 営業日数(Long) ※Ref参照
'* Arg4 = 歴日数(Long) ※Ref参照(Option)
'---------------------------------------------------------------------------------------------------
'* 作成日 :2018年09月17日
'* 作成者 :井上 治
'* 更新日 :2018年09月17日
'* 更新者 :井上 治
'* 機能説明:
'* 注意事項:開始日、終了日自体も営業日判断に適用される
'***************************************************************************************************
Public Sub GP_SumEigyoNissu(ByVal dteDateF As Date, _
ByVal dteDateT As Date, _
ByRef lngCntEigyo As Long, _
Optional ByRef lngCntReki As Long = 0)
'-----------------------------------------------------------------------------------------------
' カレンダー関連関数クラス初期化
Call GP_InitAboutCalendar
' 営業日数算出(土日祝日を除外)
Call g_clsAboutCalendar.SumEigyoNissu(dteDateF, dteDateT, lngCntEigyo, lngCntReki)
End Sub
'***************************************************************************************************
'* 処理名 :GP_SumEigyoBi
'* 機能 :営業日数経過後営業日算出(土日祝日を除外)
'---------------------------------------------------------------------------------------------------
'* 返り値 :(なし)
'* 引数 :Arg1 = 起算日(Date)
'* Arg2 = 経過日数(Long) ※±可能
'* Arg3 = 営業日数経過後営業日(Date) ※Ref参照(Option)
'---------------------------------------------------------------------------------------------------
'* 作成日 :2018年09月17日
'* 作成者 :井上 治
'* 更新日 :2018年09月17日
'* 更新者 :井上 治
'* 機能説明:経過日数は翌日(翌営業日)を「1」として算出される(前営業日は「-1」)
'* 注意事項:経過日数がゼロの場合は起算日をそのまま返す(土日祝判断なし)
'***************************************************************************************************
Public Sub GP_SumEigyoBi(ByVal dteDateF As Date, _
ByVal lngCntKeika As Long, _
ByRef dteDateT As Date)
'-----------------------------------------------------------------------------------------------
' カレンダー関連関数クラス初期化
Call GP_InitAboutCalendar
' 営業日数経過後営業日算出(土日祝日を除外)
Call g_clsAboutCalendar.SumEigyoBi(dteDateF, lngCntKeika, dteDateT)
End Sub
'----------------------------------------<< End of Source >>----------------------------------------
'***************************************************************************************************
' カレンダー及び日付処理(祝日含む)関連関数クラス clsAboutCalendar2R(Class)
'
' ※本クラスの操作は全てカレンダー関連モジュール(modAboutCalendar2R)で行ないます
' 本モジュールは祝日パラメータテーブルを作成してその祝日情報を元にカレンダーテーブルを作成します
' ※祝日法改正時は下の方にある「祝日パラメータテーブルの作成(GP_MakeHoliParameter)」の変更が必要です
'
' 作成者:井上治 URL:https://www.ne.jp/asahi/excel/inoue/ [Excelでお仕事!]
'***************************************************************************************************
'変更日付 Rev 変更履歴内容------------------------------------------------------------------------>
'18/02/07(1.00)新規作成
'18/02/08(1.10)カレンダーテーブルに振替区分(0=通常、1=振替休日を行なわない)を追加する対応
'18/02/08(1.10)「カレンダーテーブル作成(当月+前後の3ヶ月用)」を追加
'18/02/10(1.20)クラス化移行のため、本モジュールはユーザー定義のみとする
'18/02/18(1.30)動作改善のため再作成(クラス化は廃止)
'18/02/21(1.40)GetCalendarTable3に当月開始・終了INDEXを返す引数(Option)を追加
'18/02/21(1.40)名称変更(g_typCalendar2⇒g_typAboutCalendar2) ※他との重複対応
'18/02/28(1.50)会社休日適用時に会社休日が振替休日や国民の休日と重なる時は法制休日を優先させる対応
'18/03/07(1.51)1日が日曜日だと週数が2始まりになってしまう件を修正
'18/03/07(1.60)各関数にチェック処理をスキップするオプションを追加(事前チェックが済んでいる前提です)
'18/09/17(1.70)「週数」のカウント誤りを再修正
'18/09/17(1.70)祝日パラメータシートを使わない方式としてクラス化(チェック処理廃止⇒Subプロシージャ化)
'18/09/23(1.71)クラス初期化判定を行なわないプロシージャを追加(連続呼び出し用、クラス側変更無し)
'18/10/15(1.71)コード、コメント整理(バージョン値更新無し)
'18/10/23(1.72)祝日パラメータテーブル要素追加の引数INDEXを廃止する対応(内部Static変数に変更)
'18/12/08(1.73)新天皇即位の日(5/1)、即位礼正殿の儀(10/22)を2019年限定で追加(名称は暫定)
'19/12/22(1.74)春分の日・秋分の日算出の処理タイトルコメントの引数説明誤りを修正(処理変更無し)
'20/12/12(1.75)2021年五輪大会特別措置法による祝日変更対応
'***************************************************************************************************
Option Explicit
'===================================================================================================
' ↓↓↓ バージョン値、バージョン更新日は本クラスの変更を行なう時に必ず更新すること ↓↓↓
Private Const g_cnsCalendarVersion As String = "1.75" ' 本クラスのバージョン
Private Const g_cnsCalendarVerUpdDate As Date = #12/12/2019# ' バージョン更新日
' ↑↑↑ バージョン値、バージョン更新日は本クラスの変更を行なう時に必ず更新すること ↑↑↑
'===================================================================================================
Private Const g_cnsFuri As String = "(振替休日)"
Private Const g_cnsKyu2 As String = "国民の休日"
Private Const g_cnsKyu3 As String = "(会社休日)"
'---------------------------------------------------------------------------------------------------
' 祝日パラメータテーブル用ユーザー定義
Private Type g_typParamater
Getsu As Long ' 月
SyoriKbn As Long ' 処理区分(0=固定日、1=HappyMonday、2=会社休日、9=特殊)
Hiduke As Long ' [固定日]日(Date型ではない)
FurikaeKbn As Long ' [固定日]振替区分(0=通常、1=振替休日を行なわない)
HmSyusu As Long ' [HM]週数(第n週)
HmYobi As Long ' [HM]曜日(0=日、1=月、2=火~6=土)
SyukuNm As String ' 祝日名
StrYear As Long ' 開始年(西暦)
EndYear As Long ' 終了年(西暦)
End Type
'---------------------------------------------------------------------------------------------------
' 祝日パラメータ月別配置テーブル用ユーザー定義
Private Type g_typParamMMPos
StrIx As Long ' 当月開始位置INDEX(祝日無しは-1)
EndIx As Long ' 当月終了位置INDEX(祝日無しは-1)
End Type
'---------------------------------------------------------------------------------------------------
' 振替休日・国民の休日判定対象テーブル用ユーザー定義
Private Type g_typFuriDIx
CalIx As Long ' カレンダーINDEX
Syubetsu As Long ' 0=振替休日、1=国民の休日
End Type
'===================================================================================================
' 祝日パラメータテーブル(全件)
Private g_tblParamater() As g_typParamater ' 祝日パラメータテーブル
'---------------------------------------------------------------------------------------------------
' 祝日パラメータ配置テーブル(このテーブルは月をINDEXとするため1オリジン)
Private g_tblParamMMPos(1 To 12) As g_typParamMMPos ' 祝日パラメータ月別配置テーブル
'***************************************************************************************************
' ■■■ プロパティ(Friend) ■■■
'***************************************************************************************************
' 本クラスのバージョン(String)
'---------------------------------------------------------------------------------------------------
Friend Property Get Version() As String
Version = g_cnsCalendarVersion
End Property
'===================================================================================================
' バージョン更新日(Date)
'---------------------------------------------------------------------------------------------------
Friend Property Get VerUpdDate() As Date
VerUpdDate = g_cnsCalendarVerUpdDate
End Property
・
・
《中略》
・
・
'***************************************************************************************************
'* 処理名 :GP_MakeHoliParameter
'* 機能 :祝日パラメータテーブルの作成
'---------------------------------------------------------------------------------------------------
'* 返り値 :(なし)
'* 引数 :(なし)
'---------------------------------------------------------------------------------------------------
'* 作成日 :2018年09月17日
'* 作成者 :井上 治
'* 更新日 :2020年12月12日
'* 更新者 :井上 治
'* 機能説明:
'* 注意事項:本プロシージャは祝日法改正時に変更が必要!!
'***************************************************************************************************
Private Sub GP_MakeHoliParameter()
'-----------------------------------------------------------------------------------------------
Dim lngIxTbl As Long ' テーブルINDEX
' 祝日パラ月別範囲テーブルを一旦初期化
For lngIxTbl = 1 To 12
With g_tblParamMMPos(lngIxTbl)
.StrIx = -1
.EndIx = -1
End With
Next lngIxTbl
ReDim g_tblParamater(0)
'===============================================================================================
' ※各月で呼び出している「祝日パラメータテーブル要素追加(GP_ApendHoliParam)」については
' この次のプロシージャのタイトルコメントを参照して下さい
' DBやExcelシートから祝日パラメータを参照してテーブル作成する機能を代替しています。
'===============================================================================================
' 1月
'-----------------------------------------------------------------------------------------------
' 元旦(1日)
Call GP_ApendHoliParam(1, 0, 1, 0, 0, 0, "元旦", 0, 9999)
' ※引数の説明 ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑
' │ │ │ │ │ │ │ │ └───⑨終了年
' │ │ │ │ │ │ │ └────⑧開始年
' │ │ │ │ │ │ └───────⑦祝日名
' │ │ │ │ │ └─────── ⑥[HappyMonday]曜日(1=月曜)
' │ │ │ │ └────────⑤[HappyMonday]第n週
' │ │ │ └──────── ④[固定日]振替有無(1=振休無し)
' │ │ └─────────③[固定日]日付(1~31)
' │ └───────── ②処理区分(0=固定日、1=HappyMonday、2=会社休日、9=特殊)
' └──────────①月(1~12)
' 成人の日(1999年までは15日固定)
Call GP_ApendHoliParam(1, 0, 15, 0, 0, 0, "成人の日", 0, 1999)
' 成人の日(2000年以降は第2月曜日(HappyMonday))
Call GP_ApendHoliParam(1, 1, 0, 0, 2, 1, "成人の日", 2000, 9999)
'===============================================================================================
' 2月
'-----------------------------------------------------------------------------------------------
' 建国記念の日(11日)
Call GP_ApendHoliParam(2, 0, 11, 0, 0, 0, "建国記念の日", 1967, 9999)
' 天皇誕生日(23日、徳仁親王:2020年より)
Call GP_ApendHoliParam(2, 0, 23, 0, 0, 0, "天皇誕生日", 2020, 9999)
'===============================================================================================
' 3月
'-----------------------------------------------------------------------------------------------
' 春分の日(※特殊計算)
Call GP_ApendHoliParam(3, 9, 0, 0, 0, 0, "春分の日", 0, 9999)
'===============================================================================================
' 4月
'-----------------------------------------------------------------------------------------------
' 天皇誕生日(29日、昭和天皇~1988年)
Call GP_ApendHoliParam(4, 0, 29, 0, 0, 0, "天皇誕生日", 0, 1988)
' みどりの日(29日、1989~2006年)
Call GP_ApendHoliParam(4, 0, 29, 0, 0, 0, "みどりの日", 1989, 2006)
' 昭和の日(29日、2007年~)
Call GP_ApendHoliParam(4, 0, 29, 0, 0, 0, "昭和の日", 2007, 9999)
'===============================================================================================
' 5月
'-----------------------------------------------------------------------------------------------
' 新天皇即位の日(1日、2019年のみ、名称は暫定)
Call GP_ApendHoliParam(5, 0, 1, 0, 0, 0, "新天皇即位の日", 2019, 2019)
' 憲法記念日(3日)
Call GP_ApendHoliParam(5, 0, 3, 0, 0, 0, "憲法記念日", 0, 9999)
' 国民の休日(4日、2006年までは翌日が子供の日なので飛び越しの振替休日は無し)
Call GP_ApendHoliParam(5, 0, 4, 1, 0, 0, "国民の休日", 1986, 2006)
' みどりの日(4日、2007年~、日曜日なら5/6に振り替え)
Call GP_ApendHoliParam(5, 0, 4, 0, 0, 0, "みどりの日", 2007, 9999)
' こどもの日(5日)
Call GP_ApendHoliParam(5, 0, 5, 0, 0, 0, "こどもの日", 0, 9999)
'===============================================================================================
' 6月
'-----------------------------------------------------------------------------------------------
' ※祝日無し
'===============================================================================================
' 7月
'-----------------------------------------------------------------------------------------------
' 海の日(2002年までは20日固定)
Call GP_ApendHoliParam(7, 0, 20, 0, 0, 0, "海の日", 1996, 2002)
' 海の日(2003~2019年は第3月曜日(HappyMonday))
Call GP_ApendHoliParam(7, 1, 0, 0, 3, 1, "海の日", 2003, 2019)
' 海の日(2020年のみ東京五輪特別措置法で23日)
Call GP_ApendHoliParam(7, 0, 23, 0, 0, 0, "海の日", 2020, 2020)
' 海の日(2021年のみ東京五輪特別措置法で22日)
Call GP_ApendHoliParam(7, 0, 22, 0, 0, 0, "海の日", 2021, 2021) ' ←2020/12/12追加
' 海の日(2021年以降は第3月曜日(HappyMonday))
Call GP_ApendHoliParam(7, 1, 0, 0, 3, 1, "海の日", 2022, 9999) ' ←2020/12/12変更
' スポーツの日(2020年のみ東京五輪特別措置法で24日、10月の「体育の日」の移動+名称変更)
Call GP_ApendHoliParam(7, 0, 24, 0, 0, 0, "スポーツの日", 2020, 2020)
' スポーツの日(2021年のみ東京五輪特別措置法で24日、10月の「体育の日」の移動+名称変更)
Call GP_ApendHoliParam(7, 0, 23, 0, 0, 0, "スポーツの日", 2021, 2021) ' ←2020/12/12追加
'===============================================================================================
' 8月
'-----------------------------------------------------------------------------------------------
' 山の日(11日)
Call GP_ApendHoliParam(8, 0, 11, 0, 0, 0, "山の日", 2016, 2019)
' 山の日(2020年のみ東京五輪特別措置法で10日)
Call GP_ApendHoliParam(8, 0, 10, 0, 0, 0, "山の日", 2020, 2020)
' 山の日(2021年のみ東京五輪特別措置法で8日)
Call GP_ApendHoliParam(8, 0, 8, 0, 0, 0, "山の日", 2021, 2021) ' ←2020/12/12追加
' 山の日(11日)
Call GP_ApendHoliParam(8, 0, 11, 0, 0, 0, "山の日", 2022, 9999) ' ←2020/12/12変更
'===============================================================================================
' 9月
'-----------------------------------------------------------------------------------------------
' 敬老の日(2002年までは15日固定)
Call GP_ApendHoliParam(9, 0, 15, 0, 0, 0, "敬老の日", 0, 2002)
' 敬老の日(2003年以降は第3月曜日(HappyMonday))
Call GP_ApendHoliParam(9, 1, 0, 0, 3, 1, "敬老の日", 2003, 9999)
' 秋分の日(※特殊計算)
Call GP_ApendHoliParam(9, 9, 0, 0, 0, 0, "秋分の日", 0, 9999)
'===============================================================================================
' 10月
'-----------------------------------------------------------------------------------------------
' 体育の日(1999年までは10日固定)
Call GP_ApendHoliParam(10, 0, 10, 0, 0, 0, "体育の日", 1966, 1999)
' 体育の日(2000年以降は第2月曜日(HappyMonday))
Call GP_ApendHoliParam(10, 1, 0, 0, 2, 1, "体育の日", 2000, 2019)
' スポーツの日(名称変更(旧「体育の日」)、2020,2021年は特別措置法で7月に移動)
Call GP_ApendHoliParam(10, 1, 0, 0, 2, 1, "スポーツの日", 2022, 9999) ' ←2020/12/12変更
' 即位礼正殿の儀(22日、2019年のみ、名称は暫定)
Call GP_ApendHoliParam(10, 0, 22, 0, 0, 0, "即位礼正殿の儀", 2019, 2019)
'===============================================================================================
' 11月
'-----------------------------------------------------------------------------------------------
' 文化の日(11日)
Call GP_ApendHoliParam(11, 0, 3, 0, 0, 0, "文化の日", 0, 9999)
' 勤労感謝の日(23日)
Call GP_ApendHoliParam(11, 0, 23, 0, 0, 0, "勤労感謝の日", 0, 9999)
'===============================================================================================
' 12月
'-----------------------------------------------------------------------------------------------
' 天皇誕生日(23日、平成天皇(明仁親王)~2018年)
Call GP_ApendHoliParam(12, 0, 23, 0, 0, 0, "天皇誕生日", 1989, 2018)
End Sub
'***************************************************************************************************
'* 処理名 :GP_ApendHoliParam
'* 機能 :祝日パラメータテーブル要素追加
'---------------------------------------------------------------------------------------------------
'* 返り値 :(なし)
'* 引数 :Arg1 = 月(Long)
'* Arg2 = 処理区分(Long) ※0=固定日、1=HappyMonday、2=会社休日、9=特殊
'* Arg3 = [固定日]日(Long)
'* Arg4 = [固定日]振替区分(Long) ※0=通常、1=振替休日を行なわない
'* Arg5 = [HM]週数(Long) ※第n週
'* Arg6 = [HM]曜日(Long) ※0=日、1=月、2=火~6=土
'* Arg7 = 祝日名(String)
'* Arg8 = 開始年(西暦)(Long)
'* Arg9 = 終了年(西暦)(Long)
'---------------------------------------------------------------------------------------------------
'* 作成日 :2018年09月17日
'* 作成者 :井上 治
'* 更新日 :2018年10月23日
'* 更新者 :井上 治
'* 機能説明:
'* 注意事項:テーブルINDEXは本処理側で加算されます
'***************************************************************************************************
Private Sub GP_ApendHoliParam(ByVal lngGetsu As Long, _
ByVal lngSyoriKbn As Long, _
ByVal lngHiduke As Long, _
ByVal lngFurikaeKbn As Long, _
ByVal lngHmSyusu As Long, _
ByVal lngHmYobi As Long, _
ByVal strSyukuNm As String, _
ByVal lngStrYear As Long, _
ByVal lngEndYear As Long)
'-----------------------------------------------------------------------------------------------
Static lngIxTbl As Long ' テーブルINDEX
ReDim Preserve g_tblParamater(lngIxTbl)
' 祝日パラ月別範囲テーブルを更新
With g_tblParamMMPos(lngGetsu)
' 開始位置
If .StrIx < 0 Then .StrIx = lngIxTbl
.EndIx = lngIxTbl
End With
' 祝日パラメータテーブル要素追加
With g_tblParamater(lngIxTbl)
.Getsu = lngGetsu
.SyoriKbn = lngSyoriKbn
.Hiduke = lngHiduke
.FurikaeKbn = lngFurikaeKbn
.HmSyusu = lngHmSyusu
.HmYobi = lngHmYobi
.SyukuNm = strSyukuNm
.StrYear = lngStrYear
.EndYear = lngEndYear
End With
' テーブルINDEXを加算
lngIxTbl = lngIxTbl + 1
End Sub
'----------------------------------------<< End of Source >>----------------------------------------
'***************************************************************************************************
'* 処理名 :GP_MakeHoliParameter
'* 機能 :祝日パラメータテーブルの作成
'---------------------------------------------------------------------------------------------------
'* 返り値 :(なし)
'* 引数 :(なし)
'---------------------------------------------------------------------------------------------------
'* 作成日 :2018年09月17日
'* 作成者 :井上 治
'* 更新日 :2018年10月23日
'* 更新者 :井上 治
'* 機能説明:
'* 注意事項:本プロシージャは祝日法改正時に変更が必要!!
'***************************************************************************************************
Private Sub GP_MakeHoliParameter()
・
・
《中略》
・
・
'===============================================================================================
' 1月
'-----------------------------------------------------------------------------------------------
' 元旦(1日)
Call GP_ApendHoliParam(1, 0, 1, 0, 0, 0, "元旦", 0, 9999)
' ※引数の説明 ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑
' │ │ │ │ │ │ │ │ └───⑨終了年
' │ │ │ │ │ │ │ └────⑧開始年
' │ │ │ │ │ │ └───────⑦祝日名
' │ │ │ │ │ └─────── ⑥[HappyMonday]曜日(1=月曜)
' │ │ │ │ └────────⑤[HappyMonday]第n週
' │ │ │ └──────── ④[固定日]振替有無(1=振休無し)
' │ │ └─────────③[固定日]日付(1~31)
' │ └───────── ②処理区分(0=固定日、1=HappyMonday、2=会社休日、9=特殊)
' └──────────①月(1~12)
'###############################################################################################
' ↓↓↓ ※1/1~1/3、12/29~12/31が会社休日の例 ↓↓↓
Call GP_ApendHoliParam(1, 2, 2, 1, 0, 0, g_cnsKyu3, 0, 9999) ' 1月2日
Call GP_ApendHoliParam(1, 2, 3, 1, 0, 0, g_cnsKyu3, 0, 9999) ' 1月3日
' ↑↑↑ ※1/1~1/3、12/29~12/31が会社休日の例 ↑↑↑
'###############################################################################################
' 成人の日(1999年までは15日固定)
Call GP_ApendHoliParam(1, 0, 15, 0, 0, 0, "成人の日", 0, 1999)
' 成人の日(2000年以降は第2月曜日(HappyMonday))
Call GP_ApendHoliParam(1, 1, 0, 0, 2, 1, "成人の日", 2000, 9999)
・
・
《中略》
・
・
'===============================================================================================
' 12月
'-----------------------------------------------------------------------------------------------
' 天皇誕生日(23日、平成天皇(明仁親王)~2018年)
Call GP_ApendHoliParam(12, 0, 23, 0, 0, 0, "天皇誕生日", 1989, 2018)
'###############################################################################################
' ↓↓↓ ※1/1~1/3、12/29~12/31が会社休日の例 ↓↓↓
Call GP_ApendHoliParam(12, 2, 29, 1, 0, 0, g_cnsKyu3, 0, 9999) ' 12月29日
Call GP_ApendHoliParam(12, 2, 30, 1, 0, 0, g_cnsKyu3, 0, 9999) ' 12月30日
Call GP_ApendHoliParam(12, 2, 31, 1, 0, 0, g_cnsKyu3, 0, 9999) ' 12月31日
' ↑↑↑ ※1/1~1/3、12/29~12/31が会社休日の例 ↑↑↑
'###############################################################################################
End Sub