Prosedur (Sub) dan Fungsi (Function) pada VBA Excel: Mengorganisasi Kode Agar Lebih Terstruktur

Mengapa Kode Perlu Dibagi Menjadi Beberapa Bagian?

Bayangkan Anda membuat program VBA untuk mengolah data penjualan. Program tersebut harus melakukan beberapa pekerjaan, seperti:

  • Memvalidasi data.

  • Menghitung total penjualan.

  • Memberikan diskon.

  • Membuat laporan.

  • Menampilkan pesan kepada pengguna.

Apabila semua kode ditulis dalam satu prosedur, program akan menjadi sangat panjang, sulit dipahami, dan menyulitkan ketika harus diperbaiki atau dikembangkan.

Solusinya adalah membagi program menjadi beberapa bagian yang memiliki tugas masing-masing. Dalam VBA, bagian-bagian tersebut dikenal sebagai Procedure (Prosedur) dan Function (Fungsi).


Apa Itu Procedure (Sub)?

Procedure atau Sub Procedure adalah sekumpulan perintah yang dikelompokkan untuk menjalankan suatu tugas tertentu.

Sebuah Sub dapat dijalankan secara langsung, baik melalui VBA Editor, tombol (Button), maupun dipanggil oleh prosedur lain.

Karakteristik Sub:

  • Digunakan untuk menjalankan suatu proses.

  • Tidak mengembalikan nilai.

  • Dapat menerima parameter.

  • Dapat dipanggil berkali-kali dari berbagai bagian program.


Apa Itu Function?

Function adalah prosedur khusus yang selain menjalankan proses juga mengembalikan sebuah nilai (return value).

Nilai yang dikembalikan dapat digunakan:

  • dalam kode VBA,

  • pada rumus worksheet Excel,

  • maupun oleh prosedur lainnya.

Karakteristik Function:

  • Mengembalikan nilai.

  • Dapat menerima parameter.

  • Dapat dipanggil dari Sub maupun dari lembar kerja Excel (Worksheet Function).


Perbedaan Sub dan Function

Sub ProcedureFunction
Menjalankan proses Menghasilkan nilai
Tidak mengembalikan nilai Mengembalikan nilai
Dapat dipanggil secara langsung Dipanggil untuk memperoleh hasil
Cocok untuk otomatisasi Cocok untuk perhitungan

Kapan Menggunakan Sub dan Function?

Gunakan Sub jika:

  • Mengubah isi worksheet.

  • Menghapus data.

  • Membuat laporan.

  • Menampilkan pesan.

  • Menjalankan proses otomatis.

Gunakan Function jika:

  • Menghitung diskon.

  • Menghitung pajak.

  • Menghitung total.

  • Menghasilkan nilai tertentu.

  • Membuat rumus sendiri di Excel.


Struktur Dasar Sub

Sintaks dasar:

Sub NamaProsedur()

    'Kode Program

End Sub

Contoh:

Sub Salam()

    MsgBox "Selamat Belajar VBA Excel"

End Sub

Ketika dijalankan, prosedur tersebut akan menampilkan sebuah kotak pesan.


Struktur Dasar Function

Sintaks dasar:

Function NamaFungsi() As TipeData

    NamaFungsi = Nilai

End Function

Contoh:

Function Salam() As String

    Salam = "Selamat Belajar VBA"

End Function

Nilai "Selamat Belajar VBA" akan dikembalikan oleh fungsi.


Memanggil Sebuah Sub

Sebuah Sub dapat memanggil Sub lainnya.

Sub Salam()

    MsgBox "Halo"

End Sub

Sub Utama()

    Call Salam

End Sub

Penulisan berikut juga diperbolehkan.

Sub Utama()

    Salam

End Sub

Kedua cara tersebut menghasilkan proses yang sama.


Memanggil Sebuah Function

Misalnya terdapat fungsi berikut.

Function LuasPersegi(Sisi As Double) As Double

    LuasPersegi = Sisi * Sisi

End Function

Pemanggilannya:

Sub Hitung()

    Dim Hasil As Double

    Hasil = LuasPersegi(10)

    MsgBox Hasil

End Sub

Output:

100

Menggunakan Parameter

Parameter memungkinkan prosedur atau fungsi menerima nilai dari luar.

Contoh Sub.

Sub Sapa(Nama As String)

    MsgBox "Halo, " & Nama

End Sub

Pemanggilan:

Sub Utama()

    Sapa "Andi"

End Sub

Output:

Halo, Andi

Contoh Function.

Function Kali(A As Double, B As Double) As Double

    Kali = A * B

End Function

Pemanggilan:

Sub Tes()

    MsgBox Kali(5, 8)

End Sub

Output:

40

Studi Kasus 1

Membuat Prosedur untuk Membersihkan Data

