値 | 意味 | 説明 |
---|---|---|
0 | 固定日 | 日にちが固定されている祝日の区分です。「固定日時」の2項目を指定します。 |
1 | ハッピーマンデー | 「第n週月曜日」という指定を行なう区分です。「HM時」の2項目を指定します。 |
2 | 会社休日 | 区別のために値を設けていますが、動作は原則「固定日」と同じです。 但し、法制休日より優先されることはないようにしています。 |
9 | 特殊処理 | 「春分の日」「秋分の日」のための区分です。(特殊計算) |
値 | 意味 | 説明 |
---|---|---|
0 | 通常 | 該当日が日曜日と重なった時は以降の最初の平日が「振替休日」になる |
1 | 振替無し | 該当日が日曜日と重なっても他日を「振替休日」にしない |
値 | 意味 |
---|---|
0 | 日曜日 |
1 | 月曜日※ |
2 | 火曜日 |
3 | 水曜日 |
4 | 木曜日 |
5 | 金曜日 |
6 | 土曜日 |
オブジェクト | 用途等 |
---|---|
「祝日パラメータ」シート | 上記のワークシートで、実行側ではこのシートは非表示にしておいて構いません。 |
modAboutCalendar2 | 月間カレンダーテーブルのユーザー定義や公開プロシージャ(起動部分)が収容されています。 |
clsAboutCalendar2 | 祝日パラメータテーブルや公開プロシージャ(実動作部分)を含む全機能が収容されています。 |
プロシージャID | 説明 |
---|---|
FP_InitAboutCalendar | カレンダー関連関数クラス初期化 [戻値]処理結果(※祝日設定などで不備があると Falseが返る) [引数]①チェック工程スキップ(Option) ②強制再初期化スイッチ(Option) ※クラスが生成され、祝日パラメータテーブルが作成される ※本処理は各カレンダー作成時に初期化済みかの確認で呼び出される他、 ワークブックを開いた時と祝日パラメータシートからの戻り時にも呼び出すようにしています。 |
FP_GetCalendarTable1 | カレンダーテーブル作成(当月1ヶ月用) [戻値]処理結果(※祝日設定などで不備があると Falseが返る) [引数]①年 ②月 ③カレンダーテーブルが返される ④チェック工程スキップ(Option) ※カレンダー関連関数クラスが初期化済でない時は本処理から初期化される |
GP_GetCalendarTable1 | カレンダーテーブル作成(当月1ヶ月用) [戻値]※なし [引数]①年 ②月 ③カレンダーテーブルが返される ※カレンダー関連関数クラスが初期化済であること(本処理内では判定しない) |
FP_GetCalendarTable3 | カレンダーテーブル作成(当月+前後の3ヶ月用) [戻値]処理結果(※祝日設定などで不備があると Falseが返る) [引数]①年 ②月 ③カレンダーテーブルが返される ④当月開始位置INDEXが返される(Option) ⑤当月終了位置INDEXが返される(Option) ⑥チェック工程スキップ(Option) ※カレンダー関連関数クラスが初期化済でない時は本処理から初期化される |
GP_GetCalendarTable3 | カレンダーテーブル作成(当月+前後の3ヶ月用) [戻値]※なし [引数]①年 ②月 ③カレンダーテーブルが返される ④当月開始位置INDEXが返される(Option) ⑤当月終了位置INDEXが返される(Option) ※カレンダー関連関数クラスが初期化済であること(本処理内では判定しない) |
FP_SumEigyoNissu | 営業日数算出(土日祝日を除外) [戻値]処理結果(※祝日設定などで不備があると Falseが返る) [引数]①期間開始日 ②期間終了日 ③営業日数が返される ④歴日数が返される(Option) ⑤チェック工程スキップ(Option) ※カレンダー関連関数クラスが初期化済でない時は本処理から初期化される |
FP_SumEigyoBi | 営業日数経過後営業日算出(土日祝日を除外) [戻値]処理結果(※祝日設定などで不備があると Falseが返る) [引数]①起算日 ②経過営業日数(マイナス可) ③算出結果(営業日日付)が返される ④チェック工程スキップ(Option) ※カレンダー関連関数クラスが初期化済でない時は本処理から初期化される |
'***************************************************************************************************
' カレンダー関連関数(クラス呼び出し部分) modAboutCalendar2(Module)
'
' 作成者:井上治 URL:https://www.ne.jp/asahi/excel/inoue/ [Excelでお仕事!]
'***************************************************************************************************
' ※カレンダー関連関数の主要部分はクラス(clsAboutCalendar2)側に実装されている
'***************************************************************************************************
'変更日付 Rev 変更履歴内容------------------------------------------------------------------------>
'18/09/23(1.70)新規作成
'19/12/22(1.71)Option Private Moduleを追加
'22/05/20(1.72)FP_InitAboutCalendarに強制再初期化スイッチを追加(祝日パラメータ変更時即時更新対応)
'***************************************************************************************************
Option Explicit
Option Private Module
'===================================================================================================
Public Const g_cnsParaSheet As String = "祝日パラメータ"
'---------------------------------------------------------------------------------------------------
' 祝日含むカレンダーテーブル用ユーザー定義(公開)
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 clsAboutCalendar2 ' カレンダー関連関数クラス
Private g_blnInitAboutCalendar As Boolean ' カレンダー関連関数クラス初期化判定
' [注]VBAではモジュール保持変数の「保持」は保証されない
'***************************************************************************************************
' ■■■ 公開プロシージャ(Public) ■■■
'***************************************************************************************************
'* 処理名 :FP_InitAboutCalendar
'* 機能 :カレンダー関連関数クラス初期化
'---------------------------------------------------------------------------------------------------
'* 返り値 :処理成否(Boolean)
'* 引数 :Arg1 = チェック工程スキップ(Boolean) ※Option
'* Arg2 = 強制再初期化スイッチ(Boolean) ※Option
'---------------------------------------------------------------------------------------------------
'* 作成日 :2018年09月23日
'* 作成者 :井上 治
'* 更新日 :2022年05月20日
'* 更新者 :井上 治
'* 機能説明:
'* 注意事項:初期化済みの場合はスキップされる
'***************************************************************************************************
Public Function FP_InitAboutCalendar(Optional ByVal blnOmitCheck As Boolean = False, _
Optional ByVal blnForcedInit As Boolean = False) As Boolean
'-----------------------------------------------------------------------------------------------
' 強制再初期化判定
If blnForcedInit Then
g_blnInitAboutCalendar = False
End If
' 未初期化なら初期化を行なう
If Not g_blnInitAboutCalendar Then
' カレンダー関連関数クラスを初期化
Set g_clsAboutCalendar = New clsAboutCalendar2
' 祝日パラメータテーブル作成
g_blnInitAboutCalendar = g_clsAboutCalendar.MakeHoliParamater(blnOmitCheck)
End If
FP_InitAboutCalendar = g_blnInitAboutCalendar
End Function
'***************************************************************************************************
'* 処理名 :FP_GetCalendarTable1
'* 機能 :カレンダーテーブル作成(当月1ヶ月用)
'---------------------------------------------------------------------------------------------------
'* 返り値 :処理成否(Boolean)
'* 引数 :Arg1 = 年(Long)
'* Arg2 = 月(Long)
'* Arg3 = カレンダーテーブル(Array:Structure) ※Ref参照
'* Arg4 = チェック工程スキップ(Boolean) ※Option
'---------------------------------------------------------------------------------------------------
'* 作成日 :2018年02月07日
'* 作成者 :井上 治
'* 更新日 :2018年09月23日
'* 更新者 :井上 治
'* 機能説明:
'* 注意事項:
'***************************************************************************************************
Public Function FP_GetCalendarTable1(ByVal lngY As Long, _
ByVal lngM As Long, _
ByRef tblCalendar() As g_typAboutCalendar2, _
Optional ByVal blnOmitCheck As Boolean = False) As Boolean
'-----------------------------------------------------------------------------------------------
' カレンダー関連関数クラス初期化
If Not FP_InitAboutCalendar(blnOmitCheck) Then
FP_GetCalendarTable1 = False
Exit Function
End If
' カレンダーテーブル作成(当月分)
Call g_clsAboutCalendar.GetCalendarTable1(lngY, lngM, tblCalendar)
FP_GetCalendarTable1 = True
End Function
'***************************************************************************************************
'* 処理名 :GP_GetCalendarTable1
'* 機能 :カレンダーテーブル作成(当月1ヶ月用)
'---------------------------------------------------------------------------------------------------
'* 返り値 :(なし)
'* 引数 :Arg1 = 年(Long)
'* Arg2 = 月(Long)
'* Arg3 = カレンダーテーブル(Array:Structure) ※Ref参照
'---------------------------------------------------------------------------------------------------
'* 作成日 :2018年09月23日
'* 作成者 :井上 治
'* 更新日 :2018年09月23日
'* 更新者 :井上 治
'* 機能説明:
'* 注意事項:カレンダー関連関数クラスが初期化済であること(本処理内では判定しない)
'***************************************************************************************************
Public Sub GP_GetCalendarTable1(ByVal lngY As Long, _
ByVal lngM As Long, _
ByRef tblCalendar() As g_typAboutCalendar2)
'-----------------------------------------------------------------------------------------------
' カレンダーテーブル作成(当月分)
Call g_clsAboutCalendar.GetCalendarTable1(lngY, lngM, tblCalendar)
End Sub
'***************************************************************************************************
'* 処理名 :FP_GetCalendarTable3
'* 機能 :カレンダーテーブル作成(当月+前後の3ヶ月用)
'---------------------------------------------------------------------------------------------------
'* 返り値 :処理成否(Boolean)
'* 引数 :Arg1 = 年(Long)
'* Arg2 = 月(Long)
'* Arg3 = カレンダーテーブル(Array:Structure) ※Ref参照
'* Arg4 = カレンダーテーブル当月開始INDEX(Long) ※Ref参照(Option)
'* Arg5 = カレンダーテーブル当月終了INDEX(Long) ※Ref参照(Option)
'* Arg6 = チェック工程スキップ(Boolean) ※Option
'---------------------------------------------------------------------------------------------------
'* 作成日 :2018年02月08日
'* 作成者 :井上 治
'* 更新日 :2018年09月23日
'* 更新者 :井上 治
'* 機能説明:
'* 注意事項:
'***************************************************************************************************
Public Function FP_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, _
Optional ByVal blnOmitCheck As Boolean = False) As Boolean
'-----------------------------------------------------------------------------------------------
' カレンダー関連関数クラス初期化
If Not FP_InitAboutCalendar(blnOmitCheck) Then
FP_GetCalendarTable3 = False
Exit Function
End If
' カレンダーテーブル作成(当月+前後の3ヶ月用)
Call g_clsAboutCalendar.GetCalendarTable3(lngYear, _
lngMonth, _
tblCalendar, _
lngCurrStartIx, _
lngCurrEndIx)
FP_GetCalendarTable3 = True
End Function
'***************************************************************************************************
'* 処理名 :GP_GetCalendarTable3
'* 機能 :カレンダーテーブル作成(当月+前後の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_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)
'-----------------------------------------------------------------------------------------------
' カレンダーテーブル作成(当月+前後の3ヶ月用)
Call g_clsAboutCalendar.GetCalendarTable3(lngYear, _
lngMonth, _
tblCalendar, _
lngCurrStartIx, _
lngCurrEndIx)
End Sub
'***************************************************************************************************
'* 処理名 :FP_SumEigyoNissu
'* 機能 :営業日数算出(土日祝日を除外)
'---------------------------------------------------------------------------------------------------
'* 返り値 :処理成否(Boolean)
'* 引数 :Arg1 = 期間開始日(Date)
'* Arg2 = 期間終了日(Date)
'* Arg3 = 営業日数(Long) ※Ref参照
'* Arg4 = 歴日数(Long) ※Ref参照(Option)
'* Arg5 = チェック工程スキップ(Boolean) ※Option
'---------------------------------------------------------------------------------------------------
'* 作成日 :2018年02月08日
'* 作成者 :井上 治
'* 更新日 :2018年09月23日
'* 更新者 :井上 治
'* 機能説明:
'* 注意事項:開始日、終了日自体も営業日判断に適用される
'***************************************************************************************************
Public Function FP_SumEigyoNissu(ByVal dteDateF As Date, _
ByVal dteDateT As Date, _
ByRef lngCntEigyo As Long, _
Optional ByRef lngCntReki As Long = 0, _
Optional ByVal blnOmitCheck As Boolean = False) As Boolean
'-----------------------------------------------------------------------------------------------
' カレンダー関連関数クラス初期化
If Not FP_InitAboutCalendar(blnOmitCheck) Then
FP_SumEigyoNissu = False
Exit Function
End If
' 営業日数算出(土日祝日を除外)
Call g_clsAboutCalendar.SumEigyoNissu(dteDateF, dteDateT, lngCntEigyo, lngCntReki)
FP_SumEigyoNissu = True
End Function
'***************************************************************************************************
'* 処理名 :FP_SumEigyoBi
'* 機能 :営業日数経過後営業日算出(土日祝日を除外)
'---------------------------------------------------------------------------------------------------
'* 返り値 :処理成否(Boolean)
'* 引数 :Arg1 = 起算日(Date)
'* Arg2 = 経過営業日数(Long) ※±可能
'* Arg3 = 営業日数経過後営業日(Date) ※Ref参照(Option)
'* Arg4 = チェック工程スキップ(Boolean) ※Option
'---------------------------------------------------------------------------------------------------
'* 作成日 :2018年02月08日
'* 作成者 :井上 治
'* 更新日 :2018年09月23日
'* 更新者 :井上 治
'* 機能説明:経過日数は翌日(翌営業日)を「1」として算出される(前営業日は「-1」)
'* 注意事項:経過日数がゼロの場合は起算日をそのまま返す(土日祝判断なし)
'***************************************************************************************************
Public Function FP_SumEigyoBi(ByVal dteDateF As Date, _
ByVal lngCntKeika As Long, _
ByRef dteDateT As Date, _
Optional ByVal blnOmitCheck As Boolean = False) As Boolean
'-----------------------------------------------------------------------------------------------
' カレンダー関連関数クラス初期化
If Not FP_InitAboutCalendar(blnOmitCheck) Then
FP_SumEigyoBi = False
Exit Function
End If
' 営業日数経過後営業日算出(土日祝日を除外)
Call g_clsAboutCalendar.SumEigyoBi(dteDateF, lngCntKeika, dteDateT)
FP_SumEigyoBi = True
End Function
'----------------------------------------<< End of Source >>----------------------------------------