Accessロゴ

AccessのVBAを使用して指定した日を起点として次の営業日(翌営業日)を返すユーザー定義関数のサンプルプログラムを覚書。

以前書いた「Access VBA:指定した日付がお休み(祝祭日、土日)かどうかをチェックするユーザー定義関数」で作成した休日かどうかを判断するユーザー定義関数のCheckHoliday関数を利用して次の営業日を返すユーザー定義関数を新たに作りました。
スポンサードリンク


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

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

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

サンプルプログラムの概要

引数として受け取った日から1日ずつ日付を進めていき、休日判定がFalseになった日付を返します。

休日判定をする仕組みについては、「Access VBA:指定した日付がお休み(祝祭日、土日)かどうかをチェックするユーザー定義関数」に詳細を記載していますのでそちらを参照してください。

作成するユーザー定義関数

以下にユーザー定義関数のサンプルプログラムを記載します。

AccessのVBAの標準モジュールに記載してください。
'引数として受け取った日付の次の営業日を返す関数
Function GetNextWorkDay(dtDate As Date) As Date

  '次の日に設定しなおす
  dtDate = dtDate + 1
  
  'CheckHoliday関数の返り値がFalse(休日ではない)まで1日ずつ加算する。
  Do Until CheckHoliday(dtDate) = False
    dtDate = dtDate + 1
  Loop

GetNextWorkDay = dtDate

End Function

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

例えば、[日付]というフィールド翌営業日を計算する基になる日付が入っていた場合は以下のようになります。
 
 GetNextWorkDay([日付])

[日付]フィールドの値が2016/1/8だった場合、結果として2016/1/12が返されます。
※2016/1/11が成人式でお休みのため。

スポンサードリンク

  

関連記事