Sub BersihkanData()

    Range("A2:D100").ClearContents

End Sub

Dengan membuat prosedur khusus, Anda cukup memanggil BersihkanData setiap kali ingin menghapus isi data.


Studi Kasus 2

Membuat Function Menghitung Diskon

Function HitungDiskon(Harga As Double) As Double

    HitungDiskon = Harga * 0.1

End Function

Pemanggilan:

Sub Contoh()

    MsgBox HitungDiskon(250000)

End Sub

Output:

25000

Menggunakan Function di Worksheet

Salah satu kelebihan Function adalah dapat digunakan seperti rumus Excel.

Misalnya terdapat fungsi berikut.

Function LuasPersegi(Panjang As Double, Lebar As Double) As Double

    LuasPersegi = Panjang * Lebar

End Function

Setelah disimpan, fungsi tersebut dapat digunakan langsung pada worksheet.

=LuasPersegi(10,5)

Hasilnya:

50

Best Practice

Gunakan Sub untuk proses.

Contohnya:

  • Menghapus data.

  • Menyalin data.

  • Membuat laporan.

  • Memformat worksheet.


Gunakan Function untuk perhitungan.

Contohnya:

  • Menghitung pajak.

  • Menghitung diskon.

  • Menghitung luas.

  • Menghitung komisi.


Berikan Nama yang Jelas

Kurang baik:

Sub A()

Lebih baik:

Sub CetakLaporan()

Pecah Program Menjadi Bagian Kecil

Daripada membuat satu prosedur berisi ratusan baris kode, lebih baik membaginya menjadi beberapa prosedur yang memiliki tugas spesifik.


Kesalahan yang Sering Terjadi

1. Menggunakan Function Padahal Tidak Mengembalikan Nilai

Kurang tepat:

Function Tes()

    MsgBox "Halo"

End Function

Lebih tepat menggunakan:

Sub Tes()

    MsgBox "Halo"

End Sub

2. Lupa Mengembalikan Nilai

Function Luas() As Double

End Function

Fungsi di atas akan mengembalikan nilai default karena tidak pernah memberikan nilai pada nama fungsi.

Perbaikan:

Function Luas() As Double

    Luas = 100

End Function

3. Nama Procedure Tidak Deskriptif

Kurang baik:

Sub Test1()

Lebih baik:

Sub HitungTotalPenjualan()

Nama yang jelas akan memudahkan pemeliharaan program.


Ringkasan

Hal-hal penting yang perlu diingat:

  • Sub digunakan untuk menjalankan suatu proses.

  • Function digunakan untuk menghasilkan suatu nilai.

  • Keduanya dapat menerima parameter.

  • Function dapat dipanggil dari worksheet Excel.

  • Membagi program menjadi beberapa prosedur membuat kode lebih rapi dan mudah dipelihara.


Latihan Mandiri

Latihan 1

Buat sebuah Sub bernama TampilkanTanggal yang menampilkan tanggal hari ini menggunakan MsgBox.


Latihan 2

Buat sebuah Function bernama KelilingPersegiPanjang yang menerima parameter panjang dan lebar, kemudian mengembalikan hasil perhitungan keliling.


Latihan 3

Buat sebuah Sub yang memanggil Function untuk menghitung luas lingkaran, kemudian menampilkan hasilnya menggunakan MsgBox.


Latihan 4

Buat sebuah Function bernama GradeNilai yang menerima nilai angka dan mengembalikan grade:

  • A (90–100)

  • B (80–89)

  • C (70–79)

  • D (di bawah 70)

Kemudian gunakan fungsi tersebut pada worksheet Excel.

Kesimpulan

Sub Procedure dan Function merupakan fondasi penting dalam membangun aplikasi VBA yang terstruktur. Dengan memisahkan setiap tugas ke dalam prosedur atau fungsi yang sesuai, kode menjadi lebih mudah dibaca, digunakan kembali (reusable), dan dikembangkan di masa mendatang.

Memahami kapan harus menggunakan Sub dan kapan menggunakan Function akan membantu Anda menulis program VBA yang lebih efisien, modular, dan profesional.


Hubungi Kami

Kantor Berkreasi
Alamat :
Pens Sky Venture - Sukolilo Surabaya
Karangrejo Tmur 17 Surabaya

Email : kantor.berkreasi@gmail.com
WA : wa.me/6287761589881  
(Support  Mbak Ana)

Tim Pengembang

Dr. Rojabi Azharghany, M.Si, S.Sos
Dr. H. Agus Sulthoni Imami, S.Psi. M.Pd.I.
Ali Ishaq, M.Pd.
Didik Rahwiniyanto, S.Si., M.Pd.
Mujiburrohman, M.Pd.
Mohammad Zikky, S.ST, M.T
Amien sawedi, S.Pd.
Didik P Wicaksono, M.Pd.