|
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 Worksheets.Add 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") .Merge .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