Public Function CountDays(ByVal dteStartDate As Date, dteEndDate As Date) As Integer
'On Error GoTo Err_CountWeeks
Dim dteTemp As Date, intDays As Integer
dteTemp = dteStartDate
Do While dteTemp <> dteEndDate + 1
Select Case WeekDay(dteTemp)
Case Is = 1, 7
' do nothing
Case Else
Select Case dteTemp
Case Is = DateSerial(Year(dteTemp), 1, 1), _
DateOfEaster(Year(dteTemp)) - 2, _
DateOfEaster(Year(dteTemp)) + 1, _
GetBankHoliday(DateSerial(Year(dteTemp), 5, 1)), _
GetBankHoliday(DateSerial(Year(dteTemp), 5, 25)), _
GetBankHoliday(DateSerial(Year(dteTemp), 8, 25)), _
DateSerial(Year(dteTemp), 12, 25), _
DateSerial(Year(dteTemp), 12, 26)
' do nothing
Case Else
intDays = intDays + 1
End Select
End Select
dteTemp = dteTemp + 1
Loop
CountDays = intDays
Exit_CountDays:
Exit Function
Err_CountWeeks:
MsgBox Err.Description, vbExclamation, "Error #" & Err.Number
Resume Exit_CountDays
End Function