Accessロゴ

AcessのVBAで指定した日を起点として指定した日数後の営業日の日付を返すユーザー定義関数を作ったので覚書。

例えば、2015/1/26(水)から5営業日後の日付を求めたい時などに使用するためのユーザー定義関数のサンプルプログラムです。
スポンサードリンク


ユーザー定義関数を作成する前に必要な準備について

この記事で紹介するユーザー定義関数のサンプルプログラムは、「Access VBA:指定した日付がお休み(祝祭日、土日)かどうかをチェックするユーザー定義関数」の記事で作成した"CheckHoliday"を使用します。

必ず「Access VBA:指定した日付がお休み(祝祭日、土日)かどうかをチェックするユーザー定義関数」の記事に記載されている"CheckHoliday"関数を作成するために必要な準備と"CheckHoliday"関数を作成してから紹介するユーザー定義関数のサンプルプログラムを作成してください。

サンプルプログラム概要

今回紹介するユーザー定義関数のサンプルプログラムは、例えば「注文を受けた日からXX営業日以内」などの条件があった際に注文を受けた日(起点となる日)と何営業日目かを示す数値を指定することで「注文を受けた日からXX営業日後」の日付を返します。

「Access VBA:指定した日付がお休み(祝祭日、土日)かどうかをチェックするユーザー定義関数」の"CheckHoliday"関数を利用することで祝祭日などが含まれていてもそれを考慮した営業日を返すようになっています。

ユーザー定義関数のサンプルプログラム

作成するユーザー定義関数のサンプルプログラムのコードは以下のとおりです。

AccessのVBAの標準モジュールに記載してください。
'引数として受け取った日付から数えて指定した営業日数後の日付を返す関数
'例えば、「注文を受けてから3営業日以内」など
Function GetWorkDay(dtDate As Date, intCount) As Date

 dtDate = dtDate + 1
   i = 1
   Do Until i = intCount
   
     If CheckHoliday(dtDate) = False Then
       '営業日だったらiに1を加算
       i = i + 1
     End If
     
     dtDate = dtDate + 1
   
   Loop

 GetWorkDay = dtDate

End Function

作成したユーザー定義関数の使用例

例えば、[受注日]フィールドに入力された日付から3営業日後の日付を取得したい場合
 
 GetWorkDay([受注日],5)

[受注日]が2016/1/27だったとすると5営業日後は土日を挟むので2016/2/3が値として返されます。

スポンサードリンク

  

関連記事