Have you ever needed to calculate the number of weekdays (Monday through Friday) there were between two dates, that is exactly what the VBA function below does.
'---------------------------------------------------------------------------------------
' Procedure : CalcNoWeekDays
' Author : CARDA Consultants Inc.
' Website : http://www.cardaconsultants.com
' Purpose : Count the number of weekdays between two specified dates
' Copyright : The following may be altered and reused as you wish so long as the
' copyright notice is left unchanged (including Author, Website and
' Copyright). It may not be sold/resold or reposted on other sites (links
' back to this site are allowed).
'
' Input Variables:
' ~~~~~~~~~~~~~~~~
' dtFirstDate The first of 2 dates to count the number of weekdays between
' dtLastDate The second of 2 dates to count the number of weekdays between
'
' Usage Example:
' ~~~~~~~~~~~~~~~~
' CalcNoWeekDays(#2010-10-6#,#2010-10-23#) =23
'
' Revision History:
' Rev Date(yyyy/mm/dd) Description
' **************************************************************************************
' 1 2010-Jul-09 Initial Release
'---------------------------------------------------------------------------------------
Function CalcNoWeekDays(dtFirstDate As Date, dtLastDate As Date) As Integer
On Error GoTo Error_Handler
Dim dtDay As Date
'Ensure that the dates provided are in the proper order
If dtFirstDate > dtLastDate Then
dtDate1 = dtLastDate
dtDate2 = dtFirstDate
Else
dtDate1 = dtFirstDate
dtDate2 = dtLastDate
End If
CalcNoWeekDays = 0 'Initialize our weekday counter variable
For dtDay = dtFirstDate To dtLastDate
iDayOfWeek = Weekday(dtDay)
If iDayOfWeek <> vbSunday And iDayOfWeek <> vbSaturday Then
CalcNoWeekDays = CalcNoWeekDays + 1
End If
Next dtDay
Error_Handler_Exit:
On Error Resume Next
Exit Function
Error_Handler:
MsgBox "The following error has occurred" & vbCrLf & vbCrLf & _
"Error Number: " & Err.Number & vbCrLf & _
"Error Source: CalcNoWeekDays" & vbCrLf & _
"Error Description: " & Err.Description, vbCritical, _
"An Error has Occurred!"
Resume Error_Handler_Exit
End Function