Gustav Brock
Gustav at cactus.dk
Thu Apr 17 08:37:13 CDT 2008
Hi all
Recently I had to find the count of a weekday between two dates. Much to my surprise such code was not to be located.
I had an old function for this but found out, that the trick is to fool DateDiff to believe that the week starts on the weekday in question.
<code>
Public Function WeekdayDiff( _
ByVal datDate1 As Date, _
ByVal datDate2 As Date, _
Optional ByVal bytWeekday As Byte) _
As Long
' Returns signed count of a weekday of value bytWeekday
' between datDate1 and datDate2.
'
' bytWeekday values should be one of the constants from vbMonday to vbSunday.
' If not or if not supplied, the weekday of datDate1 is assumed.
'
' 2001-08-23. Cactus Data ApS, CPH.
' 2008-04-09. Rewrite using DateDiff.
Dim lngWeekdayDiff As Long
' No special error handling.
On Error Resume Next
' Validate bytWeekday.
Select Case bytWeekday
Case _
vbMonday, _
vbTuesday, _
vbWednesday, _
vbThursday, _
vbFriday, _
vbSaturday, _
vbSunday
Case Else
' None or invalid value for weekday.
bytWeekday = WeekDay(datDate1, vbSunday)
End Select
lngWeekdayDiff = DateDiff("ww", datDate1, datDate2, bytWeekday)
WeekdayDiff = lngWeekdayDiff
End Function
</code>
Have fun!
/gustav