Langsung ke konten utama

Cara Membuat Kuitansi di Excel dan Mencetak Otomatis Semua Data Sekaligus dengan VBA

Cara Membuat Kuitansi di Excel dan Mencetak Otomatis Semua Data Sekaligus dengan VBA
Daftar Isi

📍 Pendahuluan

Excel sangat fleksibel dalam membuat dokumen cetak seperti kuitansi pembayaran. Namun, jika Anda memiliki banyak transaksi, mencetak satu per satu bisa memakan waktu. Dengan VBA (Visual Basic for Applications), Anda bisa mencetak semua kuitansi secara otomatis dengan sekali klik.

⚠️ Disclaimer

Artikel ini berfokus pada penggunaan VBA untuk mencetak semua data sekaligus. Desain template kuitansi dan struktur data ditampilkan secara sederhana agar lebih mudah diikuti. Anda bebas memodifikasi tampilan dan struktur datanya sesuai kebutuhan instansi atau pribadi.

🗃️ Persiapan Data Transaksi

Buat sheet bernama "Data" berisi transaksi dengan kolom seperti berikut:

No Nama Tanggal Jumlah Keterangan
1 Ahmad Yusuf 01/04/2025 100000 Pembayaran SPP
2 Siti Aminah 03/04/2025 150000 Uang Gedung

📐 Desain Template Kuitansi

Buat sheet baru bernama "Kuitansi" dan desain seperti ini:

A B
KUITANSI
Sudah diterima dari =Data!B2
Tanggal =Data!C2
Jumlah Uang =Data!D2
Terbilang =Terbilang(Data!D2)
Untuk Pembayaran =Data!E2
TTD

🔤 Menambahkan Rumus Terbilang (Rupiah)

Ada dua opsi: menggunakan fungsi Excel Macro atau VBA.

✅ 1. Fungsi Terbilang VBA

Penggunaan fungsi terbilang berbasis VBA menawarkan tingkat fleksibilitas yang tinggi dan memungkinkan penyesuaian yang lebih mendalam sesuai dengan kebutuhan spesifik. Kode VBA yang diberikan dalam artikel ini bekerja dengan cara memecah angka nominal menjadi satuan, puluhan, ratusan, ribuan, jutaan, hingga triliunan. Setiap bagian angka kemudian dikonversi menjadi representasi kata-katanya. Berikut langkah-langkahnya:

Tekan Alt + F11, pilih Insert > Module, dan salin kode berikut:

Function Terbilang(ByVal Angka As Currency) As String
    Dim Huruf() As String
    Dim Satuan() As String
    Dim Temp As String
    Dim i As Integer, j As Integer, Triad As String, Kata As String
    Dim Bilangan As String

    Huruf = Split("Nol Satu Dua Tiga Empat Lima Enam Tujuh Delapan Sembilan", " ")
    Satuan = Split("", "Ribu Juta Miliar Triliun")

    If Angka = 0 Then
        Terbilang = "Nol Rupiah"
        Exit Function
    End If

    Bilangan = Format(Angka, "0")
    i = 0

    Do While Len(Bilangan) > 0
        Kata = ""
        Triad = Right("000" & Right(Bilangan, 3), 3)
        j = 1
        Do While j <= 3
            Select Case Mid(Triad, j, 1)
                Case "1"
                    If j = 1 And Mid(Triad, 2, 1) = "0" And Mid(Triad, 3, 1) = "0" Then
                        Kata = Kata & "Seratus "
                    ElseIf j = 2 And Mid(Triad, 3, 1) = "0" Then
                        Kata = Kata & "Sepuluh "
                    ElseIf j = 2 And Mid(Triad, 3, 1) = "1" Then
                        Kata = Kata & "Sebelas "
                    Else
                        Kata = Kata & IIf(j = 1, "Satu", Huruf(CInt(Mid(Triad, j, 1)))) & " "
                        If j = 2 Then Kata = Kata & "Puluh "
                        If j = 1 Then Kata = Kata & "Ratus "
                    End If
                Case "0"
                    "" ' skip
                Case Else
                    Kata = Kata & Huruf(CInt(Mid(Triad, j, 1))) & " "
                    If j = 2 Then Kata = Kata & "Puluh "
                    If j = 1 Then Kata = Kata & "Ratus "
            End Select
            j = j + 1
        Loop

        If Kata <> "" Then Kata = Kata & IIf(i > 0, Satuan(i) & " ", "")
        Temp = Kata & Temp
        Bilangan = Left(Bilangan, Len(Bilangan) - 3)
        i = i + 1
    Loop

    Temp = Replace(Temp, "Satu Ribu", "Seribu")
    Terbilang = Application.WorksheetFunction.Proper(Trim(Temp)) & "Rupiah"
