If you need a way to keep track of every day for a month for a year, it might be feasible to make use of the Microsoft application. In this way, in addition to being able to check it directly from your PC screen, it is possible to print for those who prefer to have everything on paper. See in this guide how to make a calendar in Excel.
Enable the “Developer” option
Before starting the guide, it is important to know if the application contains the “Developer” ribbon in a visible way. If not, you need to enable it. To do so, follow these steps:
- Open the “File” option;
- Select “More” and then “Options”;
- In the menu that opens, click on “Customize Ribbon”;
- In the “Main Tabs” menu, look for the “Developer” option and enable it;
- Hit “Ok” to finish. Now you will be able to make a calendar in Excel.
Step by step
Time needed: 5 minutes.
The first walkthrough on how to make a calendar focuses on using the Visual Basic Macro for Excel 2007 or later. Procedures such as using Excel 2003 or using a simpler form will follow shortly.
- Open the menu, click the “New” button and then “Blank workbook”;
- Look for the “Developer” button on the ribbon and click on the “Visual Basic” option;
- In the “Insert” menu, click on “Module”;
- A small window will open. Paste the script at the end of this walkthrough into the module sheet. It is with it that it will be possible to create the calendar in Excel manually;
- Now, click on “File” and then on “Close and return to Microsoft Excel”. This same procedure can be done with the Alt + Q key combination”;
- Go back to the spreadsheet. Open the “Developer” options and then click on “Macros”;
- Create the Calendar in Excel: As soon as the Macro window appears, click on the “CalendarMaker” option and on “Run”;
- The calendar in your Excel spreadsheet will then be visible.
Script to copy and paste in step 4
Sub CalendarMaker() ' Unprotect sheet if had previous calendar to prevent error. ActiveSheet.Protect DrawingObjects:=False, Contents:=False, _ Scenarios:=False ' Prevent screen flashing while drawing calendar. Application.ScreenUpdating = False ' Set up error trapping. On Error GoTo MyErrorTrap ' Clear area a1:g14 including any previous calendar. Range("a1:g14").Clear ' Use InputBox to get desired month and year and set variable ' MyInput. MyInput = InputBox("Type in Month and year for Calendar") ' Allow user to end macro with Cancel in InputBox. If MyInput = "" Then Exit Sub ' Get the date value of the beginning of inputted month. StartDay = DateValue(MyInput) ' Check if valid date but not the first of the month ' -- if so, reset StartDay to first day of month. If Day(StartDay) <> 1 Then StartDay = DateValue(Month(StartDay) & "/1/" & _ Year(StartDay)) End If ' Prepare cell for Month and Year as fully spelled out. Range("a1").NumberFormat = "mmmm yyyy" ' Center the Month and Year label across a1:g1 with appropriate ' size, height and bolding. With Range("a1:g1") .HorizontalAlignment = xlCenterAcrossSelection .VerticalAlignment = xlCenter .Font.Size = 18 .Font.Bold = True .RowHeight = 35 End With ' Prepare a2:g2 for day of week labels with centering, size, ' height and bolding. With Range("a2:g2") .ColumnWidth = 11 .VerticalAlignment = xlCenter .HorizontalAlignment = xlCenter .VerticalAlignment = xlCenter .Orientation = xlHorizontal .Font.Size = 12 .Font.Bold = True .RowHeight = 20 End With ' Put days of week in a2:g2. Range("a2") = "Sunday" Range("b2") = "Monday" Range("c2") = "Tuesday" Range("d2") = "Wednesday" Range("e2") = "Thursday" Range("f2") = "Friday" Range("g2") = "Saturday" ' Prepare a3:g7 for dates with left/top alignment, size, height ' and bolding. With Range("a3:g8") . HorizontalAlignment = xlRight .VerticalAlignment = xlTop .Font.Size = 18 .Font.Bold = True .RowHeight = 21 End With ' Put inputted month and year fully spelling out into "a1". Range("a1").Value = Application.Text(MyInput, "mmmm yyyy") ' Set variable and get which day of the week the month starts. DayofWeek = WeekDay(StartDay) ' Set variables to identify the year and month as separate ' variables. CurYear = Year(StartDay) CurMonth = Month(StartDay) ' Set variable and calculate the first day of the next month. FinalDay = DateSerial(CurYear, CurMonth + 1, 1) ' Place a "1" in cell position of the first day of the chosen ' month based on DayofWeek. Select Case DayofWeek Case 1 Range("a3").Value = 1 Case 2 Range("b3").Value = 1 Case 3 Range("c3").Value = 1 Case 4 Range("d3").Value = 1 Case 5 Range("e3").Value = 1 Case 6 Range("f3").Value = 1 Case 7 Range("g3").Value = 1 End Select ' Loop through range a3:g8 incrementing each cell after the "1" ' cell. For Each cell In Range("a3:g8") RowCell = cell.Row ColCell = cell.Column ' Do if "1" is in first column. If cell.Column = 1 And cell.Row = 3 Then ' Do if current cell is not in 1st column. ElseIf cell.Column <> 1 Then If cell.Offset(0, -1).Value >= 1 Then cell.Value = cell.Offset(0, -1).Value + 1 ' Stop when the last day of the month has been 'entered. If cell.Value > (FinalDay - StartDay) Then cell.Value = "" ' Exit loop when calendar has correct number of ' days shown. Exit For End If End If ' Do only if current cell is not in Row 3 and is in Column 1. ElseIf cell.Row > 3 And cell.Column = 1 Then cell.Value = cell.Offset(-1, 6). Value + 1 ' Stop when the last day of the month has been entered. If cell.Value > (FinalDay - StartDay) Then cell.Value = "" ' Exit loop when calendar has correct number of days ' shown. Exit For End If End If Next ' Create Entry cells, format them centered, wrap text, and border ' around days. For x = 0 To 5 Range("A4").Offset(x * 2, 0).EntireRow.Insert With Range("A4:G4").Offset(x * 2, 0) .RowHeight = 65 .HorizontalAlignment = xlCenter .VerticalAlignment = xlTop .WrapText = True .Font.Size = 10 .Font.Bold = False ' Unlock these cells to be able to enter text later after 'sheet is protected. .Locked = False End With ' Put border around the block of dates. With Range("A3").Offset(x * 2, 0).Resize(2, _ 7).Borders(xlLeft) .Weight = xlThick .ColorIndex = xlAutomatic End With With Range("A3").Offset(x * 2, 0).Resize(2, _ 7).Borders(xlRight) .Weight = xlThick .ColorIndex = xlAutomatic End With Range("A3").Offset(x * 2, 0).Resize(2, 7) .BorderAround _ Weight:=xlThick, ColorIndex:=xlAutomatic Next If Range("A13").Value = "" Then Range("A13").Offset(0, 0) _ .Resize(2, 8).EntireRow. Delete 'Turn off gridlines. ActiveWindow.DisplayGridlines = False ' Protect sheet to prevent overwriting the dates. ActiveSheet.Protect DrawingObjects:=True, Contents:=True, _ Scenarios:=True ' Resize window to show all of calendar (may have to be adjusted ' for video configuration). ActiveWindow.WindowState = xlMaximized ActiveWindow.ScrollRow = 1 ' Allow screen to redraw with calendar showing. Application.ScreenUpdating = True ' Prevent going to error trap unless error found by exiting Sub ' here. Exit Sub ' Error causes msgbox to indicate the problem, provides new input box, ' and summaries at the line that caused the error. MyErrorTrap: MsgBox "You may not have entered your Month and Year correctly."
How to make calendar in excel 2003
If you are using the 2003 version of the Microsoft application, the walkthrough is a little different. Follow this guide:
- Create a new workbook;
- Go to the “Tools” menu, click on “Macro” and then on “Visual Basic Editor”;
- Open the “Insert” menu and click on “Module”;
- Copy the script above and paste it in the blank window that opens;
- Go to the “File” menu and click on “Close and return to Microsoft Excel”;
- Open the spreadsheet;
- Open the “Tools” menu, select “Macro” and click on “Macros”;
- Click the “CalendarMaker” button and click Run to create the calendar in Excel 2003.
How to add the calendar in Excel the simplest way
Finally, Microsoft’s own application offers ready-made templates for those who just want to add information for daily and casual use.
- Click on “File”;
- Select the “New” option;
- Find the search bar to search for templates online;
- Type the word “Calendar”;
- Select the option you want and click “Create”.
Even with so much information, now you are no longer in doubt about how to make a calendar in Microsoft Excel. Tell us about your experience with the app!