Membuat kalender otomatis di Excel kini bukan lagi hal yang sulit. Dengan bantuan VBA (Visual Basic for Applications), kamu bisa menyusun kalender lengkap satu tahun penuh hanya dalam sekali klik. Tutorial ini sangat cocok bagi kamu yang ingin membuat kalender kerja, kalender akademik, hingga kalender event tahunan secara rapi dan praktis.
Kenapa Perlu Membuat Kalender Otomatis di Excel?
Biasanya, banyak orang menyusun kalender secara manual di Excel. Sayangnya, cara ini memakan waktu dan rawan kesalahan, terutama jika harus mengganti tahun atau menyesuaikan hari libur nasional. Dengan membuat kalender otomatis di Excel, kamu bisa:
- Menghasilkan kalender 12 bulan penuh dengan format mingguan
- Menampilkan hari libur nasional secara otomatis
- Menempatkan setiap bulan di posisi yang teratur dan menarik
- Memudahkan update kalender setiap tahun hanya dengan mengganti satu sel
Persiapan Worksheet
Sebelum menulis kodenya, kamu perlu menyiapkan dua worksheet di Excel:
- Sheet “Kalender”
Isi tahun yang ingin ditampilkan di sel B1. Nantinya, tombol “Generate Kalender” akan diletakkan di sampingnya (misalnya di sel C1). - Sheet “Libur”
Di sheet ini, buat daftar tanggal libur pada kolom B, mulai dari sel B3 ke bawah. Kamu juga bisa menambahkan nama libur di kolom C untuk referensi jika diperlukan.

