Cara Membuat Nota di Excel Otomatis dengan VBA: Dropdown, Print & Simpan PDF

oleh | 25 Apr 2025 | VBA Macro | 0 Komentar

Cara Membuat Nota di Excel – Bagi pelaku usaha kecil dan menengah (UMKM), cara membuat nota di Excel yang otomatis dan efisien sangat penting untuk mempercepat transaksi dan menghindari kesalahan. Artikel ini akan membahas cara membuat nota di Excel menggunakan VBA (Visual Basic for Applications), termasuk fitur-fitur unggulan seperti:

  • Dropdown list nama barang yang dinamis dan tidak menampilkan barang yang sudah dipilih.
  • Barang dengan stok 0 tidak akan muncul di dropdown list.
  • Stok barang otomatis berkurang setiap kali terjadi transaksi.
  • Fitur cetak nota langsung dari Excel.
  • Simpan nota dalam format PDF secara otomatis.

Dengan tutorial ini, Anda tidak perlu software mahal—cukup Excel dan sedikit sentuhan VBA!

Struktur Data yang Dibutuhkan

Sebelum mulai membuat VBA, berikut struktur sheet yang digunakan untuk cara membuat nota di Excel ini:

1. Sheet DataBarang

  • Kolom B (mulai B3): Nama Barang
  • Kolom C (mulai C3): Harga Satuan
  • Kolom D (mulai D3): Jumlah Stok

2. Sheet NotaPenjualan

  • Kolom B7:B16: Nomor Urut. Gunakan rumus =IF(ISBLANK(C7);"";ROW(A1)).
  • Kolom C7:C16: Input Nama Barang. Ini akan muncul dropdown list otomatis
  • Kolom D7:D16: Jumlah Beli
  • Kolom E7:E16: Harga Satuan. Gunakan rumus: =IFERROR(INDEX(DataBarang!$C$3:$C$12; MATCH(C7; DataBarang!$B$3:$B$12; 0));"")
  • Kolom F7:F16: Jumlah. Gunakan rumus: =IF(ISBLANK(D7);"";D7*E7)

Catatan: Jangan lupa untuk menyalin rumus-rumus di atas ke sel-sel yang ada di bawahnya agar semua kolom otomatis mengkalkulasi hasilnya.

Template cara membuat nota di Excel

Script VBA: Dropdown List Dinamis Otomatis

Script ini akan menampilkan dropdown list nama barang berdasarkan data di sheet DataBarang, menyembunyikan barang yang sudah dipilih, dan mengabaikan barang dengan stok 0, yang akan menjadi nilai lebih dari cara membuat nota di Excel ini:

Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
    Dim daftarBarang As Range, cell As Range
    Dim listBarang() As String
    Dim sudahDipilih As Collection
    Dim i As Long
    Dim stok As Double
    Dim wsData As Worksheet

    On Error GoTo ExitHandler

    If Sh.Name = "NotaPenjualan" Then
        If Not Intersect(Target, Sh.Range("C7:C16")) Is Nothing And Target.Cells.Count = 1 Then

            Set wsData = ThisWorkbook.Sheets("DataBarang")
            Set daftarBarang = wsData.Range("B3:B100")
            Set sudahDipilih = New Collection

            ' Ambil barang yang sudah dipilih
            For Each cell In Sh.Range("C7:C16")
                If cell.Value <> "" And cell.Address <> Target.Address Then
                    On Error Resume Next
                    sudahDipilih.Add cell.Value, CStr(cell.Value)
                    On Error GoTo 0
                End If
            Next cell

            ' Filter daftar barang
            ReDim listBarang(0)
            i = 0

            For Each cell In daftarBarang
                If cell.Value <> "" Then
                    stok = wsData.Cells(cell.Row, "D").Value
                    On Error Resume Next
                    sudahDipilih.Item CStr(cell.Value)
                    If Err.Number <> 0 And stok > 0 Then
                        ReDim Preserve listBarang(i)
                        listBarang(i) = cell.Value
                        i = i + 1
                    End If
                    Err.Clear
                    On Error GoTo 0
                End If
            Next cell

            With Target.Validation
                .Delete
                .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, _
                     Operator:=xlBetween, Formula1:=Join(listBarang, ",")
                .IgnoreBlank = True
                .InCellDropdown = True
                .ShowInput = True
                .ShowError = True
            End With
        End If
    End If

ExitHandler:
    Exit Sub
End Sub

Cara Memasang VBA Ini

Berikut adalah langkah-langkah memasang VBA untuk cara membuat nota di Excel ini:

  1. Tekan Alt + F11 untuk masuk ke Editor VBA.
  2. Di ThisWorkbook, tempelkan kode di atas.
  3. Simpan workbook sebagai Excel Macro-Enabled Workbook (*.xlsm).
Baca Juga  Cara Membuat Dropdown List Tanpa Baris Kosong di Excel dengan VBA
Script VBA cara membuat nota di Excel

Penjelasan Singkat Script VBA

