Ozgrid, Experts in Microsoft Excel Spreadsheets

Create a Worksheet Calendar


Excel VBA Code to Create a Worksheet Calendar

Back to: Excel VBA . Got any Excel/VBA Questions? Free Excel Help

ALSO SEE: Excel Calendar Control || Calendar for Excel || Excel Date and Times || Convert Excel Date Formats

The Excel VBA code below will create a calendar on a new Worksheet. The current day will always be highlighted dynamically each day. The year of the calendar will always be the current year. The dates used are true excel dates and can be used in any date calculations.

You may have to adjust some of the formatting elements to fit your screen size and resolution.

Sub CreateCalendar()

Dim lMonth As Long

Dim strMonth As String

Dim rStart As Range

Dim strAddress As String

Dim rCell As Range

Dim lDays As Long

Dim dDate As Date


    'Add new sheet and format


    ActiveWindow.DisplayGridlines = False

        With Cells

            .ColumnWidth = 6#

            .Font.Size = 8

        End With

    'Create the Month headings

    For lMonth = 1 To 4

            Select Case lMonth

                    Case 1

                        strMonth = "January"

                        Set rStart = Range("A1")

                    Case 2

                        strMonth = "April"

                        Set rStart = Range("A8")

                    Case 3

                        strMonth = "July"

                        Set rStart = Range("A15")

                    Case 4

                        strMonth = "October"

                        Set rStart = Range("A22")

            End Select


            'Merge, AutoFill and align months

            With rStart 
            	.Value = strMonth

                .HorizontalAlignment = xlCenter

                .Interior.ColorIndex = 6

                .Font.Bold = True

                    With .Range("A1:G1")


                        .BorderAround LineStyle:=xlContinuous

                    End With

                .Range("A1:G1").AutoFill Destination:=.Range("A1:U1")

            End With

    Next lMonth


     'Pass ranges for months

     For lMonth = 1 To 12

        strAddress = Choose(lMonth, "A2:G7", "H2:N7", "O2:U7", _
                   			"A9:G14", "H9:N14", "O9:U14", _
                    		"A16:G21", "H16:N21", "O16:U21", _
                            "A23:G28", "H23:N28", "O23:U28")

        lDays = 0

        Range(strAddress).BorderAround LineStyle:=xlContinuous

        'Add dates to month range and format

        For Each rCell In Range(strAddress)

            lDays = lDays + 1

            dDate = DateSerial(Year(Date), lMonth, lDays)

                If Month(dDate) = lMonth Then ' It's a valid date

                    With rCell

                        .Value = dDate

                        .NumberFormat = "ddd dd"

                    End With

                End If

        Next rCell

    Next lMonth


    'add con formatting

     With Range("A1:U28")

           .FormatConditions.Add Type:=xlCellValue, Operator:=xlEqual, Formula1:="=TODAY()"

           .FormatConditions(1).Font.ColorIndex = 2

           .FormatConditions(1).Interior.ColorIndex = 1

    End With

End Sub

Excel Dashboard Reports & Excel Dashboard Charts 50% Off Become an ExcelUser Affiliate & Earn Money

Special! Free Choice of Complete Excel Training Course OR Excel Add-ins Collection on all purchases totaling over $64.00. ALL purchases totaling over $150.00 gets you BOTH! Purchases MUST be made via this site. Send payment proof to [email protected] 31 days after purchase date.

Instant Download and Money Back Guarantee on Most Software


Excel Trader Package Technical Analysis in Excel With $139.00 of FREE software!

Microsoft and Microsoft Excel are registered trademarks of Microsoft Corporation. OzGrid is in no way associated with Microsoft

Some of our more popular products are below...
Convert Excel Spreadsheets To Webpages | Trading In Excel | Construction Estimators | Finance Templates & Add-ins Bundle | Code-VBA | Smart-VBA | Print-VBA | Excel Data Manipulation & Analysis | Convert MS Office Applications To...... | Analyzer Excel | Downloader Excel | MSSQL Migration Toolkit | Monte Carlo Add-in | Excel Costing Templates