汎用関数/前営業日を取得するには

Last-modified: 2023-07-18 (火) 02:44:46

mdlDateTimeEx

Option Compare Database
Option Explicit
'前営業日を返す
Public Function PreviousBusinessDay(varDate As Variant) As Variant

On Error GoTo ErrorHandler

    '前日
    varDate = DateAdd("d", -1, varDate)

    '1日ずつ遡って、平日を探す
    Do While IsHoliday(varDate)
        varDate = DateAdd("d", -1, varDate)

    Loop

    PreviousBusinessDay = varDate

    Exit Function

ErrorHandler:

    Err.Raise Err.Number, Err.Source, Err.Description, Err.HelpFile, Err.HelpContext

End Function

Private Sub Test_PreviousBusinessDay()
    Debug.Assert PreviousBusinessDay(#7/17/2023#) = #7/14/2023#

End Sub