Kode VBA untuk Membuat Kalender Otomatis di Excel
Masukkan kode berikut ke dalam Editor VBA (tekan Alt + F11
, lalu sisipkan Module baru dan paste kode-nya):
Sub BuatKalenderCustomPosisi()
Dim ws As Worksheet, wsLibur As Worksheet
Dim tahun As Variant
Dim bulan As Integer
Dim tglAwal As Date
Dim hariKe As Integer
Dim rowOffset As Long, colOffset As Long
Dim liburDict As Object
Dim i As Integer, r As Long, c As Long
Dim bulanPos(1 To 12, 1 To 2) As Variant
Dim tglLibur As Variant
Dim namaHari As Variant
' Posisi bulan (baris, kolom)
bulanPos(1, 1) = 4: bulanPos(1, 2) = 2
bulanPos(2, 1) = 4: bulanPos(2, 2) = 10
bulanPos(3, 1) = 4: bulanPos(3, 2) = 18
bulanPos(4, 1) = 13: bulanPos(4, 2) = 2
bulanPos(5, 1) = 13: bulanPos(5, 2) = 10
bulanPos(6, 1) = 13: bulanPos(6, 2) = 18
bulanPos(7, 1) = 22: bulanPos(7, 2) = 2
bulanPos(8, 1) = 22: bulanPos(8, 2) = 10
bulanPos(9, 1) = 22: bulanPos(9, 2) = 18
bulanPos(10, 1) = 31: bulanPos(10, 2) = 2
bulanPos(11, 1) = 31: bulanPos(11, 2) = 10
bulanPos(12, 1) = 31: bulanPos(12, 2) = 18
' Inisialisasi worksheet
Set ws = ThisWorkbook.Sheets("Kalender")
Set wsLibur = ThisWorkbook.Sheets("Libur")
' Ambil tahun dari sel B1
tahun = Trim(ws.Range("B1").Value)
If Not IsNumeric(tahun) Then
MsgBox "Masukkan tahun valid di sel B1!", vbExclamation
Exit Sub
End If
tahun = CLng(tahun)
' Bersihkan area kalender
ws.Range("B4:Z40").Clear
' Buat dictionary libur
Set liburDict = CreateObject("Scripting.Dictionary")
i = 3
Do While wsLibur.Cells(i, 2).Value <> ""
tglLibur = wsLibur.Cells(i, 2).Value
If IsDate(tglLibur) Then
liburDict(CLng(DateValue(tglLibur))) = i ' Simpan barisnya
End If
i = i + 1
Loop
' Nama-nama hari
namaHari = Array("Min", "Sen", "Sel", "Rab", "Kam", "Jum", "Sab")
' Loop per bulan
For bulan = 1 To 12
rowOffset = bulanPos(bulan, 1)
colOffset = bulanPos(bulan, 2)
' Judul bulan
With ws.Cells(rowOffset, colOffset)
.NumberFormat = "@"
.Value = UCase(Format(DateSerial(tahun, bulan, 1), "mmmm yyyy"))
.Font.Bold = True
End With
' Header nama hari
For i = 0 To 6
With ws.Cells(rowOffset + 1, colOffset + i)
.Value = namaHari(i)
.Font.Bold = True
End With
Next i
' Isi tanggal
tglAwal = DateSerial(tahun, bulan, 1)
hariKe = Weekday(tglAwal, vbSunday)
r = rowOffset + 2
c = colOffset + hariKe - 1
Do While Month(tglAwal) = bulan
With ws.Cells(r, c)
.Value = Day(tglAwal)
.Font.Color = vbBlack
.Font.Bold = False
.Interior.ColorIndex = xlNone
' Hari Minggu
If Weekday(tglAwal, vbSunday) = 1 Then
.Font.Color = vbRed
End If
' Hari Libur
If liburDict.Exists(CLng(tglAwal)) Then
.Interior.Color = RGB(255, 204, 204)
Dim barisLibur As Long
barisLibur = liburDict(CLng(tglAwal))
' Hapus isi dulu agar hyperlink tidak error
.Value = ""
.Hyperlinks.Add _
Anchor:=ws.Cells(r, c), _
Address:="", _
SubAddress:="Libur!B" & barisLibur, _
TextToDisplay:=CStr(Day(tglAwal))
End If
End With
' Geser ke kolom berikut
tglAwal = tglAwal + 1
c = c + 1
' Pindah ke baris baru jika lewat Sabtu
If c > colOffset + 6 Then
c = colOffset
r = r + 1
End If
Loop
Next bulan
MsgBox "Kalender tahun " & tahun & " berhasil dibuat!", vbInformation
End Sub
Kode ini akan membaca tahun dari sel B1, kemudian menyusun kalender 12 bulan di worksheet “Kalender”, lengkap dengan nama hari, tanggal, serta penandaan warna khusus untuk hari Minggu dan hari libur nasional. Berikut penampakannya di VBA Editor:
Jika kamu menginginkan visualisasi kalender yang terstruktur, kode ini juga sudah menyusun posisi setiap bulan agar membentuk tampilan grid 3×4 (3 kolom x 4 baris), sehingga terlihat profesional dan mudah dibaca.
Membuat Tombol “Generate Kalender” di Excel
Untuk lebih memudahkan pengguna, kamu bisa menambahkan tombol Generate Kalender di worksheet “Kalender”. Berikut caranya:
- Masuk ke tab Developer di Excel.
- Jika belum muncul, aktifkan lewat:
File > Options > Customize Ribbon
, lalu centang Developer.
- Klik Insert > Button (Form Control), lalu buat tombol di area kanan sel B1 (misalnya C1 atau D1).
- Setelah muncul jendela Assign Macro, klik
New
. - Gantilah sub yang muncul dengan nama
BuatKalenderCustomPosisi
atau pilih macro yang sudah kamu buat sebelumnya. - Ganti teks tombol menjadi Generate Kalender dengan klik kanan > Edit Text.
Membuat kalender otomatis di Excel pun selesai! Sekarang kamu tinggal mengganti angka tahun di sel B1 dan klik tombolnya. Kalender pun langsung diperbarui secara otomatis sesuai tahun yang dimasukkan. Berikut hasilnya:
Keunggulan Membuat Kalender Otomatis di Excel
Berikut adalah beberapa alasan mengapa banyak orang beralih ke metode membuat kalender otomatis di Excel:
- Cepat dan akurat: Semua tanggal akan dihitung berdasarkan fungsi
DateSerial
, tanpa perlu manual. - Interaktif: Hari libur nasional diberi warna khusus dan dilengkapi hyperlink yang mengarah ke daftar sumbernya.
- Mudah diperbarui: Hanya dengan mengganti satu angka di sel B1, kamu bisa menghasilkan kalender tahun baru.
- Dapat disesuaikan: Posisi bulan, format tanggal, hingga tambahan fitur (seperti catatan atau penanda event) bisa dikembangkan lebih lanjut.
Penutup
Dengan menggunakan script VBA di atas, kamu tidak hanya akan menghemat waktu, tapi juga bisa tampil profesional dalam menyusun dokumen kerja tahunan. Tidak perlu lagi copy-paste template kalender setiap awal tahun, karena kamu sudah memiliki sistem yang dapat membuat kalender otomatis di Excel hanya dalam satu klik.
Jika kamu seorang guru, pegawai administrasi, HR, atau bahkan mahasiswa, fitur ini bisa sangat berguna untuk berbagai kebutuhan manajemen waktu dan kegiatan.
Yuk, mulai membuat kalender otomatis di Excel dari sekarang dan rasakan kemudahannya!
Download Template Gratis
Bagi Anda yang ingin mencoba teknik ini secara langsung, kami telah menyiapkan template gratis yang dirancang khusus untuk membantu Anda mempaktikkan Cara Membuat Kalender Otomatis di Excel ini. File Excel bisa didownload melalui tautan berikut:
Atau juga jika ingin mempelajari langkah demi langkah secara visual, bisa kunjungi Youtube Channel Depot Excel. Di sana teman-teman akan melihat bagaimana rumusnya bekerja. Semoga bermanfaat!
0 Komentar