End Function

Sekarang, gunakan rumus di cell seperti ini:

=Terbilang(D2)

Keuntungan Menggunakan Fungsi VBA:

  • Fleksibilitas: Kode dapat dimodifikasi jika ada kebutuhan format terbilang yang berbeda.
  • Kemandirian: Setelah fungsi ditambahkan ke dalam workbook, Anda dapat menggunakannya di mana saja tanpa perlu menginstal add-in tambahan.
  • Performa: Untuk penggunaan berulang dalam jumlah besar, fungsi VBA cenderung lebih efisien dibandingkan rumus Excel yang sangat panjang dan kompleks.

✅ 2. Fungsi Terbilang Tanpa VBA

Alternatif jika Anda tidak ingin menggunakan kode VBA adalah dengan memanfaatkan serangkaian fungsi Excel yang dikombinasikan untuk menghasilkan format terbilang. Rumus yang diberikan dalam artikel ini adalah contoh implementasi yang cukup kompleks namun efektif.

Jika tidak ingin menggunakan kode VBA, Anda bisa menggunakan rumus berikut:

=IF(D2=0,"nol",IF(D2<0,"minus ",) SUBSTITUTE(TRIM(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(IF(--MID(TEXT(ABS(D2),"000000000000000"),1,3)=0,"",MID(TEXT(ABS(D2),"000000000000000"),1,1)" ratus "&MID(TEXT(ABS(D2),"000000000000000"),2,1)" puluh "&MID(TEXT(ABS(D2),"000000000000000"),3,1)" trilyun ")&IF(--MID(TEXT(ABS(D2),"000000000000000"),4,3)=0,"",MID(TEXT(ABS(D2),"000000000000000"),4,1)" ratus "&MID(TEXT(ABS(D2),"000000000000000"),5,1)" puluh "&MID(TEXT(ABS(D2),"000000000000000"),6,1)" milyar ")&IF(--MID(TEXT(ABS(D2),"000000000000000"),7,3)=0,"",MID(TEXT(ABS(D2),"000000000000000"),7,1)" ratus "&MID(TEXT(ABS(D2),"000000000000000"),8,1)" puluh "&MID(TEXT(ABS(D2),"000000000000000"),9,1)" juta ")&IF(--MID(TEXT(ABS(D2),"000000000000000"),10,3)=0,"",IF(--MID(TEXT(ABS(D2),"000000000000000"),10,3)=1,"*",MID(TEXT(ABS(D2),"000000000000000"),10,1)" ratus "&MID(TEXT(ABS(D2),"000000000000000"),11,1)" puluh ")&MID(TEXT(ABS(D2),"000000000000000"),12,1)" ribu ")&IF(--MID(TEXT(ABS(D2),"000000000000000"),13,3)=0,"",MID(TEXT(ABS(D2),"000000000000000"),13,1)" ratus "&MID(TEXT(ABS(D2),"000000000000000"),14,1)" puluh "&MID(TEXT(ABS(D2),"000000000000000"),15,1)),"satu"),"dua"),"tiga"),"empat"),"lima"),"enam"),"tujuh"),"delapan"),"sembilan"),"0 ratus",""),"0 puluh",""),"satu puluh 0","sepuluh"),"satu puluh satu","sebelas"),"satu puluh dua","duabelas"),"satu puluh tiga","tigabelas"),"satu puluh empat","empatbelas"),"satu puluh lima","limabelas"),"satu puluh enam","enambelas"),"satu puluh tujuh","tujuhbelas"),"satu puluh delapan","delapanbelas"),"satu puluh sembilan","sembilanbelas"),"satu ratus","seratus"),"*satu ribu","seribu"),0,""))"," "))

