Skip to main content

Hoe maak je een maandelijkse/jaarlijkse kalender in Excel?

Author: Sun Last Modified: 2025-05-29

Soms moet je een specifieke maand of jaar kalender maken in Excel, hoe kun je dit snel oplossen? Deze handleiding introduceert trucs om snel een maandelijkse of jaarlijkse kalender te maken in Excel.

Maak een maandelijkse of jaarlijkse kalender aan met een Excel-sjabloon

Maak een maandkalender aan met VBA

Maak eenvoudig een maandelijkse of jaarlijkse kalender aan met de Permanente Kalender


Maak een maandelijkse of jaarlijkse kalender aan met een Excel-sjabloon

In Excel kun je een kalendersjabloon gebruiken om een maandelijkse of jaarlijkse kalender te maken.

1. In Excel 2010/2013, klik op Bestand > Nieuw, in Excel 2007, klik op Office-knop > Nieuw, typ vervolgens in het rechtergedeelte van het pop-upvenster 'kalender' in de zoekmachine. Zie screenshot:

In Excel 2010/2013

a screenshot of searching a calendar template in Excel

In Excel 2007

a screenshot of searching a calendar template in Excel 2007

2. Druk op Enter, vervolgens worden meerdere soorten kalenders weergegeven in het venster. Selecteer het type kalender dat je nodig hebt en klik op Downloaden (of Maken) in het rechterpaneel. Zie screenshot:

a screenshot of downloading the selected calendar template

Nu is een kalender aangemaakt in een nieuw werkboek. Zie screenshot:

a screenshot of the created calendar


Maak een maandkalender aan met VBA

Soms moet je een een-maands kalender maken voor een bepaalde maand, zoals januari 2015. Het kan lastig zijn om zo'n kalendersjabloon te vinden met de bovenstaande methode. Hier introduceer ik een VBA-code om je te helpen een specifieke maandkalender te maken.

1. Druk op Alt + F11 toetsen om het Microsoft Visual Basic for Applications-venster te openen, klik op Invoegen > Module, kopieer en plak vervolgens onderstaande VBA-code in het venster.

VBA: Maak een maandkalender.

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

De VBA komt van deze website https://support.microsoft.com/en-us/kb/150774

2. Druk op F5-toets of op de knop Uitvoeren, en er verschijnt een dialoogvenster waarin je wordt gevraagd de specifieke maand in te voeren waarvoor je een kalender wilt maken, zie screenshot:

a screenshot of typing the specific month you need to create in the calendar

3. Klik op OK. Nu is een januari 2015 kalender gemaakt in het actieve werkblad.

a screenshot of the created calendar

Maar bij de bovenstaande methoden zijn er enkele beperkingen, bijvoorbeeld als je een kalender wilt maken van januari tot mei in één keer, dan moet je de kalender vijf keer maken met de bovenstaande twee methoden. Nu introduceer ik een handige tool om het snel en gemakkelijk op te lossen.


Maak eenvoudig een maandelijkse of jaarlijkse kalender aan met de Permanente Kalender

Permanente Kalender is een van de krachtige hulpmiddelen in Kutools voor Excel, en het kan je helpen om snel een maandelijkse of jaarlijkse kalender in Excel te maken.

1. Klik op Kutools Plus > Werkblad > Permanente Kalender.

2. Specificeer in het pop-updialoogvenster de maandduur waarvoor je de kalender wilt maken en klik op Maken. Zie screenshot:

a screenshot of specifying the starting and ending months in the Perpetual Calendar dialog box

Er wordt een nieuw werkboek aangemaakt met vijf kalenderwerkbladen. Zie screenshot:

a screenshot showing the final created month calendars in Excel

Tip:

Als je alleen een specifieke maandkalender wilt maken, selecteer dan dezelfde maand zowel in de Van- als de Tot-tekstvakken in het dialoogvenster.

Klik hier om meer te weten te komen over Permanente Kalender


Beste Office-productiviteitstools

🤖 Kutools AI Assistent: Breng een revolutie teweeg in data-analyse Methode: Intelligente uitvoering |Code genereren |Aangepaste formules maken |Gegevens analyseren en grafieken genereren |Kutools-functies gebruiken
Populaire functies: Dubbele waarden markeren, markeren of identificeren | Verwijder lege rijen | Kolommen of cellen samenvoegen zonder gegevensverlies | Afronden ...
Super ZOEKEN: VLookup met meerdere criteria | VLookup met meerdere waarden | Meervoudig-blad opzoeken | Fuzzy Match ...
Geavanceerde keuzelijst: Snel keuzelijst maken | Afhankelijke keuzelijst | Meervoudige selectie keuzelijst ...
Kolombeheer: Specifiek aantal kolommen toevoegen | Kolommen verplaatsen | Zichtbaarheid van verborgen kolommen wisselen | Bereik & kolommen vergelijken ...
Uitgelichte functies: Rasterfocus | Ontwerpweergave | Verbeterde formulebalk | Werkboek- & Werkbladbeheer | AutoTekstbibliotheek | Datumkiezer | Gegevens samenvoegen | Cellen coderen/decoderen | E-mail verzenden per lijst | Superfilter | Speciaal filter (filter cellen met vetgedrukt/cursief/doorhalen...) ...
Top15 toolsets:12 Teksttools (Tekst toevoegen, Specifieke tekens verwijderen, ...) |50+ Grafiek type (Gantt-diagram, ...) |40+ Praktische formules (Leeftijd berekenen op basis van geboortedatum, ...) |19 Invoegtools (QR-code invoegen, Afbeelding invoegen vanaf pad, ...) | 12 Conversietools (Omzetten naar woorden, Valutaconversie, ...) | 7 Samenvoeg- & Opsplitstools (Geavanceerd samenvoegen van rijen, Cellen splitsen, ...) | ... en meer

Versterk je Excel-vaardigheden met Kutools voor Excel en ervaar ongeëvenaarde efficiëntie. Kutools voor Excel biedt meer dan300 geavanceerde functies om je productiviteit te verhogen en tijd te besparen. Klik hier om de functie te krijgen die je het meest nodig hebt...


Office Tab brengt een tabbladinterface naar Office en maakt je werk veel eenvoudiger

  • Schakel bewerken en lezen met tabbladen in Word, Excel, PowerPoint in
  • Open en maak meerdere documenten in nieuwe tabbladen van hetzelfde venster, in plaats van in nieuwe vensters.
  • Verhoog je productiviteit met50% en bespaar dagelijks honderden muisklikken!