Excel telah menyediakan ratusan fungsi bawaan, seperti
SUM,AVERAGE,IF,VLOOKUP, dan masih banyak lagi. Meskipun begitu, tidak semua kebutuhan dapat diselesaikan menggunakan fungsi-fungsi tersebut.
Sebagai contoh, Anda mungkin ingin:
-
menghitung komisi dengan aturan perusahaan;
-
mengubah angka menjadi teks sesuai format tertentu;
-
menghitung bonus berdasarkan kriteria khusus;
-
membuat rumus yang tidak tersedia di Excel.
Daripada menulis rumus yang panjang dan berulang, Anda dapat membuat fungsi sendiri menggunakan VBA. Fungsi ini dikenal sebagai User Defined Function (UDF).
Apa Itu User Defined Function (UDF)?
User Defined Function (UDF) adalah fungsi yang dibuat sendiri menggunakan VBA dan dapat digunakan langsung pada worksheet layaknya fungsi bawaan Excel.
Misalnya, setelah membuat sebuah UDF bernama LuasPersegi, Anda dapat menggunakannya seperti berikut.
=LuasPersegi(A1)
Bagi Excel, fungsi tersebut akan bekerja seperti SUM() atau AVERAGE().
Function vs Sub
Sebelum membuat UDF, pahami perbedaan antara Sub dan Function.
Sub | Function |
|---|---|
| Menjalankan serangkaian perintah | Mengembalikan sebuah nilai |
| Dijalankan melalui makro | Dapat digunakan sebagai rumus di worksheet |
| Tidak menghasilkan nilai balik | Menghasilkan nilai balik (return value) |
Jika tujuan Anda adalah membuat rumus yang bisa digunakan di sel Excel, gunakan Function.
Sintaks Dasar Function
Sintaks umum sebuah fungsi adalah:
Function NamaFunction(Parameter)
'Kode
NamaFunction = Nilai
End Function
Nilai yang diberikan kepada nama fungsi akan menjadi hasil yang dikembalikan.
Contoh 1 — Menghitung Luas Persegi
Function LuasPersegi(Sisi As Double) As Double
LuasPersegi = Sisi * Sisi
End Function
Setelah disimpan, fungsi dapat digunakan di worksheet.
=LuasPersegi(10)
Hasil:
100
Contoh 2 — Menghitung Diskon
Function HitungDiskon(Harga As Double, Persen As Double) As Double
HitungDiskon = Harga - (Harga * Persen / 100)
End Function
Di worksheet:
=HitungDiskon(250000,10)
Menggunakan If di Dalam Function
Sebuah UDF dapat berisi logika yang lebih kompleks.
Function StatusNilai(Nilai As Integer) As String
If Nilai >= 75 Then
StatusNilai = "Lulus"
Else
StatusNilai = "Tidak Lulus"
End If
End Function
Di worksheet:
=StatusNilai(A2)
Menggunakan Lebih dari Satu Parameter
Sebuah fungsi dapat menerima beberapa parameter sekaligus.
Function VolumeBalok(Panjang As Double, Lebar As Double, Tinggi As Double) As Double
VolumeBalok = Panjang * Lebar * Tinggi
End Function
Penggunaan:
=VolumeBalok(10,5,8)
Menggunakan Parameter Opsional
VBA mendukung parameter opsional melalui kata kunci Optional.
Function Salam(Nama As String, Optional Sapaan As String = "Halo") As String
Salam = Sapaan & " " & Nama
End Function
Contoh:
=Salam("Andi")
Hasil:
Halo Andi
Studi Kasus
Misalkan perusahaan memberikan bonus berdasarkan total penjualan.
-
Penjualan ≥ 10.000.000 → Bonus 15%
-
Penjualan ≥ 5.000.000 → Bonus 10%
-
Selain itu → Bonus 5%
Anda dapat membuat UDF berikut.
Function Bonus(Penjualan As Double) As Double
Select Case Penjualan
Case Is >= 10000000
Bonus = Penjualan * 0.15
Case Is >= 5000000
Bonus = Penjualan * 0.1
Case Else
Bonus = Penjualan * 0.05
End Select
End Function
Di worksheet cukup gunakan:
=Bonus(A2)
Di Mana UDF Harus Disimpan?
Sebaiknya UDF dibuat di Module standar.
Langkah-langkahnya:
-
Tekan Alt + F11 untuk membuka Visual Basic Editor.
-
Pilih workbook yang akan digunakan.
-
Klik Insert → Module.
-
Tulis kode
Functionpada modul tersebut. -
Simpan workbook dalam format .xlsm atau .xlsb agar kode VBA tetap tersimpan.
Keterbatasan UDF
Walaupun sangat berguna, UDF memiliki beberapa batasan.
-
Tidak dapat mengubah isi worksheet ketika dipanggil dari sel.
-
Tidak dapat menghapus atau menambahkan worksheet.
-
Tidak dapat menampilkan
MsgBoxsebagai bagian dari perhitungan di worksheet. -
Sebaiknya hanya digunakan untuk menghitung dan mengembalikan nilai.
Jika fungsi perlu mengubah workbook, gunakan prosedur Sub, bukan Function.
Kesalahan yang Sering Terjadi
Lupa Mengembalikan Nilai
Salah:
Function Luas(Sisi As Double)
Sisi * Sisi
End Function
Benar:
Function Luas(Sisi As Double) As Double
Luas = Sisi * Sisi
End Function
Menyimpan Function di Worksheet Module
UDF sebaiknya dibuat pada Module standar agar dapat digunakan sebagai rumus pada worksheet.
Menggunakan MsgBox di Dalam UDF
Banyak pemula mencoba menampilkan pesan seperti berikut.
MsgBox "Berhasil"
Ketika fungsi dipanggil dari worksheet, pendekatan ini tidak disarankan karena dapat mengganggu proses perhitungan.
Tips Praktis
💡 Gunakan nama fungsi yang jelas dan mudah dipahami.
💡 Tentukan tipe data pada parameter dan nilai balik (As Double, As String, dan sebagainya).
💡 Gunakan Function hanya untuk menghasilkan nilai, bukan untuk mengubah workbook.
💡 Simpan seluruh UDF dalam satu atau beberapa module khusus agar lebih mudah dikelola.
💡 Berikan komentar pada fungsi yang cukup panjang agar lebih mudah dipelihara.
Ringkasan
| Konsep | Fungsi |
|---|---|
Function |
Membuat fungsi sendiri |
| Parameter | Data yang diterima fungsi |
| Return Value | Nilai yang dikembalikan fungsi |
Optional |
Parameter yang tidak wajib diisi |
| Module | Tempat menyimpan UDF |
Kesimpulan
User Defined Function (UDF) memungkinkan Anda membuat fungsi sendiri sesuai kebutuhan yang tidak dapat dipenuhi oleh fungsi bawaan Excel. Dengan UDF, rumus pada worksheet menjadi lebih ringkas, mudah dibaca, dan dapat digunakan berulang kali tanpa menyalin logika yang sama. Memahami cara membuat UDF merupakan langkah penting untuk mengembangkan aplikasi VBA Excel yang lebih fleksibel, profesional, dan mudah dipelihara.
