Os calendários servem como uma representação visual que facilita a contagem do tempo, separando-o em dias, meses e anos. Independente de seu formato, os calendários nos ajudam a organizar afazeres, projetos, e eventos importantes. 

Essa marcação temporal, que começou com a observação do sol e da lua, foi uma das bases para o desenvolvimento da agricultura e, até hoje, é uma ferramenta importante de estruturação do trabalho. 

Como Fazer Calendário no Excel?

Tempo necessário: 5 minutos.

A Microsoft facilitou a criação de calendários personalizáveis com o Excel, disponibilizando diversos templates prontos com temas úteis e criativos, além do layout básico que pode ser adaptado para as necessidades de cada usuário. 

  1. Habilite a opção de “Desenvolvedor”

    Para ter acesso ao layout básico de calendários do Excel, é preciso habilitar a opção “Desenvolvedor”. Na “Página inicial”, clique em “Opções”. No menu, clique em “Personalizar faixa de opções” e procure a opção “Desenvolvedor” na lista “Guias principais”. Após clicar em “Ok”, está tudo pronto para criar um calendário no Excel.calendário no Excel - Passo 1

  2. Clique em “Visual Basic”.

    Crie uma nova “Pasta de trabalho” e, na faixa de opções “Desenvolvedor”, clique em “Visual Basic”;calendário no Excel - Passo 2

  3. Em “Inserir”, clique em “Módulo”.

    Na janela aberta no Passo 2, clique em “Inserir” e então em “Módulo”;calendário no Excel - Passo 3

  4. Cole o script na caixa de texto

    Cole o script do Visual Basic for Applications na planilha do módulo, depois, em “Arquivo”, clique em “Fechar e Retornar ao Microsoft Excel”;
    (O script, fornecido pela Microsoft, estará disponível no final desta publicação.)calendário no Excel - Passo 4

  5. Clique em “Macros”.

    Em “Desenvolvedor”, clique em “Macros”;calendário no Excel - Passo 5

  6. Selecione e execute o calendário

    Na janela, selecione “CalendarMaker”, então clique em “Executar” para criar o calendário;calendário no Excel - Passo 6

  7. Insira as informações do calendário

    Insira o mês e o ano para criar um calendário mensal e clique em “Ok”;calendário no Excel - Passo 7

  8. Adicione outros meses

    Crie outra guia no “+” e repita os procedimentos a partir do passo 2 para criar novos meses.calendário no Excel - Passo 8

  9. Alternativamente, baixe modelos prontos

    Na “Página inicial”, clique em “Mais modelos”;calendário no Excel - Passo 9

  10. Procure por “Calendários”

    Clique em “Calendários”, ou use a barra de pesquisa para procurar outros modelos;calendário no Excel - Passo 10

  11. Clique em “Criar”

    Ao encontrar um layout que faça seu gosto, clique em “Criar”;calendário no Excel - Passo 11

  12. Personalize seu calendário

    Use as direções do calendário baixado para personalizá-lo. Se você baixar um calendário anual, é possível adicionar meses a partir das guias seguindo este mesmo passo a passo.calendário no Excel - Passo 12

Script para o passo 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 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

Agora que você aprendeu a usar o Excel para criar e personalizar calendários, pode organizar sua agenda no computador sem precisar estar conectado à internet. 

Já assistiu aos novos vídeos no YouTube do Olhar Digital? Inscreva-se no canal!