Function Procedure Pada VBA Excel #08
Salah satu halaman yg paling banyak dikunjungi di web tutorial excel ini adalah halaman tentang addin terbilang excel. Sebuah addin yg menyediakan fungsi tambahan untuk merubah angka menjadi teks terbilang. Namun, tahukah anda bahwa addin tersebut sebetulnya di buat dengan function procedure?
Apa itu function procedure?
Setlah membahas tentang Sub Procedure & bagaimana cara memanggilnya, seri tutorial VBA Excel kali ini akan mengajak anda untuk mempelajari & memahami bagaimana membuat sebuah function procedure atau prosedur fungsi pada VBA Excel.
Pengertian Funcitin Procedure
Dalam pembahasan Macro VBA Excel, Procedure adalah sebuah blok kode program yg berisi baris-baris perintah tertentu di antara baris statement pembuka & statement penutup prosedure. Lebih jelasnya bisa anda baca pada seri brkut: Module & Procedure VBA Excel.
Function procedure pada VBA Excel adalah salah satu jenis procedure yg ditandai dengan statement pembuka "Function" & diakhiri dengan Statement "End Function".
Dalam proses kerjanya function procedure sebenarnya sama dengan Sub Procedure yg sdh kita bahas sebelumnya. Perbedaan utama dari kedua jenis procedure ini adalah bahwa Function Prosedur dapat menghasilkan suatu nilai balik (return value) dari proses kerjanya yg tersimpan didlm nama prosedurnya.
Cara kerja sebuah function procedure memang sangat mirip dengan fungsi-fungsi bawaan excel sprti fungsi SUM, fungsi AVERAGE, fungsi MIN-MAX & lain sbgainya, dimana kita bisa memasukkan argumen-argumen tertentu ke dlm sebuah procedur function, kemudian fungsi tersebut melakukan kalkulasi kemudian mengembalikan sebuah hasil dari kalkulasi tersebut.
Prosedur fungsi yg dideklarasikan dengan keyword Public dapat digunakan sbgai rumus excel pada sebuah cell excel sprti fungsi bawaan Excel. Sebab itu prosedur function juga disebut sbgai Custom Function dan User Defined Funtion (UDF).
Dan untuk alasan yg sama, di blog ini saya lebih cenderung menyebut default worksheet function sbgai sebuah fungsi & bukan rumus excel. Hal ini pernah saya singung pada pembahasan tentang Pengenalan rumus & fungsi pada Microsoft Excel.
Cara Membuat Function Procedure
Barangkali anda bertanya bagaimana membuat fungsi atau rumus sendiri di excel?
Jika fungsi-fungsi default atau fungsi bawaan yg excel sediakan belum mencukupi, anda bisa membuat sebuah fungsi excel sendiri. Caranya yakni membuat sebuah custom function atau user defined function (UDF) dengan membuat sebuah public function melalui VBA Excel.
Sintax atau cara membuat function procedure pada sebuah modul VBA adalah sebagi brkut:
[Private|Public|Friend][Static] Function Nama_Fungsi ([List_Argumen]) As [Return_Data_Type] [Instruksi/Kode Program] [Exit Function] [Instruksi/Kode Program] [Nama_Fungsi = Return_Value] End Function
Setiap elemen yg ada di dlm kurung siku "[...]" pada sintax prosedur function di atas bersifat opsional, artinya boleh digunakan & boleh diabaikan atau tidak digunakan.
Contoh sederhana sebuah function procedure adalah sbgai brkut:
Function luasPersegi(panjang As Integer) As Long Dim luas As Long luas = panjang * panjang luasPersegi = luas End Function
Elemen [Private|Public|Friend][Static]
Karena sdh beberapa dijelaskan pada beberapa seri sebelumnya element ini tidak akan saya bahas lagi. Untuk mempelajari maksudnya slahkan baca materi-materi seri macro VBA Excel sebelumnya.
Elemen "Function"
Teks atau element "Function" ini wajib anda gunakan jika anda bermaksud membuat sebuah Function procedure.
Elemen inilah membedakan penyusunan prosedur function dengan jenis procedure lainnya.
Elemen "Nama_Prosedur"
Bagian ini menunjukkan nama prosedur function yg anda buat & harus anda gunakan. Nama Fungsi inilah yg akan digunakan untuk memanggil atau digunakan pada worksheet. Jadi namailah function procedure yg anda buat sebijak mungkin. Idealnya slahkan mencontoh bagiamana office excel menamai fungsi-fungsi default yg sdh tersedia.
Seperti yg sdh dijelaskan pada pembahasan tentang procedure VBA, nama fungsi ini juga mengikuti beberapa aturan brkut:
- Karakter pertama harus berupa Letter Abjad (A-Z,a-z).
- Karakter brkutnya dapat berupa huruf, angka atau karakter tanda baca tertentu (tidak semua tanda baca bisa digunakan).
- Tidak boleh memakai titik (.) Dan spasi ( ) juga tidak bisa memakai karakter brkut: #, $,%, &, @, ^, * & !.
- Tidak ada perbedaan antara huruf besar & huruf kecil.
- Jumlah maksimum karakter yg bisa digunakan adalah 255.
Elemen [List_Argumen]
Bagian ini menunjukkan list atau daftar variabel yg mewakili argumen yg digunakan pada prosedur function saat dipanggil atau digunakan.
Tentang List Argument Fungsi ini akan dibahas tersendiri di bagian bawah nanti.
Wah, kenapa tidak sekarang saja bang? Suka-suka saya donk ekekekeke....
Elemen "As [Return_Data_Type]"
Element ini di isi dengan tipe data VBA di awali dengan keyword "As" sprti saat mendeklarasikan sebuah variabel.
Bagian ini menunjukkan tipe data yg akan dihasilkan oleh fungsi yg kita buat. Penulisannya misalnya: As Integer, As Long, As String, & lain sbgainya.
Jenis atau tipe data apa saja yg bisa digunakan? Silahkan baca pada seri brkut: Tipe Data Pada VBA Excel
Elemen [Instruksi/Kode Program]
Instruksi/Kode Program adalah baris-baris kode perintah yg akan dilakukan oleh Function procedure saat dijalankan atau dipanggil.
Isinya tentunya menyesuaikan kebutuhan atau keinginan anda yg pada intinya adalah proses kalkulasi tertentu oleh prosedure terkait saat dipanggil.
Elemen [Exit Function]
Idealnya sebuah baris kode akan berakhir saat mencapai "End Function". Namun, dlm kondisi tertentu anda dapat keluar dari function procedure dengan menggunakan perintah "Exit Function".
Baris kode "Exit Function" adalah perintah untuk keluar dari Function Procedure terkait. "Exit Function" menandakan bahwa prosedur function harus di akhiri & tidak dilanjutkan ke baris-baris program selanjutnya.
Elemen "Nama_Fungsi = Return_Value"
Di atas sdh dijelaskan bahwa sebuah prosedur function dapat menghasilkan sebuah nilai balik (Return Value) dari proses kerjanya.
Lalu bagaimana kita memberi tahu return value ini kpda sebuah function procedure?
Untuk memberi tahu sebuah function procedure nilai apa yg harus di kembalikan atau dihasilkan, caranya yakni dengan menetapkan nilai tersebut kpda nama fungsinya.
Penulisan baris kodenya yakni dengan menuliskan nama fungsi diikuti dengan sama dengan (=) & nilai yg ingin dihasilkan atau dikembalikan.
Perhatikan lagi contoh function procedure brkut:
Function luasPersegi(panjang As Integer) As Long 'Deklarasi variabel luas Dim luas As Long 'Menghitung luas persegi sesuai argumen panjang yg diberikan luas = panjang * panjang 'Assign return value kpda fungsi luasPersegi luasPersegi = luas End Function
Pada contoh di atas baris kode "luasPersegi = luas" memberitahukan kpda fungsi luasPersegi bahwa nilai yg harus dihasilkan olehnya adalah nilai dari variabel luas yg didapatkan dari hasil perkalian argumen panjang * panjang.
Jadi pada kasus ini nama fungsi juga bekerja sbgai sebuah variabel.
Biasanya baris kode yg memberitahukan nilai yg harus dikembalikan oleh fungsi semacam ini dituliskan pada bagian akhir fungsi sebelum "End Function" atau "Exit Function".
Sebagai catatan tambahan bahwa fungsi luasPersegi di atas bisa juga anda ringkas menjadi brkut:
Function luasPersegi(panjang As Integer) As Long 'Menghitung luas sekaligus Assign return value kpda fungsi luasPersegi luasPersegi = panjang * panjang End Function
Elemen "End Function"
Bagian ini menandai akhir sebuah Function Procedure.
Saat anda menekan Enter untuk menyelesaikan penulisan deklarasi pembuka saat membuat sebuah procedure baru biasanya Statement penutup prosedur function ini akan otomatis dibuat pada VBE (Visual Basic Editor).
Argument Pada Function Procedure
Saya yakin anda sdh sangat familiar dengan istilah argument pada sebuah fungsi excel.
Secara umum argument ini memang lebih sering digunakan pada function procedure, meskipun demikian pada dasarnya list argument ini bisa juga anda gunakan pada prosedur jenis Sub (Subroutine) yg sdh kita bahas pada seri sebelumnya.
Penulisan daftar argument berada diantara tanda kurung (...) setlah nama prosedur. Cara penulisannya mirip dengan deklarasi variabel pada Macro VBA Excel, namun tanpa menyertakan scope.
Penulisan argument di awali dengan nama argument kemudian diikuti dengan tipe datanya & bisa juga didani keyword lain sprti ByVal atau ByRef dan statement Optional, se&gkan pada deklarasi variabel tidak ada.
Jika terdapat lebih dari satu argument maka penulisannya dipisahkan dengan tanda koma(,).
Perhatikan contoh prosedur fungsi dengan nama DISKON brkut ini:
Function DISKON(jumlah As Long, harga As Currency, Optional persen As Double = 0.01) DISKON = jumlah * harga * persen End Function
Function Procedure dengan nama DISKON diatas menggunakan 3 argumen yg masing-masing adalah: jumlah, harga & persen.
Argument Procedure
Saat sebuah procedure didani argument, maka untuk memanggil prosedur tersebut juga harus memberikan nilai input terhadap argument-argumentnya. Misal untuk menggunakan fungsi DISKON di atas pada sebuah sel sbgai sebuah rumus excel anda dapat menuliskan rumus brkut untuk menggunakannya:
=DISKON(5;10000;0,1)
Nilai angka 5 adalah jumlah, 10000 adalah harga & 0,1 yg senilai dengan 10% adalah untuk argumen persen.
Rumus ini berlaku jika anda menggunakan setting regional Indonesia yg menggunakan titik koma(;) sbgai pemisah argument & koma(,) sbgai pemisah desimal.
Apabila anda menggunakan setting region default yg biasanya masih Engish maka rumus pada sel excel yg anda gunakan adalah sbgai brkut:
=DISKON(5,10000,0.1)
Keyword Optional
Seperti pada fungsi-fungsi bawaan excel, anda bisa juga membuat argumen sbgai argumen opsional yg saat dipanggil tidak harus diisi nilainya. Untuk mengatur argument opsional tambahkan keyword "Optional" sebelum nama argument.
Argument opsional ini bisa juga anda tetapkan nilai defaultnya saat prosedur pemanggil tidak menyertakannya. Pada contoh fungsi DISKON diatas, argument opsional adalah persen dengan nilai default 0.01 (1%).
Optional persen As Double = 0.01
Nilai default 0.01 ini akan diabaikan jika saat memanggil fungsi DISKON anda menyertakan nilai persennya sprti contoh sebelumnya. Jika tidak diisi maka nilai default inilah yg akan dipakai.
Pada sel excel anda dapat memanggil fungsi DISKON dengan cara sprti ini:
=DISKON(5;10000)
Rumus excel diatas akan menghasilkan angka 500 yg didapatkan dari perhitungan 5*10000 & dikalikan 0,01 atau 1% sbgai nilai default persen sebab anda tidak menyertakan nilai persen saat pemanggilan fungsi DISKON.
Keyword ByVal & ByRef
Pada penyusunan argument prosedur baik jenis function atau Sub anda dapat juga menyertakan keyword ByVal atau ByRef.
Keyword ByRef adalah keyword default, sehingga pada penyusunan argument fungsi DISKON diatas anda dapat juga menuliskannya dengan cara sprti ini:
Function DISKON(ByRef jumlah As Long, ByRef harga As Currency, Optional ByRef persen As Double = 0.01) DISKON = jumlah * harga * persen End Function
Apa maksud dari penggunaan keyword ByRef & ByVal ?
Keyword ByVal & ByRef pada dasarnya menunjukkan bagaimana sebuah nilai argument yg diberikan oleh pemanggil akan digunakan oleh prosedur yg dipanggil. Apakah nilai argument yg dilewatkan diambil nilainya (Value) saja atau diperlakukan sbgai sebuah referensi (Reference).
- Keyword ByRef: Mengirimkan lokasi memori suatu nilai yg diberikan kedlm sebuah argumen. Argumen akan diisi dengan wujud data tersebut secara langsung, oleh karena itu nilai variabel dapat diubah di dlm prosedur sub atau fungsi.
- Keyword ByVal: Argumen akan diisi dengan salinan nilai data saja, dengan kata lain ByVal mengirimkan suatu nilai yg diberikan kedlm sebuah argumen & kemudian argumen menyalin nilai tersebut untuk dimanfaatkan. Prosedur berargumen hanya akan mengubah salinan nilai & nilai asli tidak akan berubah sama sekali
Saya kehabisan kata-kata untuk menjelaskan tentang ByRef & ByVal ini. Untuk lebih jelasnya kita praktekkan saja.
Silahkan buat prosedur sub & fungsi brkut pada sebuah Standart modul:
Option Explicit Function VOLUMEKUBUS(ByRef panjang As Long) As Long panjang = panjang ^ 3 VOLUMEKUBUS = panjang End Function Sub tesVolume() Dim panjang As Long panjang = 10 'Panggil fungsi VOLUMEKUBUS & munculkan nilai hasil pada sebuah Mesage Box MsgBox "Volume Kubus = " & VOLUMEKUBUS(panjang) 'Munculkan nilai variabel panjang pada sebuah Mesage Box MsgBox "Variabel Panjang = " & panjang End Sub
Jika sdh coba jalankan prosedur tesVolume. Hasilnya adalah 2 message box brkut:
Perhatikan nilai angka yg dimunculkan pada 2 message box tersebut. Message box pertama adalah hasil dari fungsi VOLUMEKUBUS, se&gkan yg kedua adalah nilai dari variabel panjang.
Selanjutnya ubah keyword ByRef dengan ByVal pada argument panjang, kemudian jalankan lagi prosedur tesVolume. Hasilnya adalah 2 message box brkut:
Perhatikan perbedaan pada message box ke-2 pada dua latihan di atas.
Ketika melewatkan argumen dengan referensi (ByRef), kita mengacu pada nilai asli. Nilai panjang diubah dlm fungsi (panjang = panjang ^ 3). Kemudian variabel panjang ini dipanggil lagi melalui message box ke-2(MsgBox panjang). Sebagai hasilnya, MsgBox kedua menampilkan nilai 1000.
Saat mengirimkan argumen berdasarkan nilai (ByVal), kita mengirimkan salinan nilai ke fungsi (VOLUMEKUBUS(10)). Nilai panjang asli tidak berubah. Akibatnya, MsgBox kedua menampilkan nilai 10 (nilai asli).
Anda tambah bingung? Jika anda menemukan halaman ini secara tidak sengaja saya sarankan membaca beberapa seri panduan macro VBA Excel sebelumnya sehingga anda akan mendapatkan konteks pemahaman yg lebih lengkap.
Berikut file latihan yg saya gunakan pada tutorial kita kali ini.
LINK DOWNLOAD TERKUNCI.
Silahkan SHARE untuk membuka kunci!
Pada seri brkutnya kita akan belajar tentang bagaimana cara menggunakan atau memanggil function procedure, namun sebelum itu slahkan share Panduan ini sehingga lebih banyak lagi yg mendapatkan manfaatnya. Sumber https://www.kelasexcel.id
Belum ada Komentar untuk "Function Procedure Pada VBA Excel #08"
Posting Komentar