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