Gustav Brock
gustav at cactus.dk
Sat Feb 28 04:05:40 CST 2004
Hi Christopher
> I need a function that will determine the start and end dates of the
> current week. I'm hacking around with some code, but I'm not
> producing enything useful. Surely I'm not the first to have this
> problem?
We are using these two functions for this purpose as the usual "hacks"
won't do in an internationalized environment where the ISO standards
rule - among other things, Monday is the first day of the week here.
If you live in a pure US environment you may wish to strip each of
them down the one final line of essential code using DateAdd() and
Weekday():
<code>
Function DateWeekFirst( _
ByVal datDate As Date, _
Optional ByVal lngFirstDayOfWeek As Long = vbMonday) _
As Date
' Returns the first date of the week of datDate.
' lngFirstDayOfWeek defines the first weekday of the week.
' 2000-09-07. Cactus Data ApS.
' No special error handling.
On Error Resume Next
' Validate lngFirstDayOfWeek.
Select Case lngFirstDayOfWeek
Case _
vbMonday, _
vbTuesday, _
vbWednesday, _
vbThursday, _
vbFriday, _
vbSaturday, _
vbSunday, _
vbUseSystemDayOfWeek
Case Else
lngFirstDayOfWeek = vbMonday
End Select
DateWeekFirst = DateAdd("d", vbSunday - WeekDay(datDate, lngFirstDayOfWeek), datDate)
End Function
Function DateWeekLast( _
ByVal datDate As Date, _
Optional ByVal lngFirstDayOfWeek As Long = vbMonday) _
As Date
' Returns the last date of the week of datDate.
' lngFirstDayOfWeek defines the first weekday of the week.
' 2000-09-07. Cactus Data ApS.
' No special error handling.
On Error Resume Next
' Validate lngFirstDayOfWeek.
Select Case lngFirstDayOfWeek
Case _
vbMonday, _
vbTuesday, _
vbWednesday, _
vbThursday, _
vbFriday, _
vbSaturday, _
vbSunday, _
vbUseSystemDayOfWeek
Case Else
lngFirstDayOfWeek = vbMonday
End Select
DateWeekLast = DateAdd("d", vbSaturday - WeekDay(datDate, lngFirstDayOfWeek), datDate)
End Function
</code>
Have fun!
/gustav