Bagaimana Rumus Excel Bekerja (Secara Garis Besar):

Rumus ini bekerja dengan cara memecah angka menjadi beberapa bagian berdasarkan kelompok tiga digit (ribuan, jutaan, miliar, triliun, dan satuan). Untuk setiap kelompok tiga digit, rumus ini mengonversinya menjadi representasi kata-kata untuk ratusan, puluhan, dan satuan.

  • Penanganan Nol dan Negatif: Bagian awal rumus menangani kasus jika angka adalah nol atau negatif.
  • Ekstraksi Kelompok Digit: Fungsi MID dan TEXT digunakan untuk mengekstrak setiap kelompok tiga digit dari angka absolut. Angka terlebih dahulu diubah menjadi teks dengan format 15 digit (ditambah leading zeros jika perlu).
  • Konversi per Kelompok: Untuk setiap kelompok tiga digit, serangkaian fungsi IF dan SUBSTITUTE digunakan untuk mengonversi angka menjadi kata-kata. Logika ini mencakup penanganan angka ratusan, puluhan, dan satuan, termasuk kasus khusus seperti angka belasan.
  • Penggabungan Kata: Hasil konversi dari setiap kelompok digit kemudian digabungkan dengan menambahkan tingkatan satuan yang sesuai (triliun, miliar, juta, ribu).
  • Koreksi dan Pembersihan: Fungsi SUBSTITUTE digunakan berkali-kali untuk mengganti frasa yang tidak tepat (misalnya, "satu ratus" menjadi "seratus", "satu ribu" menjadi "seribu", dan menghilangkan "nol ratus" atau "nol puluh"). Fungsi TRIM digunakan untuk menghilangkan spasi berlebih.

Keuntungan Menggunakan Rumus Excel:

  • Tidak Memerlukan VBA: Cocok untuk pengguna yang tidak familiar atau memiliki batasan dalam menggunakan kode VBA.
  • Langsung Terintegrasi: Rumus dapat langsung dimasukkan ke dalam sel tanpa perlu membuka VBA editor.

Keterbatasan Menggunakan Rumus Excel:

  • Kompleksitas: Rumusnya sangat panjang dan sulit dipahami atau dimodifikasi.
  • Potensi Kesalahan: Karena kompleksitasnya, ada potensi lebih besar untuk kesalahan penulisan rumus.
  • Keterbatasan Penyesuaian: Jika ada perubahan format terbilang yang diinginkan, memodifikasi rumus yang sudah ada bisa menjadi tugas yang rumit.

🖨️ Kode VBA untuk Mencetak Semua Data

Tambahkan kode ini di module yang sama:

Sub CetakSemuaKuitansi()
    Dim wsData As Worksheet
    Dim wsKuitansi As Worksheet
    Dim i As Integer, lastRow As Integer

    Set wsData = Sheets("Data")
    Set wsKuitansi = Sheets("Kuitansi")
    
    lastRow = wsData.Cells(wsData.Rows.Count, "A").End(xlUp).Row
    
    For i = 2 To lastRow
        ' Update referensi rumus di template
        wsKuitansi.Range("B2").Formula = "=Data!B" & i
        wsKuitansi.Range("B3").Formula = "=Data!C" & i
        wsKuitansi.Range("B4").Formula = "=Data!D" & i
        wsKuitansi.Range("B5").Formula = "=Data!E" & i
        wsKuitansi.Range("B6").Formula = "=Terbilang(Data!D" & i & ")"

        ' Cetak sheet Kuitansi
        wsKuitansi.PrintOut
    Next i
    
    MsgBox "Semua kuitansi berhasil dicetak!", vbInformation
