Microsoft Excel

How to Create a Calendar in Excel 2013, 2010 & 2007 – With Code

I will tell you a method on how to create a calendar in Excel. You can create a calendar in Microsoft Excel 2013, 2010 and 2007. I will share a code that you can import and get the calendar in Excel. This method is working and all these codes are legal. You can use this code and start creating a calendar in Excel. You can even do calculations on your calendar. Users can automatically calculate the data.

Microsoft Excel is one of the most known software out there. It is used by both professional as well as casual users. It is because Microsoft has the most features in its class. Not only that but since it is a Microsoft software, it comes pre-installed in Windows, which gave it even more popularity.

Many things can be done in Excel, apart from making spreadsheets. And today, we are here with a similar tutorial. In this tutorial, we will be teaching you how to create a calendar in excel. This tutorial will work in 2007, 2010 and 2013 versions of Microsoft Excel.

Read more: How to Make a Spreadsheet in Excel

Benefits of using Excel

While there may be a lot of online calendars online, making one yourself in excel has some advantages. For example, most on the online calendars need you to have an internet connection while excel will work even when you are offline. Apart from that since it is made in Microsoft Excel, you can customize it to your liking. The list of benefits that Microsoft Excel provides goes on and on. Therefore we can say that this tutorial on how to create a calendar in excel makes a lot of sense.

Read more: Kindle Fire vs iPad

Things you will need to Create a Calendar in Excel

As told earlier this tutorial will only work in the 2013, 2010 and 2007 versions of Microsoft Excel. Make sure that you are using either of these versions otherwise this tutorial might now work for you. Apart from this, you should also have some basic Microsoft Excel knowledge. If you are new to this program, make sure to check out all the things that this software provides so that you get familiar with it.

Read more: How to Make a Spreadsheet in Microsoft Word

How to Create a Calendar in Excel Using Code

Finally, we are here with all of the steps to make a calendar in excel. These are the steps suggested by the official Microsoft support staff. This means that these can be trusted easily and will work for sure. Not only that these steps are quite easy to follow. To create a calendar in Microsoft Excel merely follow all the given steps one by one:

  1. First of all, create a new workbook.
  2. After this go to the Developer ribbon, Click Visual Basic.
  3. Now from the Insert menu, click on Module.
  4. Copy the Visual Basic for Applications code below into the module sheet.
  5. On the File menu, click “Close and Return to Microsoft Excel.”
  6. Click the Sheet1 tab.
  7. On the Developer ribbon, click Macros.
  8. Click CalendarMaker, and then click Run to create the calendar.
  9. Following is the code which is to be used for creating the calendar:
  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 resumes at the line that caused the error.
   MyErrorTrap:
       MsgBox "You may not have entered your Month and Year correctly." _
           & Chr(13) & "Spell the Month correctly" _
           & " (or use 3 letter abbreviation)" _
           & Chr(13) & "and 4 digits for the Year"
       MyInput = InputBox("Type in Month and year for Calendar")
       If MyInput = "" Then Exit Sub
       Resume
   End Sub

Read more: How to Make a Spreadsheet in Google Docs

Conclusion

We have shown you everything regarding creating a calendar in excel. We hope that you were able to create a calendar in excel pretty quickly by following this tutorial. Also, let us know your favorite feature of the excel calendar down in the comments section.

If our tutorial has helped you in making a calendar, then consider sharing it with your friends. You can even share this post on social media using the share options provided down below. Doing so will help all those who are looking for how to create a calendar in excel.

Was this article helpful?
YesNo

This post was last modified on September 11, 2020 16:09

Ekaant Puri

I love to write about the latest technology. My work is to write on HowTo, Top 10 and tech solving topics.

View Comments

Recent Posts

Advantages of using Themify Themes

Are you creating a website and trying to find an easy-to-use solution to give it…

8 months ago

Top 10 Best Plex Alternatives – Must Check Now

I have shared the 10 best Plex alternatives. You can use this Plex alternative to…

1 year ago

What is Cardioid and Supercardioid Microphone – Complete Detail

What are super-cardioid microphones? Have you ever got confused between a microphone and a super-cardioid…

1 year ago

What is a Gaming Chair – Top 8 Features

I  have shared the complete details on what is Gaming Chair. Also, check all the…

1 year ago

Top 2 Video Doorbells Without Subscription – Premium Features for Free

I have shared the 2 best Video Doorbells without subscription. You don't need to pay…

2 years ago

How to Set up a Plex Server – Create Own Server To Watch Movies, TV

You can easily Set up a Plex Server on your Windows PC/Laptop by following this…

2 years ago

This website uses cookies.