Public Sub CreateWeekEndingList()
'Created by Helen Feddema 17-Jun-2015
'Last modified by Helen Feddema 23-Mar-2016
On Error GoTo ErrorHandler
Dim dteStarter As Date
Dim dteFirstDayOfMonth As Date
Dim dteFirstDayOfPreviousMonth As Date
Dim dteWeekEnding As Date
Dim intWeek As Integer
Dim intWeekday As Integer
Dim rst As DAO.Recordset
Dim strSQL As String
Dim strTable As String
Dim dtePreviousWeekEnding As Date
Dim dteCurrentWeekEnding As Date
strTable = "tblWeekEndingDates"
strSQL = "DELETE * FROM " & strTable
CurrentDb.Execute strSQL
'Get week ending dates starting forty-eight weeks ago
dteStarter = DateAdd("ww", -48, Date)
intWeekday = Weekday(dteStarter)
Debug.Print "Starter date: " & dteStarter & ", Weekday: " & intWeekday
Select Case intWeekday
Case 1
dteWeekEnding = dteStarter
Case 2
dteWeekEnding = DateAdd("d", 6, dteStarter)
Case 3
dteWeekEnding = DateAdd("d", 5, dteStarter)
Case 4
dteWeekEnding = DateAdd("d", 4, dteStarter)
Case 5
dteWeekEnding = DateAdd("d", 3, dteStarter)
Case 6
dteWeekEnding = DateAdd("d", 2, dteStarter)
Case 7
dteWeekEnding = DateAdd("d", 1, dteStarter)
End Select
Set rst = CurrentDb.OpenRecordset(strTable)
With rst
.AddNew
![WeekEnding] = dteWeekEnding
.Update
dtePreviousWeekEnding = dteWeekEnding
For intWeek = 1 To 52
.AddNew
dteCurrentWeekEnding = DateAdd("ww", intWeek, dteWeekEnding)
![WeekEnding] = dteCurrentWeekEnding
If Month(dteCurrentWeekEnding) _
<> Month(dtePreviousWeekEnding) Then
'Previous week ending date is last Sunday of month
![LastWeekEndingOfMonth] = dtePreviousWeekEnding
dteFirstDayOfMonth = DateAdd("d", 1, dtePreviousWeekEnding)
![FirstDayOfMonth] = dteFirstDayOfPreviousMonth
Else
![FirstDayOfMonth] = dteFirstDayOfMonth
End If
.Update
dtePreviousWeekEnding = dteCurrentWeekEnding
dteFirstDayOfPreviousMonth = dteFirstDayOfMonth
Next intWeek
End With
ErrorHandlerExit:
Exit Sub
ErrorHandler:
MsgBox "Error No: " & Err.Number _
& " in CreateWeekEndingList procedure; " _
& "Description: " & Err.Description
Resume ErrorHandlerExit
End Sub
This procedure creates a list of week ending dates, but you could modify it to create dates separated by whatever number you wish.
If NOT (IsNULL(Me.Datestartcontro
me.enddatecontrolname = DATEADD("d",me.daystoAdd),
End if
Kelvin