Secara singkat, VBA ini dapat dijelaaskan sebagai berikut:

  • If Sh.Name = "NotaPenjualan". Script hanya aktif di sheet bernama NotaPenjualan.
  • Intersect(Target, Sh.Range("C7:C16")). Aktif jika sel yang diklik berada di kolom C7 sampai C16 (kolom Nama Barang).
  • Set daftarBarang = wsData.Range("B3:B100"). Mengambil daftar nama barang dari sheet DataBarang, kolom B baris 3 ke bawah.
  • sudahDipilih.Add cell.Value. Mengumpulkan barang yang sudah dipilih di baris C7:C16 agar tidak muncul lagi.
  • stok = wsData.Cells(cell.Row, "D").Value. Mengambil nilai stok dari kolom D pada baris yang sama.
  • If Err.Number <> 0 And stok > 0 Then. Barang hanya ditambahkan ke dropdown jika belum dipilih dan stoknya lebih dari 0.
  • Target.Validation.Add .... Membuat dropdown list di sel yang aktif (Target) dengan barang yang lolos filter.

Script Cetak dan Simpan PDF Nota

Dua script berikut membuat tombol terpisah untuk mencetak dan menyimpan nota sebagai PDF:

Sub CetakNotaSaja()
    Dim ws As Worksheet
    Dim lastRow As Long
    Dim rngCetak As Range

    Set ws = ThisWorkbook.Sheets("NotaPenjualan")
    lastRow = ws.Cells(ws.Rows.Count, "C").End(xlUp).Row
    If lastRow < 7 Then lastRow = 7
    Set rngCetak = ws.Range("A1:G" & lastRow)

    rngCetak.PrintOut
End Sub

Sub SimpanPDF()
    Dim ws As Worksheet
    Dim lastRow As Long
    Dim namaFile As String
    Dim folderPath As String
    Dim noInvoice As String
    Dim rngCetak As Range

    Set ws = ThisWorkbook.Sheets("NotaPenjualan")
    lastRow = ws.Cells(ws.Rows.Count, "C").End(xlUp).Row
    If lastRow < 7 Then lastRow = 7
    Set rngCetak = ws.Range("A1:G" & lastRow)

    noInvoice = ws.Range("A1").Value
    folderPath = ThisWorkbook.Path & "\PDFNota\"
    If Dir(folderPath, vbDirectory) = "" Then MkDir folderPath

    namaFile = folderPath & "Nota_" & noInvoice & ".pdf"

    rngCetak.ExportAsFixedFormat Type:=xlTypePDF, Filename:=namaFile, _
        Quality:=xlQualityStandard, IncludeDocProperties:=True, _
        IgnorePrintAreas:=False, OpenAfterPublish:=True
End Sub

Cara Memasang VBA Ini

Berikut langkah-langkah untuk memasang Script Cetak dan Simpan PDF Nota:

  1. Tekan Alt + F11 → buka VBA Editor.
  2. Klik kanan pada project → Insert > Module dan tempelkan kode di atas
  3. Pasang Tombol
  • Aktifkan tab Developer.
  • Klik Insert > Button (Form Control).
  • Gambar tombol di sheet NotaPenjualan.
  • Pilih macro CetakNotaSaja atau SimpanPDF.
  • Buat 2 tombol: satu untuk cetak, satu untuk simpan PDF.
Baca Juga  Cara Menggabung Banyak File Excel dalam Satu Workbook dengan VBA Macro

Dengan fitur ini, kamu bisa mencetak dan menyimpan nota secara cepat langsung dari Excel. Sangat cocok sebagai bagian dari cara membuat nota di Excel yang efisien dan profesional. Berikut tampilannya:

Fitur-Fitur yang Ada di Nota Excel Ini

Berikut fitur yang membuat nota ini sangat bermanfaat bagi pelaku UMKM:

  • Dropdown barang dinamis: hanya menampilkan barang yang belum dipilih dan stoknya masih tersedia.
  • Stok otomatis berkurang: dapat dikombinasikan dengan script pengurangan stok (opsional).
  • Cetak nota sekali klik melalui tombol cetak.
  • Simpan PDF otomatis: nama file disesuaikan dengan nomor invoice.
  • Bisa digunakan di Excel versi lama karena hanya menggunakan VBA, tanpa Power Query atau Office Script.
Hasil dari cara membuat nota di Excel

Penutup

Itulah panduan lengkap cara membuat nota di Excel dengan fitur lengkap berbasis VBA. Dengan mengikuti tutorial ini, Anda tidak hanya menghemat waktu dalam membuat nota, tetapi juga menciptakan sistem penjualan sederhana yang efisien dan profesional.

Semoga artikel cara membuat nota di Excel ini membantu Anda meningkatkan produktivitas dalam mengelola transaksi harian. Jangan lupa untuk menyimpan file Anda sebagai .xlsm dan mengaktifkan macro saat membuka workbook.

Jika kamu ingin menambahkan fitur lain seperti total otomatis, diskon, atau bahkan integrasi ke laporan bulanan, silakan tinggalkan komentar!

Download Template Gratis

Bagi Anda yang ingin mencoba teknik ini secara langsung, kami telah menyiapkan template gratis yang dirancang khusus untuk membantu Anda mempraktikkan Cara Membuat Nota di Excel Otomatis dengan VBA ini. File Excel bisa didownload melalui tautan berikut:

download file Excel

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!

Baca Juga  Cara Membuat Deskripsi Nilai Siswa Otomatis Menggunakan UDF di Excel

0 Komentar

Kirim Komentar

Alamat email Anda tidak akan dipublikasikan. Ruas yang wajib ditandai *

Join Our Newsletter