End Sub

▶️ Cara Menjalankan Makro

Tekan Alt + F8, pilih CetakSemuaKuitansi, dan klik Run. Semua kuitansi akan dicetak otomatis sesuai data.

💡 Tips Tambahan

  • Gunakan Print Preview atau ubah PrintOut ke PrintPreview dulu untuk mengecek tampilan.
  • Tambahkan nomor kuitansi otomatis: ="KW-"&TEXT(ROW(A1),"000")
  • Cetak ke PDF? Tambahkan baris: wsKuitansi.ExportAsFixedFormat Type:=xlTypePDF, Filename:="Kuitansi_" & i & ".pdf"

✅ Penutup

Dengan kombinasi template sederhana, fungsi terbilang, dan VBA, proses pembuatan dan pencetakan kuitansi jadi otomatis dan efisien. Anda bisa menyesuaikan desain sesuai instansi atau kebutuhan profesional.

Komentar

Postingan populer dari blog ini

Excel Custom Number Format: Biar Tampilan Angka Makin Estetik dan Fungsional!

Excel Custom Number Format: Biar Tampilan Angka Makin Estetik dan Fungsional! Halo teman-teman! 🌸 Pernah nggak sih kamu buka file Excel dan lihat angka-angkanya tampilannya cantik banget? Ada yang pakai warna, ada tanda plus-minus otomatis, bahkan ada yang tampil kayak “Rp 10.000” langsung tanpa pakai rumus apa-apa. Nah, itu semua bukan sihir, tapi hasil dari fitur canggih bernama Custom Number Format di Excel! Yuk kita bahas dari awal, pelan-pelan, biar kamu bisa langsung praktek dan tampil sebagai Excel Queen atau King di kantor atau kampus! 👑 Daftar Isi 1. Apa Itu Custom Number Format? 2. Cara Akses Menu Custom Number Format 3. Struktur Dasar Custom Number Format 4. Simbol-Simbol Penting dalam Custom Number Format 5. Contoh-Contoh Custom Format yang Keren dan Berguna 6. Satuan Otomatis: Ribu, Juta, Miliar 7. Menampilkan Teks Setelah Angka 8. Tambahkan Warna Otomatis Berdasarkan Nilai 9. Con...

Cara Meningkatkan Formula Excel Kamu dengan Named Range: Rahasia Rapi dan Ramping di Dunia Pendidikan

Memaksimalkan Formula Excel dengan Named Range di Dunia Pendidikan 📌 Daftar Isi 1. Pendahuluan: Kenapa Formula Excel Bisa Ruwet? 2. Apa Itu Named Range di Excel? 3. Manfaat Named Range untuk Guru dan Tenaga Administrasi 4. Langkah-Langkah Membuat Named Range 5. Cara Menggunakan Named Range dalam Formul 6. Kesalahan Umum dalam Menggunakan Named Range 7. Tips Profesional: Gunakan Named Range Dinamis 8. Studi Kasus: Rapor K13 9. Kesimpulan 1. Pendahuluan: Kenapa Formula Excel Bisa Ruwet? Pernahkah kamu membuka file Excel dan menemukan formula seperti ini? =IF(AND(B2>=75,C2="Hadir"),"LULUS","TIDAK LULUS") Formula seperti itu mungkin jelas bagi kamu, tapi ketika digunakan oleh orang lain atau mengalami perubahan layout, referensinya bisa kacau. Maka dari itu, kita perlu solusi: Named Range . Klik untuk Hadiah 2. Apa Itu Named Range d...