Public Sub createCalendar(dateStart As Date, dateEnd As Date, _ intFirstFYMonth As Integer, intFirstFYDayOfMonth As Integer ) Dim rst As ADODB.Recordset Set rst = New ADODB.Recordset rst.Open "tblCalendar", CurrentProject.Connection, adOpenKeyset, _ adLockOptimistic, adCmdTableDirect Dim lngNumDays As Long lngNumDays = DateDiff("d", dateStart, dateEnd) Dim dateNext As Date Dim lngCnt As Long Dim intMonthNext As Integer Dim intDayOfMonthNext As Integer Dim intYearNext As Integer Dim intFiscalYear As Integer Dim intFiscalMonth As Integer Dim DateCurrentFYStart As Date Dim boolWorkDay For lngCnt = 0 To lngNumDays dateNext = DateAdd("d", lngCnt, dateStart) intMonthNext = Month(dateNext) intDayOfMonthNext = Day(dateNext) intYearNext = Year(dateNext) DateCurrentFYStart = DateSerial(intYearNext, _ intFirstFYMonth, intFirstFYDayOfMonth) 'COMPUTE FISCAL YEAR If dateNext < DateCurrentFYStart Then intFiscalYear = intYearNext - 1 Else intFiscalYear = intYearNext End If 'COMPUTE FISCAL MONTH If intDayOfMonthNext < intFirstFYDayOfMonth Then intFiscalMonth = intMonthNext - 1 If intFiscalMonth = 0 Then intFiscalMonth = 12 End If Else intFiscalMonth = intMonthNext End If 'COMPUTE WORK DAY If DatePart("w", dateNext, vbMonday) > 5 Then boolWorkDay = False Else boolWorkDay = True End If 'WRITE TABLE With rst .AddNew .Fields("calendarDate") = dateNext .Fields("dayOfYear") = DatePart("y", dateNext) .Fields("fiscalMonth") = intFiscalMonth .Fields("fiscalYear") = intFiscalYear .Fields("isWorkDay") = boolWorkDay .Update End With Next lngCnt End Sub