Accessで使えるWorkDay関数
たぶん出典元はここ。
http://www.h3.dion.ne.jp/~sakatsu/holiday_logic.htm#Access
「M_休日」テーブル内の「休日」フィールド(日付型)に、
土日以外の休日が登録されている前提です。
元ネタの方が営業日の正負分岐の書き方がいい感じ。
土日以外で休日指定したい方はIsHoliday内のIf文をメンテしてください。
しかし重い。軽量化できないものか。
Option Compare Database Public Function IsHoliday(dDate As Variant) As Boolean On Error GoTo Err_Trap '日付型の引数の場合はFalseを返す If IsDate(dDate) = False Then IsHoliday = False Exit Function End If If Weekday(dDate) = 1 Or Weekday(dDate) = 7 Or DCount("*", "M_休日", "休日=#" & dDate & "#") Then IsHoliday = True Else IsHoliday = False End If Exit Function Err_Trap: 'エラー発生時はFalseを返す IsHoliday = False Exit Function End Function Public Function WorkDay(dStartDate As Date, nWeight As Long) Dim dDate As Date Dim i As Long dDate = dStartDate i = 0 If nWeight > 0 Then Do Until i = nWeight dDate = dDate + 1 If IsHoliday(dDate) = False Then i = i + 1 Loop Else Do Until i = nWeight dDate = dDate - 1 If IsHoliday(dDate) = False Then i = i - 1 Loop End If WorkDay = dDate End Function