Crazy Tech Tricks

  • Home
  • How To
  • Top 10
  • Android
  • iOS
  • Windows 10
  • Microsoft Office

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

Last updated on September 11, 2020 by Ekaant Puri 2 Comments

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.How to Create a Calendar in Excel

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

Filed Under: Microsoft Excel, HOME, HOW TO, Microsoft Office, PC/Laptop, What is, Windows, Windows 10, Windows 7, Windows 8, Windows 8.1 Tagged With: calender in excel, create calendar from excel spreadsheet data, excel calendar formula, how to make a weekly calendar in excel, how to make an interactive calendar in excel

About Ekaant Puri

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

Comments

  1. Ric Schultz says

    December 27, 2019 at 06:13

    Can this calendar be used in an Excel 2010 User Form Textbox to insert the selected date into the text box?

    Reply
    • Ekaant Puri says

      December 30, 2019 at 14:37

      Hey Ric, yes you can use it!

      Reply

Leave a Reply Cancel reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.

DMCA.com Protection Status

Recommended

  • How to Fix Data Connection Problem in Android Mobile – Top 5 Methods
  • How to Rotate a Video in Windows PC/Laptops 2018 – Rotate at any Angle
  • How to Transfer Photos From Android to Mac – Top 3 Methods
  • How to Search Email on iPhone Quickly – Best Method
  • How to Set up Emergency Bypass on iPhone For Calls, Message and FaceTime

We’re Social

Facebook  Twitter  Instagram  Pinterest  YouTube

Crazy Tech Tricks © 2015-2022. All rights reserved. All logos and trademarks belongs to their respective owners.

  • About Us
  • Disclaimer
  • Privacy Policy
  • Cookie Policy
  • Advertise With Us