![]() |
![]() |
Back to Papers and Articles |
Rendering the results of an Access Database in Excel (The code) Copyright 2001 Paragon Corporation ( August 11, 2001) |
|
Back to Rendering the results of an Access Database in Excel
Option Compare Database Option Explicit 'Module modExcelReport for budget database Dim xlBudgetSchedule As Excel.Application Public Sub ChartBudgetPaymentsCategory() Dim xlChart As Excel.Chart, xlco As ChartObject Dim sqlEncumbrance As String, i As Integer, j As Integer, currentYear As Integer, numberOfQuarters As Integer Dim currentRow, currentColumn, currentQuarter As String, categoryChanged As Boolean, currentCategoryID As Integer Dim sumPayments, quarterBudget, quarterBudgetTransfer, quarterOriginalBudget, theQuarter As String, theMonth As String, budgetToDate Dim Budget, budgetTransfer, originalBudget, currentMonth As String Dim aryQuarters(10) As String, theWeekStart As Date, monthIncrement As Integer Dim meterReturn As Integer, lngProgress As Long, budgetToDateFormula As String Dim firstDayOfMonth As Date 'first day of the next month Dim firstDayOfQuarter As Date Dim columnLetter As String Dim rstPayments As Recordset Set rstPayments = CurrentDb.OpenRecordset("qryCategoryPaymentsByMonth_CrossTab") xlBudgetSchedule.ActiveWorkbook.Worksheets.Add After:=xlBudgetSchedule.ActiveWorkbook.ActiveSheet xlBudgetSchedule.ActiveSheet.Name = "Payments" xlBudgetSchedule.Visible = True '*** Populate payments currentRow = 1 xlBudgetSchedule.ActiveSheet.Cells(currentRow, 1).Value = "Date" For i = 1 To rstPayments.Fields.Count - 1 'Skip month label xlBudgetSchedule.ActiveSheet.Cells(currentRow, i + 1).Value = rstPayments.Fields(i).Name xlBudgetSchedule.ActiveSheet.Cells(currentRow, i + 1).Font.Bold = True xlBudgetSchedule.ActiveSheet.Columns(i + 1).AutoFit Next currentRow = 2 xlBudgetSchedule.ActiveSheet.Cells(currentRow, 1).CopyFromRecordset rstPayments currentRow = currentRow + rstPayments.RecordCount xlBudgetSchedule.ActiveSheet.Range("B2:J100").NumberFormat = "#,##0_);[Red](#,##0)" Set xlChart = xlBudgetSchedule.Charts.Add With xlChart .ChartWizard Source:=xlBudgetSchedule.Worksheets("Payments").Range("A2:" & ExcelColumnLetters(rstPayments.Fields.Count) & currentRow), _ Gallery:=xlLine, PlotBy:=xlColumns, _ CategoryLabels:=1, HasLegend:=1, CategoryTitle:="To Date", ValueTitle:="Total Paid", Title:="Budget Payments By Category" .PageSetup.Orientation = xlPortrait .Name = "Chart of Payments" End With rstPayments.MoveFirst With xlChart.Legend .Font.Bold = True .Font.Name = "Arial" .Font.Size = 7 End With For i = 1 To rstPayments.Fields.Count - 1 'Skip month label With xlChart.SeriesCollection(i) .Name = rstPayments.Fields(i).Name End With Next With xlChart.Axes(xlValue) .MinimumScale = "0" End With xlBudgetSchedule.Visible = True End Sub Public Sub BuildBudgetSchedule(aDayInWeek As Date) Dim rstCategory As Recordset, rstEncumbrance As Recordset, theWeekEnd As Date Dim sqlEncumbrance As String, i As Integer, j As Integer, currentYear As Integer, numberOfQuarters As Integer Dim currentRow, currentColumn, currentQuarter As String, categoryChanged As Boolean, currentCategoryID As Integer Dim sumPayments, quarterBudget, quarterBudgetTransfer, quarterOriginalBudget, theQuarter As String, theMonth As String, budgetToDate Dim Budget, budgetTransfer, originalBudget, currentMonth As String Dim aryQuarters(5) As String, theWeekStart As Date, monthIncrement As Integer Dim meterReturn As Integer, lngProgress As Long, budgetToDateFormula As String Dim firstDayOfMonth As Date 'first day of the next month Dim firstDayOfQuarter As Date, tempDate As Date Dim columnLetter As String lngProgress = 0 meterReturn = SysCmd(acSysCmdInitMeter, "Generating Budget Report ...", 100) theWeekStart = aDayInWeek - WeekDay(aDayInWeek, vbWednesday) + 1 'Week start's wednesday theWeekEnd = theWeekStart + 6 firstDayOfQuarter = CDate((DatePart("q", theWeekStart) * 3 - 2) & "/1/" & Year(theWeekStart)) 'first day of quarter this day lies in firstDayOfMonth = DateAdd("m", 1, theWeekEnd - Day(theWeekEnd) + 1) 'First day of next month currentYear = Year(Date) numberOfQuarters = UBound(aryQuarters) '*** Populate aryQuarters array For i = 0 To numberOfQuarters tempDate = DateAdd("q", i - 1, firstDayOfQuarter) aryQuarters(i) = Trim(Year(tempDate) & DatePart("q", tempDate)) Next Set rstCategory = CurrentDb.OpenRecordset("SELECT C.CategoryID, C.Category, B.BudgetName " & _ "FROM CategoryLU C INNER JOIN Budget B ON C.CategoryID = B.BudgetID ORDER BY C.Category, B.BudgetName", dbOpenSnapshot) Set xlBudgetSchedule = New Excel.Application xlBudgetSchedule.Visible = True xlBudgetSchedule.Workbooks.Add xlBudgetSchedule.ActiveWindow.DisplayGridlines = False 'Do not show grid lines so it looks more like a report currentRow = 1 currentColumn = 1 With xlBudgetSchedule.ActiveSheet .Cells(currentRow, currentColumn).Value = "BUDGET SCHEDULE" .Cells(currentRow, currentColumn).Font.Bold = True .Cells(currentRow, currentColumn).Font.Name = "Times New Roman" .Cells(currentRow, currentColumn).Font.Size = 11 .Cells(currentRow, currentColumn).HorizontalAlignment = xlCenter currentRow = currentRow + 1 .Cells(currentRow, currentColumn).Value = "CASH FLOW PROJECTIONS for next 4 quarters" .Cells(currentRow, currentColumn).Font.Bold = True .Cells(currentRow, currentColumn).Font.Name = "Times New Roman" .Cells(currentRow, currentColumn).Font.Size = 11 .Cells(currentRow, currentColumn).HorizontalAlignment = xlCenter currentRow = currentRow + 1 .Cells(currentRow, currentColumn).Value = "PREPARED " & Now .Cells(currentRow, currentColumn).Font.Bold = True .Cells(currentRow, currentColumn).Font.Name = "Times New Roman" .Cells(currentRow, currentColumn).Font.Size = 11 .Cells(currentRow, currentColumn).HorizontalAlignment = xlCenter currentRow = currentRow + 2 xlBudgetSchedule.ActiveWorkbook.Colors(1) = RGB(230, 230, 230) 'define first color in workbook palette to be a light grey shade currentRow = currentRow + 1 .Cells(currentRow, currentColumn).Value = "Category" .Cells(currentRow, currentColumn).Font.Bold = True .Cells(currentRow, currentColumn).Font.Name = "Times New Roman" .Cells(currentRow, currentColumn).Font.Size = 11 End With 'currentColumn = currentColumn + 1 currentRow = currentRow - 1 i = 0 Do Until i > numberOfQuarters i = i + 1 currentYear = Left(aryQuarters(i - 1), 4) '*** Heading Section: If we are in the current quarter - need to break this out to start to week , week, rest of quarter *** If (Year(theWeekStart) & DatePart("q", theWeekStart)) = aryQuarters(i - 1) Then With xlBudgetSchedule.ActiveSheet .Cells(currentRow, currentColumn + i).Value = "Q " & Mid(aryQuarters(i - 1), 5, 1) & " " & currentYear & " Up (to " & theWeekEnd & ")" .Cells(currentRow, currentColumn + i).WrapText = True .Cells(currentRow, currentColumn + i).Font.Bold = True .Cells(currentRow, currentColumn + i).Font.Name = "Times New Roman" .Cells(currentRow, currentColumn + i).Font.Size = 11 .Cells(currentRow + 1, currentColumn + i).Value = "Paid" .Cells(currentRow + 1, currentColumn + i).Font.Italic = True .Cells(currentRow + 1, currentColumn + i).Font.Name = "Times New Roman" .Cells(currentRow + 1, currentColumn + i).Font.Size = 8 .Cells(currentRow + 1, currentColumn + i).HorizontalAlignment = xlCenter .Cells(currentRow, currentColumn + i + 1).Value = "Summary As Of Week Ending " & theWeekEnd .Cells(currentRow, currentColumn + i + 1).Font.Bold = True .Cells(currentRow, currentColumn + i + 1).Font.Name = "Times New Roman" .Cells(currentRow, currentColumn + i + 1).Font.Size = 11 .Cells(currentRow, currentColumn + i + 1).HorizontalAlignment = xlCenter .Range(Chr(65 + currentColumn + i) & currentRow & ":" & Chr(65 + currentColumn + i + 2) & currentRow).Merge 'currentRow = currentRow + 1 .Cells(currentRow + 1, currentColumn + i + 1).Value = "Paid To Date" .Cells(currentRow + 1, currentColumn + i + 1).Font.Italic = True .Cells(currentRow + 1, currentColumn + i + 1).Font.Name = "Times New Roman" .Cells(currentRow + 1, currentColumn + i + 1).Font.Size = 8 .Cells(currentRow + 1, currentColumn + i + 1).HorizontalAlignment = xlCenter .Cells(currentRow + 1, currentColumn + i + 2).Value = "Budget To Date" .Cells(currentRow + 1, currentColumn + i + 2).Font.Italic = True .Cells(currentRow + 1, currentColumn + i + 2).Font.Bold = True .Cells(currentRow + 1, currentColumn + i + 2).Font.Name = "Times New Roman" .Cells(currentRow + 1, currentColumn + i + 2).Font.Size = 8 .Cells(currentRow + 1, currentColumn + i + 2).HorizontalAlignment = xlCenter .Cells(currentRow + 1, currentColumn + i + 3).Value = "Difference To Date" .Cells(currentRow + 1, currentColumn + i + 3).Font.Italic = True .Cells(currentRow + 1, currentColumn + i + 3).Font.Bold = True .Cells(currentRow + 1, currentColumn + i + 3).Font.Name = "Times New Roman" .Cells(currentRow + 1, currentColumn + i + 3).Font.Size = 8 .Cells(currentRow + 1, currentColumn + i + 3).HorizontalAlignment = xlCenter .Columns(currentColumn + i + 1).Interior.ColorIndex = 1 ' shadow current week and quarter lightgrey - first color in palette .Columns(currentColumn + i + 2).Interior.ColorIndex = 1 .Columns(currentColumn + i + 3).Interior.ColorIndex = 1 'Put in column headings for rest of month in current week .Cells(currentRow, currentColumn + i + 4).Value = (theWeekStart + 7) & " Until End " & Format(theWeekStart + 7, "mmmm") & " " & currentYear .Cells(currentRow, currentColumn + i + 4).WrapText = True .Cells(currentRow, currentColumn + i + 4).Font.Bold = True .Cells(currentRow, currentColumn + i + 4).Font.Name = "Times New Roman" .Cells(currentRow, currentColumn + i + 4).Font.Size = 11 .Cells(currentRow + 1, currentColumn + i + 4).Value = "Budget" .Cells(currentRow + 1, currentColumn + i + 4).Font.Italic = True .Cells(currentRow + 1, currentColumn + i + 4).Font.Bold = True .Cells(currentRow + 1, currentColumn + i + 4).Font.Name = "Times New Roman" .Cells(currentRow + 1, currentColumn + i + 4).Font.Size = 8 .Cells(currentRow + 1, currentColumn + i + 4).HorizontalAlignment = xlCenter End With currentColumn = currentColumn + 3 '*** Put in column headings for rest of months in current quarter, 2 quarters after that (by month) monthIncrement = 1 j = i + 2 '*** Heading: Loop until we've reached end of Budget or passed thru 2 full quarters + remaining of this quarter *** Do Until i > numberOfQuarters Or monthIncrement = (8 + DatePart("q", theWeekEnd) * 3 - Month(theWeekEnd) - 1) firstDayOfMonth = DateAdd("m", monthIncrement, CDate(Month(theWeekEnd) & "/1/" & Year(theWeekEnd))) currentMonth = Month(firstDayOfMonth) currentYear = Year(firstDayOfMonth) xlBudgetSchedule.ActiveSheet.Cells(currentRow, currentColumn + j).Value = "'" & Format(firstDayOfMonth, "mmm yyyy") xlBudgetSchedule.ActiveSheet.Cells(currentRow, currentColumn + j).Font.Bold = True xlBudgetSchedule.ActiveSheet.Cells(currentRow, currentColumn + j).Font.Name = "Times New Roman" xlBudgetSchedule.ActiveSheet.Cells(currentRow, currentColumn + j).Font.Size = 11 theQuarter = Year(theWeekStart) & DatePart("q", theWeekStart) xlBudgetSchedule.ActiveSheet.Cells(currentRow + 1, currentColumn + j).Value = "Budget" xlBudgetSchedule.ActiveSheet.Cells(currentRow + 1, currentColumn + j).Font.Italic = True xlBudgetSchedule.ActiveSheet.Cells(currentRow + 1, currentColumn + j).Font.Bold = True xlBudgetSchedule.ActiveSheet.Cells(currentRow + 1, currentColumn + j).Font.Name = "Times New Roman" xlBudgetSchedule.ActiveSheet.Cells(currentRow + 1, currentColumn + j).Font.Size = 8 xlBudgetSchedule.ActiveSheet.Cells(currentRow + 1, currentColumn + j).HorizontalAlignment = xlCenter monthIncrement = monthIncrement + 1 j = j + 1 If currentMonth = 1 Or currentMonth = 4 Or currentMonth = 7 Or currentMonth = 10 Then i = i + 1 End If If i = numberOfQuarters Then Exit Do End If Loop currentColumn = currentColumn + monthIncrement - 2 Else '***Heading: just a quarter *** xlBudgetSchedule.ActiveSheet.Cells(currentRow, currentColumn + i).Value = "Q" & Right(aryQuarters(i - 1), 1) & " " & currentYear xlBudgetSchedule.ActiveSheet.Cells(currentRow, currentColumn + i).Font.Bold = True xlBudgetSchedule.ActiveSheet.Cells(currentRow, currentColumn + i).Font.Name = "Times New Roman" xlBudgetSchedule.ActiveSheet.Cells(currentRow, currentColumn + i).Font.Size = 11 theQuarter = Year(theWeekStart) & DatePart("q", theWeekStart) xlBudgetSchedule.ActiveSheet.Cells(currentRow + 1, currentColumn + i).Value = _ IIf(Format(theWeekStart, "yyyyq") < aryQuarters(i - 1), "Budget", "Paid") xlBudgetSchedule.ActiveSheet.Cells(currentRow + 1, currentColumn + i).Font.Italic = True xlBudgetSchedule.ActiveSheet.Cells(currentRow + 1, currentColumn + i).Font.Bold = True xlBudgetSchedule.ActiveSheet.Cells(currentRow + 1, currentColumn + i).Font.Name = "Times New Roman" xlBudgetSchedule.ActiveSheet.Cells(currentRow + 1, currentColumn + i).Font.Size = 8 xlBudgetSchedule.ActiveSheet.Cells(currentRow + 1, currentColumn + i).HorizontalAlignment = xlCenter End If Loop currentColumn = currentColumn + i 'Print total header column xlBudgetSchedule.ActiveSheet.Cells(currentRow, currentColumn).Value = "TOTAL" xlBudgetSchedule.ActiveSheet.Cells(currentRow, currentColumn).Font.Bold = True xlBudgetSchedule.ActiveSheet.Cells(currentRow, currentColumn).Font.Name = "Times New Roman" xlBudgetSchedule.ActiveSheet.Cells(currentRow, currentColumn).Font.Size = 11 xlBudgetSchedule.ActiveSheet.Cells(currentRow, currentColumn).HorizontalAlignment = xlCenter currentRow = currentRow + 3 currentColumn = 2 lngProgress = 20 meterReturn = SysCmd(acSysCmdUpdateMeter, lngProgress) currentCategoryID = 0 Do Until rstCategory.EOF 'Put in category header if starting a new category If rstCategory!CategoryID <> currentCategoryID Then currentCategoryID = rstCategory!CategoryID xlBudgetSchedule.ActiveSheet.Cells(currentRow, 1).Value = " " & rstCategory!Category xlBudgetSchedule.ActiveSheet.Cells(currentRow, 1).Font.Bold = True currentRow = currentRow + 1 End If 'List all Budget Items for this category xlBudgetSchedule.ActiveSheet.Cells(currentRow, 1).Value = " " & rstCategory!BudgetName xlBudgetSchedule.ActiveSheet.Cells(currentRow, 1).Font.Bold = True xlBudgetSchedule.ActiveSheet.Cells(currentRow, 1).Font.Italic = True currentRow = currentRow + 1 'Put in total rows for category - only if starting a new category - so need to rstCategory Movenext here rstCategory.MoveNext 'Using this convoluted way because a straight if then would do second test at eof and cause error If rstCategory.EOF Then categoryChanged = True Else categoryChanged = (rstCategory!CategoryID <> currentCategoryID) End If rstCategory.MovePrevious 'go to previous because running total for previous category - because skipped up one to see what next was If categoryChanged Then 'Total headings currentColumn = 1 xlBudgetSchedule.ActiveSheet.Cells(currentRow, currentColumn).Value = " Total Paid " xlBudgetSchedule.ActiveSheet.Cells(currentRow, currentColumn).Font.Bold = True xlBudgetSchedule.ActiveSheet.Cells(currentRow, currentColumn).Font.Italic = True currentRow = currentRow + 1 xlBudgetSchedule.ActiveSheet.Cells(currentRow, currentColumn).Value = " Total Original Budget " xlBudgetSchedule.ActiveSheet.Cells(currentRow, currentColumn).Font.Bold = True xlBudgetSchedule.ActiveSheet.Cells(currentRow, currentColumn).Font.Italic = True currentRow = currentRow + 1 xlBudgetSchedule.ActiveSheet.Cells(currentRow, currentColumn).Value = " Total Budget Transfer " xlBudgetSchedule.ActiveSheet.Cells(currentRow, currentColumn).Font.Bold = True xlBudgetSchedule.ActiveSheet.Cells(currentRow, currentColumn).Font.Italic = True currentRow = currentRow + 1 xlBudgetSchedule.ActiveSheet.Cells(currentRow, currentColumn).Value = " Total Revised Cumulative Budget" xlBudgetSchedule.ActiveSheet.Cells(currentRow, currentColumn).Font.Bold = True xlBudgetSchedule.ActiveSheet.Cells(currentRow, currentColumn).Font.Italic = True xlBudgetSchedule.ActiveSheet.Range("A" & currentRow & ":P" & currentRow).Borders(9).LineStyle = 1 'Draw a horizontal line currentRow = currentRow - 3 '*** Begin totals section *** i = 0 Do Until i > numberOfQuarters i = i + 1 'If quarter we are up to is quarter week start is in then break into three(quarter up to, current week, remainder of month) If Year(theWeekStart) & DatePart("q", theWeekStart) = aryQuarters(i - 1) Then firstDayOfQuarter = CDate((DatePart("q", theWeekStart) * 3 - 2) & "/1/" & Year(theWeekStart)) 'first day of quarter this day lies in firstDayOfMonth = DateAdd("m", 1, theWeekEnd - Day(theWeekEnd) + 1) 'First day of next month 'Paid during quarter up to week end this week sumPayments = DSum("PaymentAmt", "qryPayments", "PaymentDate<= #" & theWeekEnd & "# " & _ " And Year(PaymentDate) & DatePart('q', PaymentDate) = '" & aryQuarters(i - 1) & "' And CategoryID=" & rstCategory!CategoryID) originalBudget = DSum("BudgetAmount", "qryBudgetAmounts", "[EffectiveStart] < #" & firstDayOfMonth & "#" & _ " And Year(EffectiveStart) & DatePart('q', EffectiveStart) = '" & aryQuarters(i - 1) & _ "' And Amendment = False And CategoryID=" & rstCategory!CategoryID) originalBudget = IIf(IsNull(originalBudget), 0, originalBudget) Budget = DSum("BudgetAmount", "qryBudgetAmounts", "EffectiveStart < #" & firstDayOfMonth & "#" & _ " And Year(EffectiveStart) & DatePart('q', EffectiveStart) = '" & aryQuarters(i - 1) & _ "' And CategoryID=" & rstCategory!CategoryID) Budget = IIf(IsNull(Budget), 0, Budget) budgetTransfer = Budget - originalBudget 'Set Paid total, Budget Original, Budget Transfers xlBudgetSchedule.ActiveSheet.Cells(currentRow, currentColumn + i).Value = _ IIf(IsNull(sumPayments), 0, sumPayments) xlBudgetSchedule.ActiveSheet.Cells(currentRow + 1, currentColumn + i).Formula = _ "=" & originalBudget & "*" & DateDiff("d", firstDayOfQuarter, theWeekEnd) / DateDiff("d", firstDayOfQuarter, firstDayOfMonth) xlBudgetSchedule.ActiveSheet.Cells(currentRow + 2, currentColumn + i).Formula = _ "=" & budgetTransfer & "*" & DateDiff("d", firstDayOfQuarter, theWeekEnd) / DateDiff("d", firstDayOfQuarter, firstDayOfMonth) xlBudgetSchedule.ActiveSheet.Cells(currentRow, currentColumn + i).BorderAround Weight:=xlMedium xlBudgetSchedule.ActiveSheet.Cells(currentRow + 1, currentColumn + i).BorderAround Weight:=xlMedium xlBudgetSchedule.ActiveSheet.Cells(currentRow + 2, currentColumn + i).BorderAround Weight:=xlMedium xlBudgetSchedule.ActiveSheet.Cells(currentRow + 3, currentColumn + i).BorderAround Weight:=xlMedium 'current week column currentColumn = currentColumn + 1 'Actual paid column - up to this week - no longer show for individual encumbrances sumPayments = DSum("PaymentAmt", "qryPayments", "PaymentDate<=#" & theWeekEnd & "# And CategoryID=" & rstCategory!CategoryID) xlBudgetSchedule.ActiveSheet.Cells(currentRow + 3, currentColumn + i).Value = sumPayments xlBudgetSchedule.ActiveSheet.Cells(currentRow + 3, currentColumn + i).BorderAround Weight:=xlThick 'Budget to date currentColumn = currentColumn + 1 budgetToDateFormula = "=Sum(" & _ "B" & currentRow + 1 & ":" & Chr(65 + currentColumn + i - 3) & (currentRow + 2) & ")" xlBudgetSchedule.ActiveSheet.Cells(currentRow + 3, currentColumn + i).Formula = budgetToDateFormula xlBudgetSchedule.ActiveSheet.Cells(currentRow + 3, currentColumn + i).BorderAround Weight:=xlThick 'Budget - paid currentColumn = currentColumn + 1 xlBudgetSchedule.ActiveSheet.Cells(currentRow + 3, currentColumn + i).Formula = _ "=" & Chr(65 + currentColumn + i - 2) & currentRow + 3 & " - " & Chr(65 + currentColumn + i - 3) & (currentRow + 3) xlBudgetSchedule.ActiveSheet.Cells(currentRow + 3, currentColumn + i).BorderAround Weight:=xlThick '*** Totals Section: Remainder of month - *** currentColumn = currentColumn + 1 currentMonth = Year(theWeekStart) & DatePart("m", theWeekStart) 'budget for remainder of month originalBudget = DSum("BudgetAmount", "qryBudgetAmounts", "[EffectiveStart] < #" & firstDayOfMonth & "#" & _ " And Year(EffectiveStart) & DatePart('q', EffectiveStart) = '" & aryQuarters(i - 1) & _ "' And Amendment = False And CategoryID=" & rstCategory!CategoryID) originalBudget = IIf(IsNull(originalBudget), 0, originalBudget) Budget = DSum("BudgetAmount", "qryBudgetAmounts", "[EffectiveStart] < #" & firstDayOfMonth & "#" & _ " And Year(EffectiveStart) & DatePart('q', EffectiveStart) = '" & aryQuarters(i - 1) & _ "' And CategoryID=" & rstCategory!CategoryID) Budget = IIf(IsNull(Budget), 0, Budget) budgetTransfer = Budget - originalBudget xlBudgetSchedule.ActiveSheet.Cells(currentRow + 1, currentColumn + i).Formula = _ "=" & originalBudget & "*" & DateDiff("d", theWeekEnd, firstDayOfMonth) / DateDiff("d", firstDayOfQuarter, firstDayOfMonth) xlBudgetSchedule.ActiveSheet.Cells(currentRow + 2, currentColumn + i).Formula = _ "=" & budgetTransfer & "*" & DateDiff("d", theWeekEnd, firstDayOfMonth) / DateDiff("d", firstDayOfQuarter, firstDayOfMonth) xlBudgetSchedule.ActiveSheet.Cells(currentRow + 3, currentColumn + i).Value = _ "=" & Budget & "*" & DateDiff("d", theWeekEnd, firstDayOfMonth) / DateDiff("d", firstDayOfQuarter, firstDayOfMonth) xlBudgetSchedule.ActiveSheet.Cells(currentRow, currentColumn + i).BorderAround Weight:=xlMedium xlBudgetSchedule.ActiveSheet.Cells(currentRow + 1, currentColumn + i).BorderAround Weight:=xlMedium xlBudgetSchedule.ActiveSheet.Cells(currentRow + 2, currentColumn + i).BorderAround Weight:=xlMedium xlBudgetSchedule.ActiveSheet.Cells(currentRow + 3, currentColumn + i).BorderAround Weight:=xlMedium '*** Totals: Increment by month instead of quarters for rest of quarter and 2 quarters after - will go here **** monthIncrement = 1 j = i + 1 '*** Loop until we've reached end of Budget or passed thru 2 full quarters + remaining of this quarter Do Until i > numberOfQuarters Or monthIncrement = (8 + DatePart("q", theWeekEnd) * 3 - Month(theWeekEnd) - 1) firstDayOfMonth = DateAdd("m", monthIncrement, CDate(Month(theWeekEnd) & "/1/" & Year(theWeekEnd))) currentMonth = Month(firstDayOfMonth) currentYear = Year(firstDayOfMonth) sumPayments = DSum("PaymentAmt", "qryPayments", "Val(Year(PaymentDate)& DatePart('m', PaymentDate)) = '" & currentYear & currentMonth & _ "' And CategoryID=" & rstCategory!CategoryID) sumPayments = IIf(IsNull(sumPayments), 0, sumPayments) quarterBudget = DSum("BudgetAmount", "qryBudgetAmounts", "CategoryID=" & rstCategory!CategoryID & _ " And Year(EffectiveStart) & DatePart('m', EffectiveStart) = '" & currentYear & currentMonth & "'") quarterOriginalBudget = DSum("BudgetAmount", "qryBudgetAmounts", "CategoryID=" & rstCategory!CategoryID & _ " And Amendment = False And Year(EffectiveStart) & DatePart('m', EffectiveStart) = '" & currentYear & currentMonth & "'") quarterOriginalBudget = IIf(IsNull(quarterOriginalBudget), 0, quarterOriginalBudget) quarterBudget = IIf(IsNull(quarterBudget), 0, quarterBudget) quarterBudgetTransfer = quarterBudget - quarterOriginalBudget xlBudgetSchedule.ActiveSheet.Cells(currentRow, currentColumn + j).Value = _ sumPayments xlBudgetSchedule.ActiveSheet.Cells(currentRow + 1, currentColumn + j).Value = _ quarterOriginalBudget xlBudgetSchedule.ActiveSheet.Cells(currentRow + 2, currentColumn + j).Value = _ quarterBudgetTransfer xlBudgetSchedule.ActiveSheet.Cells(currentRow + 2, currentColumn + j).Value = _ quarterBudgetTransfer xlBudgetSchedule.ActiveSheet.Cells(currentRow + 3, currentColumn + j).Value = _ quarterBudget xlBudgetSchedule.ActiveSheet.Cells(currentRow, currentColumn + j).BorderAround Weight:=xlThin xlBudgetSchedule.ActiveSheet.Cells(currentRow + 1, currentColumn + j).BorderAround Weight:=xlThin xlBudgetSchedule.ActiveSheet.Cells(currentRow + 2, currentColumn + j).BorderAround Weight:=xlThin xlBudgetSchedule.ActiveSheet.Cells(currentRow + 3, currentColumn + j).BorderAround Weight:=xlThin monthIncrement = monthIncrement + 1 j = j + 1 If currentMonth = 1 Or currentMonth = 4 Or currentMonth = 7 Or currentMonth = 10 Then i = i + 1 End If If i = numberOfQuarters Then Exit Do End If Loop currentColumn = currentColumn + monthIncrement - 3 Else 'Other quarters sumPayments = DSum("PaymentAmt", "qryPayments", "Val(Year([PaymentDate])& DatePart('q', [PaymentDate])) = " & aryQuarters(i - 1) & _ " And CategoryID=" & rstCategory!CategoryID) sumPayments = IIf(IsNull(sumPayments), 0, sumPayments) quarterBudget = DSum("BudgetAmount", "qryBudgetAmounts", "CategoryID=" & rstCategory!CategoryID & _ " And Year(EffectiveStart) & DatePart('q', EffectiveStart) = '" & aryQuarters(i - 1) & "'") quarterOriginalBudget = DSum("BudgetAmount", "qryBudgetAmounts", "CategoryID=" & rstCategory!CategoryID & _ " And Amendment = False And Year(EffectiveStart) & DatePart('q', EffectiveStart) = '" & aryQuarters(i - 1) & "'") quarterOriginalBudget = IIf(IsNull(quarterOriginalBudget), 0, quarterOriginalBudget) quarterBudget = IIf(IsNull(quarterBudget), 0, quarterBudget) quarterBudgetTransfer = quarterBudget - quarterOriginalBudget 'Paid total, Budget total xlBudgetSchedule.ActiveSheet.Cells(currentRow, currentColumn + i).Value = _ sumPayments xlBudgetSchedule.ActiveSheet.Cells(currentRow + 1, currentColumn + i).Value = _ quarterOriginalBudget xlBudgetSchedule.ActiveSheet.Cells(currentRow + 2, currentColumn + i).Value = _ quarterBudgetTransfer xlBudgetSchedule.ActiveSheet.Cells(currentRow + 2, currentColumn + i).Value = _ quarterBudgetTransfer If Year(theWeekStart) & DatePart("q", theWeekStart) < aryQuarters(i - 1) Then 'only print revised cum for future quarters xlBudgetSchedule.ActiveSheet.Cells(currentRow + 3, currentColumn + i).Value = _ quarterBudget End If xlBudgetSchedule.ActiveSheet.Cells(currentRow, currentColumn + i).BorderAround Weight:=xlThin xlBudgetSchedule.ActiveSheet.Cells(currentRow + 1, currentColumn + i).BorderAround Weight:=xlThin xlBudgetSchedule.ActiveSheet.Cells(currentRow + 2, currentColumn + i).BorderAround Weight:=xlThin xlBudgetSchedule.ActiveSheet.Cells(currentRow + 3, currentColumn + i).BorderAround Weight:=xlThin 'i = i + 1 End If Loop '***------Total of totals column section -----------------***** 'set formulas - to just sum across or difference xlBudgetSchedule.ActiveSheet.Cells(currentRow, currentColumn + i).Formula = _ "=Sum(B" & currentRow & ":" & Chr(64 + currentColumn + i - 1) & currentRow & ")" xlBudgetSchedule.ActiveSheet.Cells(currentRow + 1, currentColumn + i).Formula = _ "=Sum(B" & (currentRow + 1) & ":" & Chr(64 + currentColumn + i - 1) & (currentRow + 1) & ")" xlBudgetSchedule.ActiveSheet.Cells(currentRow + 2, currentColumn + i).Formula = _ "=Sum(B" & (currentRow + 2) & ":" & Chr(64 + currentColumn + i - 1) & (currentRow + 2) & ")" xlBudgetSchedule.ActiveSheet.Cells(currentRow + 3, currentColumn + i).Formula = _ "=Sum(" & Chr(64 + currentColumn + i) & (currentRow + 1) & ":" & Chr(64 + currentColumn + i) & _ (currentRow + 2) & ")" 'Draw borders xlBudgetSchedule.ActiveSheet.Cells(currentRow, currentColumn + i).BorderAround Weight:=xlThin xlBudgetSchedule.ActiveSheet.Cells(currentRow + 1, currentColumn + i).BorderAround Weight:=xlThin xlBudgetSchedule.ActiveSheet.Cells(currentRow + 2, currentColumn + i).BorderAround Weight:=xlThin xlBudgetSchedule.ActiveSheet.Cells(currentRow + 3, currentColumn + i).BorderAround Weight:=xlThick currentRow = currentRow + 4 End If rstCategory.MoveNext Loop '*** Grand Totals Headings: Put in total rows for whole sheet *** '*** Grand Total headings currentColumn = 1 With xlBudgetSchedule.ActiveSheet .Cells(currentRow, currentColumn).Value = " TOTALS" .Cells(currentRow, currentColumn).Font.Bold = True currentRow = currentRow + 1 .Cells(currentRow, currentColumn).Value = " Total Paid " .Cells(currentRow, currentColumn).Font.Bold = True .Cells(currentRow, currentColumn).Font.Italic = True currentRow = currentRow + 1 .Cells(currentRow, currentColumn).Value = " Total Original Budget " .Cells(currentRow, currentColumn).Font.Bold = True .Cells(currentRow, currentColumn).Font.Italic = True currentRow = currentRow + 1 .Cells(currentRow, currentColumn).Value = " Total Budget Transfer " .Cells(currentRow, currentColumn).Font.Bold = True .Cells(currentRow, currentColumn).Font.Italic = True currentRow = currentRow + 1 .Cells(currentRow, currentColumn).Value = " Total Revised Cumulative Budget" .Cells(currentRow, currentColumn).Font.Bold = True .Cells(currentRow, currentColumn).Font.Italic = True .Range("A" & currentRow & ":P" & currentRow).Borders(9).LineStyle = 1 'Draw a horizontal line currentRow = currentRow - 3 End With '*** Begin Grand totals section *** i = 0 Do Until i > numberOfQuarters i = i + 1 '*** If quarter we are up to is quarter week start is in then break into three(quarter up to, current week, remainder of month) If Year(theWeekStart) & DatePart("q", theWeekStart) = aryQuarters(i - 1) Then firstDayOfQuarter = CDate((DatePart("q", theWeekStart) * 3 - 2) & "/1/" & Year(theWeekStart)) 'first day of quarter this day lies in firstDayOfMonth = DateAdd("m", 1, theWeekEnd - Day(theWeekEnd) + 1) 'First day of next month 'Paid during quarter up to week end this week sumPayments = DSum("PaymentAmt", "qryPayments", "PaymentDate<= #" & theWeekEnd & "# " & _ " And Year(PaymentDate) & DatePart('q', PaymentDate) = '" & aryQuarters(i - 1) & "'") originalBudget = DSum("BudgetAmount", "qryBudgetAmounts", "[EffectiveStart] < #" & firstDayOfMonth & "#" & _ " And Year(EffectiveStart) & DatePart('q', EffectiveStart) = '" & aryQuarters(i - 1) & _ "' And Amendment = False ") originalBudget = IIf(IsNull(originalBudget), 0, originalBudget) Budget = DSum("BudgetAmount", "qryBudgetAmounts", "EffectiveStart < #" & firstDayOfMonth & "#" & _ " And Year(EffectiveStart) & DatePart('q', EffectiveStart) = '" & aryQuarters(i - 1) & _ "' ") Budget = IIf(IsNull(Budget), 0, Budget) budgetTransfer = Budget - originalBudget 'Set Paid total, Budget Original, Budget Transfers xlBudgetSchedule.ActiveSheet.Cells(currentRow, currentColumn + i).Value = _ IIf(IsNull(sumPayments), 0, sumPayments) 'xlBudgetSchedule.ActiveSheet.Cells(currentRow, currentColumn + i).BorderAround Weight:=xlThin xlBudgetSchedule.ActiveSheet.Cells(currentRow + 1, currentColumn + i).Formula = _ "=" & originalBudget & "*" & DateDiff("d", firstDayOfQuarter, theWeekEnd) / DateDiff("d", firstDayOfQuarter, firstDayOfMonth) xlBudgetSchedule.ActiveSheet.Cells(currentRow + 2, currentColumn + i).Formula = _ "=" & budgetTransfer & "*" & DateDiff("d", firstDayOfQuarter, theWeekEnd) / DateDiff("d", firstDayOfQuarter, firstDayOfMonth) xlBudgetSchedule.ActiveSheet.Cells(currentRow, currentColumn + i).BorderAround Weight:=xlMedium xlBudgetSchedule.ActiveSheet.Cells(currentRow + 1, currentColumn + i).BorderAround Weight:=xlMedium xlBudgetSchedule.ActiveSheet.Cells(currentRow + 2, currentColumn + i).BorderAround Weight:=xlMedium xlBudgetSchedule.ActiveSheet.Cells(currentRow + 3, currentColumn + i).BorderAround Weight:=xlMedium '*** Grand Totals: current week column *** currentColumn = currentColumn + 1 'Actual paid column - up to this week - no longer show for individual encumbrances sumPayments = DSum("PaymentAmt", "qryPayments", "PaymentDate<=#" & theWeekStart + 6 & "#") xlBudgetSchedule.ActiveSheet.Cells(currentRow + 3, currentColumn + i).Value = sumPayments xlBudgetSchedule.ActiveSheet.Cells(currentRow + 3, currentColumn + i).BorderAround Weight:=xlThick 'Budget to date currentColumn = currentColumn + 1 budgetToDateFormula = "=Sum(" & _ "B" & currentRow + 1 & ":" & Chr(65 + currentColumn + i - 3) & (currentRow + 2) & ")" xlBudgetSchedule.ActiveSheet.Cells(currentRow + 3, currentColumn + i).Formula = budgetToDateFormula xlBudgetSchedule.ActiveSheet.Cells(currentRow + 3, currentColumn + i).BorderAround Weight:=xlThick 'Budget - paid currentColumn = currentColumn + 1 xlBudgetSchedule.ActiveSheet.Cells(currentRow + 3, currentColumn + i).Formula = _ "=" & Chr(65 + currentColumn + i - 2) & currentRow + 3 & " - " & Chr(65 + currentColumn + i - 3) & (currentRow + 3) xlBudgetSchedule.ActiveSheet.Cells(currentRow + 3, currentColumn + i).BorderAround Weight:=xlThick '*** Grand Totals section: Remainder of month *** currentColumn = currentColumn + 1 'Prorate budget sumPayments = DSum("PaymentAmt", "qryPayments", "PaymentDate<= #" & theWeekEnd & "# " & _ " And Year(PaymentDate) & DatePart('q', PaymentDate) = '" & aryQuarters(i - 1) & "'") originalBudget = DSum("BudgetAmount", "qryBudgetAmounts", "[EffectiveStart] < #" & firstDayOfMonth & "#" & _ " And Year(EffectiveStart) & DatePart('q', EffectiveStart) = '" & aryQuarters(i - 1) & _ "' And Amendment = False ") originalBudget = IIf(IsNull(originalBudget), 0, originalBudget) Budget = DSum("BudgetAmount", "qryBudgetAmounts", "EffectiveStart < #" & firstDayOfMonth & "#" & _ " And Year(EffectiveStart) & DatePart('q', EffectiveStart) = '" & aryQuarters(i - 1) & _ "' ") Budget = IIf(IsNull(Budget), 0, Budget) budgetTransfer = Budget - originalBudget 'xlBudgetSchedule.ActiveSheet.Cells(currentRow, currentColumn + i).Value = _ ' IIf(IsNull(sumPayments), 0, sumPayments) xlBudgetSchedule.ActiveSheet.Cells(currentRow + 1, currentColumn + i).Formula = _ "=" & originalBudget & "*" & DateDiff("d", theWeekEnd, firstDayOfMonth) / DateDiff("d", firstDayOfQuarter, firstDayOfMonth) xlBudgetSchedule.ActiveSheet.Cells(currentRow + 2, currentColumn + i).Formula = _ "=" & budgetTransfer & "*" & DateDiff("d", theWeekEnd, firstDayOfMonth) / DateDiff("d", firstDayOfQuarter, firstDayOfMonth) xlBudgetSchedule.ActiveSheet.Cells(currentRow + 3, currentColumn + i).Formula = _ "=" & Budget & "*" & DateDiff("d", theWeekEnd, firstDayOfMonth) / DateDiff("d", firstDayOfQuarter, firstDayOfMonth) xlBudgetSchedule.ActiveSheet.Cells(currentRow, currentColumn + i).BorderAround Weight:=xlMedium xlBudgetSchedule.ActiveSheet.Cells(currentRow + 1, currentColumn + i).BorderAround Weight:=xlMedium xlBudgetSchedule.ActiveSheet.Cells(currentRow + 2, currentColumn + i).BorderAround Weight:=xlMedium xlBudgetSchedule.ActiveSheet.Cells(currentRow + 3, currentColumn + i).BorderAround Weight:=xlMedium '*** Grand Totals section: Put in total month columns for rest of months in current quarter, 2 quarters after that (by month) monthIncrement = 1 j = i + 1 '*** Grand Totals section: Loop until we've reached end of Budget or passed thru 2 full quarters + remaining of this quarter Do Until i > numberOfQuarters Or monthIncrement = (8 + DatePart("q", theWeekEnd) * 3 - Month(theWeekEnd) - 1) firstDayOfMonth = DateAdd("m", monthIncrement, CDate(Month(theWeekEnd) & "/1/" & Year(theWeekEnd))) currentMonth = Month(firstDayOfMonth) currentYear = Year(firstDayOfMonth) sumPayments = DSum("PaymentAmt", "qryPayments", "Val(Year(PaymentDate)& DatePart('m', PaymentDate)) = '" & currentYear & currentMonth & _ "'") sumPayments = IIf(IsNull(sumPayments), 0, sumPayments) quarterBudget = DSum("BudgetAmount", "qryBudgetAmounts", _ " Year(EffectiveStart) & DatePart('m', EffectiveStart) = '" & currentYear & currentMonth & "'") quarterOriginalBudget = DSum("BudgetAmount", "qryBudgetAmounts", _ "Amendment = False And Year(EffectiveStart) & DatePart('m', EffectiveStart) = '" & currentYear & currentMonth & "'") quarterOriginalBudget = IIf(IsNull(quarterOriginalBudget), 0, quarterOriginalBudget) quarterBudget = IIf(IsNull(quarterBudget), 0, quarterBudget) quarterBudgetTransfer = quarterBudget - quarterOriginalBudget xlBudgetSchedule.ActiveSheet.Cells(currentRow, currentColumn + j).Value = _ sumPayments xlBudgetSchedule.ActiveSheet.Cells(currentRow + 1, currentColumn + j).Value = _ quarterOriginalBudget xlBudgetSchedule.ActiveSheet.Cells(currentRow + 2, currentColumn + j).Value = _ quarterBudgetTransfer xlBudgetSchedule.ActiveSheet.Cells(currentRow + 2, currentColumn + j).Value = _ quarterBudgetTransfer xlBudgetSchedule.ActiveSheet.Cells(currentRow + 3, currentColumn + j).Value = _ quarterBudget xlBudgetSchedule.ActiveSheet.Cells(currentRow, currentColumn + j).BorderAround Weight:=xlThin xlBudgetSchedule.ActiveSheet.Cells(currentRow + 1, currentColumn + j).BorderAround Weight:=xlThin xlBudgetSchedule.ActiveSheet.Cells(currentRow + 2, currentColumn + j).BorderAround Weight:=xlThin xlBudgetSchedule.ActiveSheet.Cells(currentRow + 3, currentColumn + j).BorderAround Weight:=xlThin monthIncrement = monthIncrement + 1 j = j + 1 If currentMonth = 1 Or currentMonth = 4 Or currentMonth = 7 Or currentMonth = 10 Then i = i + 1 End If If i = numberOfQuarters Then Exit Do End If Loop currentColumn = currentColumn + monthIncrement - 3 Else '*** Grand Totals: Other quarters sumPayments = DSum("PaymentAmt", "qryPayments", "Val(Year(PaymentDate)& DatePart('q', PaymentDate)) = " & aryQuarters(i - 1)) quarterBudget = DSum("BudgetAmount", "qryBudgetAmounts", "Year(EffectiveStart) & DatePart('q', EffectiveStart) = '" & aryQuarters(i - 1) & "'") quarterOriginalBudget = DSum("BudgetAmount", "qryBudgetAmounts", _ "Year(EffectiveStart) & DatePart('q', EffectiveStart) = '" & aryQuarters(i - 1) & _ "' And Amendment = False ") quarterOriginalBudget = IIf(IsNull(quarterOriginalBudget), 0, quarterOriginalBudget) quarterBudget = IIf(IsNull(quarterBudget), 0, quarterBudget) quarterBudgetTransfer = quarterBudget - quarterOriginalBudget '*** Grand Totals: Paid total, Budget total xlBudgetSchedule.ActiveSheet.Cells(currentRow, currentColumn + i).Value = _ IIf(IsNull(sumPayments), 0, sumPayments) xlBudgetSchedule.ActiveSheet.Cells(currentRow + 1, currentColumn + i).Value = _ quarterOriginalBudget xlBudgetSchedule.ActiveSheet.Cells(currentRow + 2, currentColumn + i).Value = _ quarterBudgetTransfer If Year(theWeekStart) & DatePart("q", theWeekStart) < aryQuarters(i - 1) Then 'only print revised cum for future quarters xlBudgetSchedule.ActiveSheet.Cells(currentRow + 3, currentColumn + i).Value = _ quarterBudget End If xlBudgetSchedule.ActiveSheet.Cells(currentRow, currentColumn + i).BorderAround Weight:=xlThin xlBudgetSchedule.ActiveSheet.Cells(currentRow + 1, currentColumn + i).BorderAround Weight:=xlThin xlBudgetSchedule.ActiveSheet.Cells(currentRow + 2, currentColumn + i).BorderAround Weight:=xlThin xlBudgetSchedule.ActiveSheet.Cells(currentRow + 3, currentColumn + i).BorderAround Weight:=xlThin End If Loop '***------Total column of grand totals row section -----------------***** 'set formulas - to just sum across columnLetter = Chr(64 + currentColumn + i - 1) xlBudgetSchedule.ActiveSheet.Cells(currentRow, currentColumn + i).Formula = _ "=Sum(B" & currentRow & ":" & columnLetter & currentRow & ")" xlBudgetSchedule.ActiveSheet.Cells(currentRow + 1, currentColumn + i).Formula = _ "=Sum(B" & (currentRow + 1) & ":" & columnLetter & (currentRow + 1) & ")" xlBudgetSchedule.ActiveSheet.Cells(currentRow + 2, currentColumn + i).Formula = _ "=Sum(B" & (currentRow + 2) & ":" & columnLetter & (currentRow + 2) & ")" columnLetter = Chr(64 + currentColumn + i) xlBudgetSchedule.ActiveSheet.Cells(currentRow + 3, currentColumn + i).Formula = _ "=Sum(" & columnLetter & (currentRow + 1) & ":" & columnLetter & _ (currentRow + 2) & ")" '*** Draw borders xlBudgetSchedule.ActiveSheet.Cells(currentRow, currentColumn + i).BorderAround Weight:=xlThin xlBudgetSchedule.ActiveSheet.Cells(currentRow + 1, currentColumn + i).BorderAround Weight:=xlThin xlBudgetSchedule.ActiveSheet.Cells(currentRow + 2, currentColumn + i).BorderAround Weight:=xlThin xlBudgetSchedule.ActiveSheet.Cells(currentRow + 3, currentColumn + i).BorderAround Weight:=xlThick meterReturn = SysCmd(acSysCmdUpdateMeter, 90) xlBudgetSchedule.ActiveSheet.Range("B1:" & columnLetter & "150").NumberFormat = "#,##0.00_);[Red](#,##0.00)" 'Autofit to hold all numbers and text across xlBudgetSchedule.ActiveSheet.Range("A5:" & columnLetter & "150").Columns.AutoFit 'Set Heading to take up full top 3 rows xlBudgetSchedule.ActiveSheet.Range("A1:" & columnLetter & "1").Merge xlBudgetSchedule.ActiveSheet.Range("A2:" & columnLetter & "2").Merge xlBudgetSchedule.ActiveSheet.Range("A3:" & columnLetter & "3").Merge xlBudgetSchedule.ActiveSheet.Range("A4:" & columnLetter & "4").Merge xlBudgetSchedule.ActiveSheet.Range("A6:" & columnLetter & "6").Borders(9).LineStyle = 1 'Draw a horizontal line With xlBudgetSchedule.ActiveSheet.PageSetup .Orientation = xlLandscape .Zoom = False 'Force to use fit to page .FitToPagesWide = 1 .FitToPagesTall = 5 .PrintGridlines = False .LeftMargin = xlBudgetSchedule.InchesToPoints(0.25) .RightMargin = xlBudgetSchedule.InchesToPoints(0.25) .TopMargin = xlBudgetSchedule.InchesToPoints(0.25) .BottomMargin = xlBudgetSchedule.InchesToPoints(0.25) .PrintTitleRows = xlBudgetSchedule.ActiveSheet.Range("A1:A6").Address 'Print the first 6 rows as the header on each sheet .PrintArea = "$A$1:" & "$" & columnLetter & "$" & (currentRow + 3) End With meterReturn = SysCmd(acSysCmdUpdateMeter, 100) meterReturn = SysCmd(acSysCmdClearStatus) 'Make look like a report xlBudgetSchedule.ActiveSheet.Name = "Budget by Category" xlBudgetSchedule.ActiveWindow.Caption = "Budget by Category" xlBudgetSchedule.Application.Caption = "Budget Cashflow Schedule" xlBudgetSchedule.Application.DisplayFormulaBar = False xlBudgetSchedule.ActiveWindow.DisplayFormulas = False xlBudgetSchedule.ActiveWindow.DisplayHeadings = False xlBudgetSchedule.ActiveWindow.DisplayZeros = False ChartBudgetPaymentsCategory xlBudgetSchedule.Visible = True End Sub Public Function ExcelColumnLetters(nColumnNumber As Integer) 'Returns the corresponding Excel column letter notation given an excel column number Dim cLetterNotation As String If nColumnNumber <= 26 Then cLetterNotation = Chr(64 + nColumnNumber) Else cLetterNotation = ExcelColumnLetters(nColumnNumber / 26) & ExcelColumnLetters(nColumnNumber Mod 26) End If ExcelColumnLetters = cLetterNotation End Function | |
Back to Papers and Articles | |
|