Como criar um calendário mensal no Excel

O suporte para o Office 2003 terminou

A Microsoft terminou o suporte para o Office 2003 em 8 de Abril de 2014. Esta alteração afetou as suas atualizações de software e opções de segurança. Aprenda o que isto significa para si e como pode ficar protegido.

IMPORTANTE: Este artigo foi traduzido por um sistema de tradução automática (também designado por Machine translation ou MT), não tendo sido portanto revisto ou traduzido por humanos. A Microsoft tem artigos traduzidos por aplicações (MT) e artigos traduzidos por tradutores profissionais. O objectivo é simples: oferecer em Português a totalidade dos artigos existentes na base de dados do suporte. Sabemos no entanto que a tradução automática não é sempre perfeita. Esta pode conter erros de vocabulário, sintaxe ou gramática… erros semelhantes aos que um estrangeiro realiza ao falar em Português. A Microsoft não é responsável por incoerências, erros ou estragos realizados na sequência da utilização dos artigos MT por parte dos nossos clientes. A Microsoft realiza actualizações frequentes ao software de tradução automática (MT). Obrigado.

Clique aqui para ver a versão em Inglês deste artigo: 150774
Sumário
Este artigo contém um exemplo de uma macro do Microsoft Visual Basic for Applications (Sub-procedimento) que lhe solicita o mês e ano e cria um calendário mensal utilizando uma folha de cálculo.
Resolução
A Microsoft fornece exemplos de programação apenas a título ilustrativo, sem garantia expressa ou implícita. Isto inclui, mas não está limitado a, garantias implícitas de comercialização ou adequação a um fim específico. Este artigo pressupõe que está familiarizado com a linguagem de programação que está a ser demonstrada e com as ferramentas que são utilizadas para criar e depurar procedimentos. Técnicos de suporte da Microsoft podem ajudar a explicar a funcionalidade de um determinado procedimento, mas não modificarão estes exemplos para proporcionarem funcionalidades adicionais nem criarão procedimentos adaptados às necessidades específicas do utilizador.

Para criar o calendário, siga estes passos.

Microsoft Excel2003

  1. Crie um novo livro.
  2. No menu Ferramentas, aponte para Macro e, em seguida, clique em Editor do VisualBasic.
  3. No menu Inserir, clique em Módulo.
  4. Copie o código Visual Basic for Applications abaixo na folha de themodule.
  5. No menu ficheiro, clique em "Fechar e regressar ao Microsoft Excel".
  6. Clique no separador Folha1.
  7. No menu Ferramentas, aponte para Macro e, em seguida, clique em Macros.
  8. Clique em CalendarMaker e, em seguida, clique em Executar para criar o calendário.

O Microsoft Excel 2007 ou posterior

  1. Crie um novo livro.
  2. No friso para Programadores, faça clique sobre o Visual Basic.
  3. No menu Inserir, clique em Módulo.
  4. Copie o código Visual Basic for Applications abaixo na folha do módulo.
  5. No menu ficheiro, clique em "Fechar e regressar ao Microsoft Excel".
  6. Clique no separador Folha1.
  7. No friso para Programadores, clique em Macros
  8. Clique em CalendarMaker e, em seguida, clique em Executar para criar o calendário.

Nota: Se o Friso de Programador não for visível vá até opções do Excel e ative-o No Excel 2007 vai encontrá-lo no menu Popular e no Excel 2010 vai encontrá-lo no menu Personalizar Friso.

Exemplo do Procedimento do Visual Basic

  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				
Pode adicionar outros códigos para personalizar o calendário às suas necessidades. Inserir linhas extra para entrada no ecrã para cada dia ou redimensionar o ecrã para ver todo o calendário com base no tamanho do ecrã e de resolução.
XL2003 XL2007 XL2010

Aviso: Este artigo foi traduzido automaticamente

Propriedades

ID do Artigo: 150774 - Última Revisão: 05/21/2016 16:54:00 - Revisão: 18.0

Microsoft Office Excel 2003, Microsoft Office Excel 2007, Microsoft Excel 2010, Excel 2016

  • kbautomation kbdtacode kbhowto kbprogramming kbmt KB150774 KbMtpt
Comentários