Function Procedure Pada VBA Excel #08
Salah satu halaman yang paling banyak dikunjungi di web tutorial excel ini adalah halaman tentang addin terbilang excel. Sebuah addin yang menyediakan fungsi aksesori untuk merubah angka menjadi teks terbilang. Namun, tahukah anda bahwa addin tersebut sebetulnya di buat dengan function procedure?
Apa itu function procedure?
Setelah membahas tentang Sub Procedure dan bagaimana Tutorial memanggilnya, seri tutorial VBA Excel kali ini akan mengajak anda untuk mempelajari dan memahami bagaimana menciptakan sebuah function procedure atau mekanisme fungsi pada VBA Excel.
Pengertian Funcitin Procedure
Dalam pembahasan Macro VBA Excel, Procedure ialah sebuah blok kode program yang berisi baris-baris perintah tertentu di antara baris statement pembuka dan statement epilog mekanismee. Lebih jelasnya mampu anda baca pada seri berikut: Module dan Procedure VBA Excel.
Function procedure pada VBA Excel ialah salah satu jenis procedure yang ditandai dengan statement pembuka "Function" dan diakhiri dengan Statement "End Function".
Dalam proses kerjanya function procedure bantu-membantu sama dengan Sub Procedure yang sudah kita bahas sebelumnya. Perbedaan utama dari kedua jenis procedure ini ialah bahwa Function prosedur dapat menghasilkan suatu nilai balik (return value) dari proses kerjanya yang tersimpan didalam nama mekanismenya.
Cara kerja sebuah function procedure memang sangat menyerupai dengan fungsi-fungsi bawaan excel seperti fungsi SUM, fungsi AVERAGE, fungsi MIN-MAX dan lain sebagainya, dimana kita bisa memasukkan argumen-argumen tertentu ke dalam sebuah procedur function, kemudian fungsi tersebut melaksanakan kalkulasi kemudian mengembalikan sebuah hasil dari kalkulasi tersebut.
Prosedur fungsi yang dideklarasikan dengan keyword Public dapat digunakan sebagai rumus excel pada sebuah cell excel seakan-akan fungsi bawaan Excel. karena itu mekanisme function juga disebut sebagai Custom Function serta User Defined Funtion (UDF).
Dan untuk alasan yang sama, di blog ini kami lebih cenderung menyebut default worksheet function sebagai sebuah fungsi dan bukan rumus excel. Hal ini pernah aku singung pada pembahasan perihal Pengenalan rumus dan fungsi pada Microsoft Excel.
Cara membuat Function Procedure
Barangkali anda bertanya bagaimana menciptakan fungsi atau rumus sendiri di excel?
Jika fungsi-fungsi default atau fungsi bawaan yang excel sediakan belum mencukupi, anda mampu membuat sebuah fungsi excel sendiri. Caranya ialah menciptakan sebuah custom function atau user defined function (UDF) dengan menciptakan sebuah public function melalui VBA Excel.
Sintax atau Tutorial menciptakan function procedure pada sebuah modul VBA ialah sebagi berikut:
[Private|Public|Friend][Static] Function Nama_Fungsi ([List_Argumen]) As [Return_Data_Type]
[Instruksi/Kode program]
[Exit Function]
[Instruksi/Kode acara]
[Nama_Fungsi = Return_Value]
End Function
Setiap elemen yang ada di dalam kurung siku "[...]" pada sintax mekanisme function di atas bersifat opsional, artinya boleh digunakan dan boleh diabaikan atau tidak digunakan.
Contoh sederhana sebuah function procedure adalah sebagai berikut:
Function luasPersegi(panjang As Integer) As Long
Dim luas As Long
luas = panjang * panjang
luasPersegi = luas
End Function
Elemen [Private|Public|Friend][Static]
Karena sudah beberapa dijelaskan pada beberapa seri sebelumnya element ini tidak akan saya bahas lagi. Untuk mempelajari maksudnya silahkan baca bahan-materi seri macro VBA Excel sebelumnya.
Elemen "Function"
Teks atau element "Function" ini wajib anda gunakan bila anda bermaksud menciptakan sebuah Function procedure.
Elemen inilah membedakan penyusunan mekanisme function dengan jenis procedure lainnya.
Elemen "Nama_Prosedur"
Bagian ini memperlihatkan nama prosedur function yang anda buat dan harus anda gunakan. Nama Fungsi inilah yang akan digunakan untuk memanggil atau digunakan pada worksheet. Kaprikornus namailah function procedure yang anda buat sebijak mungkin. Idealnya silahkan mencontoh bagiamana office excel menamai fungsi-fungsi default yang sudah tersedia.
Seperti yang sudah dijelaskan pada pembahasan perihal procedure VBA, nama fungsi ini juga mengikuti beberapa hukum berikut:
- Karakter pertama harus berupa Letter karakter (A-Z,a-z).
- Karakter berikutnya mampu berupa huruf, angka atau karakter tanda baca tertentu (tidak semua tanda baca bisa digunakan).
- Tidak boleh menggunakan titik (.) Dan spasi ( ) juga tidak mampu memakai karakter berikut: #, $,%, &, @, ^, * dan !.
- Tidak ada perbedaan antara huruf besar dan huruf kecil.
- Jumlah maksimum karakter yang bisa digunakan adalah 255.
Elemen [List_Argumen]
Bagian ini memperlihatkan list atau daftar variabel yang mewakili argumen yang digunakan pada mekanisme function dikala dipanggil atau digunakan.
Tentang List Argument Fungsi ini akan dibahas tersendiri di serpihan bawah nanti.
Wah, kenapa tidak sekarang saja bang? Suka-suka aku donk ekekekeke....
Elemen "As [Return_Data_Type]"
Element ini di isi dengan tipe data VBA di awali dengan keyword "As" seperti saat mendeklarasikan sebuah variabel.
Bagian ini menunjukkan tipe data yang akan dihasilkan oleh fungsi yang kita buat. Penulisannya contohnya: As Integer, As Long, As String, dan lain sebagainya.
Jenis atau tipe data apa saja yang mampu digunakan? Silahkan baca pada seri berikut: Tipe Data Pada VBA Excel
Elemen [Instruksi/Kode acara]
Instruksi/Kode program merupakan baris-baris kode perintah yang akan dilakukan oleh Function procedure dikala dijalankan atau dipanggil.
Isinya tentunya menyesuaikan kebutuhan atau harapan anda yang pada pada dasarnya adalah proses kalkulasi tertentu oleh prosedure terkait saat dipanggil.
Elemen [Exit Function]
Idealnya sebuah baris kode akan berakhir ketika mencapai "End Function". Namun, dalam kondisi tertentu anda dapat keluar dari function procedure dengan menggunakan perintah "Exit Function".
Baris kode "Exit Function" merupakan perintah untuk keluar dari Function Procedure terkait. "Exit Function" menandakan bahwa mekanisme function harus di akibati dan tidak dilanjutkan ke baris-baris acara selanjutnya.
Elemen "Nama_Fungsi = Return_Value"
Di atas sudah dijelaskan bahwa sebuah mekanisme function mampu menghasilkan sebuah nilai balik (Return Value) dari proses kerjanya.
Lalu bagaimana kita memberi tahu return value ini kepada sebuah function procedure?
Untuk memberi tahu sebuah function procedure nilai apa yang harus di kembalikan atau dihasilkan, Caranya yakni dengan tetapkan nilai tersebut kepada nama fungsinya.
Penulisan baris kodenya ialah dengan menuliskan nama fungsi diikuti dengan sama dengan (=) dan nilai yang ingin dihasilkan atau dikembalikan.
Perhatikan lagi teladan function procedure berikut:
Function luasPersegi(panjang As Integer) As Long
'Deklarasi variabel luas
Dim luas As Long
'Menghitung luas persegi sesuai argumen panjang yang diberikan
luas = panjang * panjang
'Assign return value kepada fungsi luasPersegi
luasPersegi = luas
End Function
Pada contoh di atas baris kode "luasPersegi = luas" memberitahukan kepada fungsi luasPersegi bahwa nilai yang harus dihasilkan olehnya ialah nilai dari variabel luas yang didapatkan dari hasil perkalian argumen panjang * panjang.
Jadi pada perkara ini nama fungsi juga bekerja sebagai sebuah variabel.
Biasanya baris kode yang memberitahukan nilai yang harus dikembalikan oleh fungsi semacam ini dituliskan pada serpihan balasan fungsi sebelum "End Function" atau "Exit Function".
Sebagai catatan aksesori bahwa fungsi luasPersegi di atas mampu juga anda ringkas menjadi berikut:
Function luasPersegi(panjang As Integer) As Long
'Menghitung luas sekaligus Assign return value kepada fungsi luasPersegi
luasPersegi = panjang * panjang
End Function
Elemen "End Function"
Bagian ini menandai balasan sebuah Function Procedure.
Saat anda menekan Enter untuk menyelesaikan penulisan deklarasi pembuka dikala menciptakan sebuah procedure gres biasanya Statement penutup mekanisme function ini akan otomatis dibuat pada VBE (Visual Basic Editor).
Argument Pada Function Procedure
Saya yakin anda sudah 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) yang sudah kita bahas pada seri sebelumnya.
Penulisan daftar argument berada diantara tanda kurung (...) sehabis nama prosedur. Tutorial 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 dan bisa juga disertai keyword lain seakan-akan ByVal atau ByRef serta statement Optional, sedangkan pada deklarasi variabel tidak ada.
Jika terdapat lebih dari satu argument maka penulisannya dipisahkan dengan tanda koma(,).
Perhatikan contoh mekanisme fungsi dengan nama DISKON berikut 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 yang masing-masing adalah: jumlah, harga dan persen.
Argument Procedure
Saat sebuah procedure disertai argument, maka untuk memanggil prosedur tersebut juga harus memberikan nilai input terhadap argument-argumentnya. Misal untuk menggunakan fungsi DISKON di atas pada sebuah sel sebagai sebuah rumus excel anda dapat menuliskan rumus berikut untuk menggunakannya:
=DISKON(5;10000;0,1)
Nilai angka 5 adalah jumlah, 10000 ialah harga dan 0,1 yang senilai dengan 10% adalah untuk argumen persen.
Rumus ini berlaku jika anda menggunakan setting regional Indonesia yang menggunakan titik koma(;) sebagai pemisah argument dan koma(,) sebagai pemisah desimal.
Apabila anda menggunakan setting region default yang biasanya masih Engish maka rumus pada sel excel yang anda gunakan adalah sebagai berikut:
=DISKON(5,10000,0.1)
Keyword Optional
Seperti pada fungsi-fungsi bawaan excel, anda bisa juga membuat argumen sebagai argumen opsional yang ketika dipanggil tidak harus diisi nilainya. Untuk mengatur argument opsional tambahkan keyword "Optional" sebelum nama argument.
Argument opsional ini mampu juga anda tetapkan nilai defaultnya ketika prosedur pemanggil tidak menyertakannya. Pada teladan fungsi DISKON diatas, argument opsional yaitu persen dengan nilai default 0.01 (1%).
Optional persen As Double = 0.01
Nilai default 0.01 ini akan diabaikan bila ketika memanggil fungsi DISKON anda menyertakan nilai persennya seolah-olah acuan sebelumnya. jikalau tidak diisi maka nilai default inilah yang akan digunakan.
Pada sel excel anda mampu memanggil fungsi DISKON dengan Cara seolah-olah ini:
=DISKON(5;10000)
Rumus excel diatas akan menghasilkan angka 500 yang didapatkan dari perhitungan 5*10000 dan dikalikan 0,01 atau 1% sebagai nilai default persen sebab anda tidak menyertakan nilai persen saat pemanggilan fungsi DISKON.
Keyword ByVal dan ByRef
Pada penyusunan argument mekanisme baik jenis function atau Sub anda mampu juga menyertakan keyword ByVal atau ByRef.
Keyword ByRef merupakan keyword default, sehingga pada penyusunan argument fungsi DISKON diatas anda dapat juga menuliskannya dengan Cara seakan-akan 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 dan ByVal ?
Keyword ByVal dan ByRef pada dasarnya memperlihatkan bagaimana sebuah nilai argument yang diberikan oleh pemanggil akan digunakan oleh prosedur yang dipanggil. Apakah nilai argument yang dilewatkan diambil nilainya (Value) saja atau diperlakukan sebagai sebuah rujukan (Reference).
- Keyword ByRef: Mengirimkan lokasi memori suatu nilai yang diberikan kedalam sebuah argumen. Argumen akan diisi dengan wujud data tersebut secara pribadi, oleh karena itu nilai variabel mampu diubah di dalam mekanisme sub atau fungsi.
- Keyword ByVal: Argumen akan diisi dengan salinan nilai data saja, dengan kata lain ByVal mengirimkan suatu nilai yang diberikan kedalam sebuah argumen dan kemudian argumen menyalin nilai tersebut untuk dimanfaatkan. prosedur berargumen hanya akan mengubah salinan nilai dan nilai asli tidak akan berubah sama sekali
Saya kehabisan kata-kata untuk menjelaskan tentang ByRef dan ByVal ini. Untuk lebih jelasnya kita praktekkan saja.
Silahkan buat prosedur sub dan fungsi berikut 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 dan 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 sudah coba jalankan mekanisme tesVolume. Hasilnya adalah 2 message box berikut:
Perhatikan nilai angka yang dimunculkan pada 2 message box tersebut. Message box pertama merupakan hasil dari fungsi VOLUMEKUBUS, sedangkan yang kedua ialah nilai dari variabel panjang.
Selanjutnya ubah keyword ByRef dengan ByVal pada argument panjang, kemudian jalankan lagi prosedur tesVolume. Hasilnya ialah 2 message box berikut:
Perhatikan perbedaan pada message box ke-2 pada dua latihan di atas.
Ketika melewatkan argumen dengan acuan (ByRef), kita mengacu pada nilai orisinil. Nilai panjang diubah dalam 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. karenanya, MsgBox kedua menampilkan nilai 10 (nilai asli).
Anda tambah galau? kalau anda menemukan halaman ini secara tidak sengaja kami sarankan membaca beberapa seri panduan macro VBA Excel sebelumnya sehingga anda akan menerima konteks pemahaman yang lebih lengkap.
Berikut file latihan yang admin gunakan pada tutorial kita kali ini.
LINK DOWNLOAD TERKUNCI.
Silahkan SHARE untuk membuka kunci!
Pada seri berikutnya kita akan belajar ihwal bagaimana Cara menggunakan atau memanggil function procedure, namun sebelum itu silahkan share Panduan ini sehingga lebih banyak lagi yang menerima keuntungannya.
Komentar
Posting Komentar