Come creare un calendario mensile/annuale in Excel?
In alcuni casi, potrebbe essere necessario creare un calendario specifico per un mese o un anno in Excel. Come risolvere rapidamente questo problema? Questa guida introduce alcuni trucchi per creare rapidamente un calendario mensile o annuale in Excel.
Crea un calendario mensile o annuale utilizzando un modello di Excel
Crea un calendario mensile con VBA
Crea facilmente un calendario mensile o annuale con il Calendario Perpetuo
Crea un calendario mensile o annuale utilizzando un modello di Excel
In Excel, puoi utilizzare un modello di calendario per creare un calendario mensile o annuale.
1. In Excel 2010/2013, clicca su File > Nuovo; in Excel 2007, clicca sul Pulsante Office > Nuovo, quindi nella sezione destra della finestra che appare, digita calendario nel motore di ricerca. Vedi screenshot:
In Excel 2010/2013
In Excel 2007
2. Premi Invio, quindi verranno elencati diversi tipi di calendari nella finestra. Seleziona il tipo di calendario di cui hai bisogno e clicca Scarica (o Crea) nel riquadro a destra. Vedi screenshot:
Ora un calendario è stato creato in un nuovo workbook. Vedi screenshot:
Crea un calendario mensile con VBA
A volte, potresti aver bisogno di creare un calendario di un mese specifico, come Gennaio 2015. Potrebbe essere un po' difficile trovare un modello di calendario adatto con il metodo sopra descritto. Qui ti presento un codice VBA per aiutarti a creare un calendario mensile specifico.
1. Premi i tasti Alt + F11 per aprire la finestra Microsoft Visual Basic for Applications, clicca su Inserisci > Modulo, quindi copia e incolla il seguente codice VBA nella finestra.
VBA: Crea un calendario mensile.
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
Il VBA proviene da questa pagina https://support.microsoft.com/en-us/kb/150774
2. Premi il tasto F5 o il pulsante Esegui, e apparirà una finestra di dialogo che ti chiederà di inserire il mese specifico per il quale vuoi creare il calendario, vedi screenshot:
3. Clicca OK. Ora un calendario di Gennaio 2015 è stato creato nel foglio di lavoro corrente.
Ma nei metodi sopra descritti ci sono alcune limitazioni, ad esempio, se vuoi creare un calendario da Gennaio a Maggio in una volta sola, dovrai creare il calendario cinque volte usando i due metodi precedenti. Ora ti presento un'utilità pratica per risolvere il problema rapidamente e facilmente.
Crea facilmente un calendario mensile o annuale con il Calendario Perpetuo
Il Calendario Perpetuo è uno degli strumenti più potenti di Kutools per Excel, e può aiutarti a creare rapidamente un calendario mensile o annuale in Excel in una sola volta.
1. Clicca su Kutools Plus > Foglio di lavoro > Calendario Perpetuo.
2. Nella finestra di dialogo che appare, specifica l'intervallo di mesi per il quale desideri creare il calendario e clicca Crea. Vedi screenshot:
Quindi viene creato un nuovo workbook con cinque fogli di lavoro contenenti calendari. Vedi screenshot:
Suggerimento:
Se vuoi creare un calendario solo per un mese specifico, basta selezionare lo stesso mese sia nella casella Da che nella casella A nella finestra di dialogo.
Clicca qui per saperne di più sul Calendario Perpetuo
I migliori strumenti per la produttività in Office
Potenzia le tue competenze in Excel con Kutools per Excel e sperimenta un'efficienza mai vista prima. Kutools per Excel offre oltre300 funzionalità avanzate per aumentare la produttività e risparmiare tempo. Clicca qui per ottenere la funzione di cui hai più bisogno...
Office Tab porta l'interfaccia a schede in Office e rende il tuo lavoro molto più semplice
- Abilita la modifica e la lettura a schede in Word, Excel, PowerPoint, Publisher, Access, Visio e Project.
- Apri e crea più documenti in nuove schede della stessa finestra, invece che in nuove finestre.
- Aumenta la tua produttività del50% e riduce centinaia di clic del mouse ogni giorno!