Function BusinessDays(startdate As Date, enddate As Date) As Integer
'By Susan Sales Harkins and Doris Manning
'Inside Microsoft Access Feb 2004
' http://download.elementkjournals.com/access/200402/busdays.zip
Dim intHolidays As Integer
Dim intTotalDays As Integer
Dim intWeekendDays As Integer
'Dim rst As New ADODB.Recordset
Dim rst As DAO.Recordset
Dim strSQL As String
Select Case DatePart("w", startdate, vbMonday) 'Week starts on monday
Case 6
startdate = DateAdd("d", startdate, 2) 'Saturday
Case 7
startdate = DateAdd("d", startdate, 1) 'Sunday
End Select
Select Case DatePart("w", enddate, vbMonday) 'Week starts on monday
Case 6
enddate = DateAdd("d", enddate, -1) 'Saturday
Case 7
enddate = DateAdd("d", enddate, -2) 'Sunday
End Select
strSQL = "Select Count(*) as HolidayCount From tblHolidays " & _
"Where HolidayDate BETWEEN #" & startdate & "#" & _
" AND " & "#" & enddate & "#;"
'rst.Open strSQL, CurrentProject.Connection
Set rst = CurrentDb.OpenRecordset(strSQL)
intHolidays = rst!HolidayCount 'Count Holidays between dates
intTotalDays = DateDiff("d", startdate, enddate) + 1 'Calc dif in days
intWeekendDays = DateDiff("ww", startdate, enddate, vbMonday) * 2 'Calc dif in weeks and multiply by 2
BusinessDays = intTotalDays - intWeekendDays - intHolidays
Set rst = Nothing
End Function