Skip to content Skip to sidebar Skip to footer

Function Procedure Pada Vba Excel #08

 Salah satu halaman yang paling banyak dikunjungi di web tutorial excel ini yakni halaman Function Procedure Pada VBA Excel #08

Salah satu halaman yang paling banyak dikunjungi di web tutorial excel ini yakni halaman perihal addin terbilang excel. Sebuah addin yang menyediakan fungsi perhiasan untuk merubah angka menjadi teks terbilang. Namun, tahukah anda bahwa addin tersebut sebetulnya di buat dengan function procedure?

Apa itu function procedure?

Setelah membahas perihal Sub Procedure dan bagaimana cara 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 yakni sebuah blok instruksi aktivitas yang berisi baris-baris perintah tertentu di antara baris statement pembuka dan statement epilog prosedure. Lebih jelasnya sanggup anda baca pada seri berikut: Module dan Procedure VBA Excel.

Function procedure pada VBA Excel yakni salah satu jenis procedure yang ditandai dengan statement pembuka "Function" dan diakhiri dengan Statement "End Function".

Dalam proses kerjanya function procedure sebetulnya sama dengan Sub Procedure yang sudah kita bahas sebelumnya. Perbedaan utama dari kedua jenis procedure ini yakni bahwa Function Prosedur sanggup menghasilkan suatu nilai balik (return value) dari proses kerjanya yang tersimpan didalam nama prosedurnya.

Cara kerja sebuah function procedure memang sangat menyerupai dengan fungsi-fungsi bawaan excel menyerupai fungsi SUM, fungsi AVERAGE, fungsi MIN-MAX dan lain sebagainya, dimana kita sanggup 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 sanggup digunakan sebagai rumus excel pada sebuah cell excel menyerupai fungsi bawaan Excel. Sebab itu mekanisme function juga disebut sebagai Custom Function serta User Defined Funtion (UDF).

Dan untuk alasan yang sama, di blog ini saya lebih cenderung menyebut default worksheet function sebagai sebuah fungsi dan bukan rumus excel. Hal ini pernah saya 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 sanggup menciptakan sebuah fungsi excel sendiri. Caranya yakni menciptakan sebuah custom function atau user defined function (UDF) dengan menciptakan sebuah public function melalui VBA Excel.

Sintax atau cara menciptakan function procedure pada sebuah modul VBA yakni sebagi berikut:

[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 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 yakni 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 materi-materi seri macro VBA Excel sebelumnya.

Elemen "Function"


Teks atau element "Function" ini wajib anda gunakan jikalau anda bermaksud menciptakan sebuah Function procedure.

Elemen inilah membedakan penyusunan mekanisme function dengan jenis procedure lainnya.

Elemen "Nama_Prosedur"


Bagian ini memperlihatkan nama mekanisme function yang anda buat dan harus anda gunakan. Nama Fungsi inilah yang akan digunakan untuk memanggil atau digunakan pada worksheet. Makara 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:
  1. Karakter pertama harus berupa Letter Abjad (A-Z,a-z).
  2. Karakter berikutnya sanggup berupa huruf, angka atau karakter tanda baca tertentu (tidak semua tanda baca sanggup digunakan).
  3. Tidak boleh menggunakan titik (.) Dan spasi ( ) juga tidak sanggup menggunakan karakter berikut: #, $,%, &, @, ^, * dan !.
  4. Tidak ada perbedaan antara abjad besar dan abjad kecil.
  5. Jumlah maksimum karakter yang sanggup digunakan yakni 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 penggalan bawah nanti.

Wah, kenapa tidak kini 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" menyerupai dikala mendeklarasikan sebuah variabel.

Bagian ini memperlihatkan tipe data yang akan dihasilkan oleh fungsi yang kita buat. Penulisannya misalnya: As Integer, As Long, As String, dan lain sebagainya.

Jenis atau tipe data apa saja yang sanggup digunakan? Silahkan baca pada seri berikut:

Elemen [Instruksi/Kode Program]


Instruksi/Kode Program merupakan baris-baris instruksi perintah yang akan dilakukan oleh Function procedure dikala dijalankan atau dipanggil.

Isinya tentunya menyesuaikan kebutuhan atau impian anda yang pada pada dasarnya yakni proses kalkulasi tertentu oleh prosedure terkait dikala dipanggil.

Elemen [Exit Function]


Idealnya sebuah baris instruksi akan berakhir dikala mencapai "End Function". Namun, dalam kondisi tertentu anda sanggup keluar dari function procedure dengan menggunakan perintah "Exit Function".

Baris instruksi "Exit Function" merupakan perintah untuk keluar dari Function Procedure terkait. "Exit Function" pertanda bahwa mekanisme function harus di akhiri dan tidak dilanjutkan ke baris-baris aktivitas selanjutnya.

Elemen "Nama_Fungsi = Return_Value"


Di atas sudah dijelaskan bahwa sebuah mekanisme function sanggup 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 memutuskan nilai tersebut kepada nama fungsinya.

Penulisan baris kodenya yakni 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 teladan di atas baris instruksi "luasPersegi = luas" memberitahukan kepada fungsi luasPersegi bahwa nilai yang harus dihasilkan olehnya yakni nilai dari variabel luas yang didapatkan dari hasil perkalian argumen panjang * panjang.

Makara pada kasus ini nama fungsi juga bekerja sebagai sebuah variabel.

Biasanya baris instruksi yang memberitahukan nilai yang harus dikembalikan oleh fungsi semacam ini dituliskan pada penggalan simpulan fungsi sebelum "End Function" atau "Exit Function".

Sebagai catatan perhiasan bahwa fungsi luasPersegi di atas sanggup 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

Pastikan bahwa dikala memberi tahukan nilai balik ini kepada sebuah fungsi, nilai yang diberikan merupakan nilai simpulan dari sebuah proses kalkulasi yang mungkin cukup panjang.

Elemen "End Function"


Bagian ini menandai simpulan sebuah Function Procedure.

Saat anda menekan Enter untuk menuntaskan penulisan deklarasi pembuka dikala menciptakan sebuah procedure gres biasanya Statement epilog mekanisme function ini akan otomatis dibentuk 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 sanggup 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. Cara penulisannya menyerupai dengan deklarasi variabel pada Macro VBA Excel, namun tanpa menyertakan scope.

Penulisan argument di awali dengan nama argument kemudian diikuti dengan tipe datanya dan sanggup juga disertai keyword lain menyerupai 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 teladan 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 mekanisme tersebut juga harus memperlihatkan nilai input terhadap argument-argumentnya. Misal untuk menggunakan fungsi DISKON di atas pada sebuah sel sebagai sebuah rumus excel anda sanggup menuliskan rumus berikut untuk menggunakannya:

=DISKON(5;10000;0,1)

Nilai angka 5 yakni jumlah, 10000 yakni harga dan 0,1 yang senilai dengan 10% yakni untuk argumen persen.

Rumus ini berlaku jikalau 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 yakni sebagai berikut:

=DISKON(5,10000,0.1)

"Pada penulisan script VBA anda tetap harus menggunakan koma sebagai pemisah argument dan titik(.) sebagai pemisah desimal meskipun menggunakan regional setting Indonesia.

Keyword Optional


Seperti pada fungsi-fungsi bawaan excel, anda sanggup juga menciptakan argumen sebagai argumen opsional yang dikala dipanggil tidak harus diisi nilainya. Untuk mengatur argument opsional tambahkan keyword "Optional" sebelum nama argument.

Argument opsional ini sanggup juga anda memutuskan nilai defaultnya dikala mekanisme pemanggil tidak menyertakannya. Pada teladan fungsi DISKON diatas, argument opsional yakni persen dengan nilai default 0.01 (1%).

Optional persen As Double = 0.01

Nilai default 0.01 ini akan diabaikan jikalau dikala memanggil fungsi DISKON anda menyertakan nilai persennya menyerupai teladan sebelumnya. Jika tidak diisi maka nilai default inilah yang akan dipakai.

Pada sel excel anda sanggup memanggil fungsi DISKON dengan cara menyerupai 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 lantaran anda tidak menyertakan nilai persen dikala pemanggilan fungsi DISKON.

Untuk menciptakan argument yang bersifat opsional awali penulisan argument dengan keyword "Optional" yang diikuti dengan nama argument dan apabila diharapkan memutuskan nilai defaultnya dengan cara menuliskan sama dengan (=) kemudinan diikuti dengan nilai default yang ingin anda tetapkan.

Keyword ByVal dan ByRef


Pada penyusunan argument mekanisme baik jenis function atau Sub anda sanggup juga menyertakan keyword ByVal atau ByRef.

Keyword ByRef merupakan keyword default, sehingga pada penyusunan argument fungsi DISKON diatas anda sanggup juga menuliskannya dengan cara menyerupai 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 mekanisme yang dipanggil. Apakah nilai argument yang dilewatkan diambil nilainya (Value) saja atau diperlakukan sebagai sebuah tumpuan (Reference).
  • Keyword ByRef: Mengirimkan lokasi memori suatu nilai yang diberikan kedalam sebuah argumen. Argumen akan diisi dengan wujud data tersebut secara langsung, oleh lantaran itu nilai variabel sanggup 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 orisinil tidak akan berubah sama sekali

Saya kehabisan kata-kata untuk menjelaskan perihal ByRef dan ByVal ini. Untuk lebih jelasnya kita praktekkan saja.

Silahkan buat mekanisme 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 yakni 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 yakni nilai dari variabel panjang.

 Salah satu halaman yang paling banyak dikunjungi di web tutorial excel ini yakni halaman Function Procedure Pada VBA Excel #08



Selanjutnya ubah keyword ByRef dengan ByVal pada argument panjang, kemudian jalankan lagi mekanisme tesVolume. Hasilnya yakni 2 message box berikut:

 Salah satu halaman yang paling banyak dikunjungi di web tutorial excel ini yakni halaman Function Procedure Pada VBA Excel #08



Perhatikan perbedaan pada message box ke-2 pada dua latihan di atas.

Ketika melewatkan argumen dengan tumpuan (ByRef), kita mengacu pada nilai asli. 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 menurut nilai (ByVal), kita mengirimkan salinan nilai ke fungsi (VOLUMEKUBUS(10)). Nilai panjang orisinil 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 mendapat konteks pemahaman yang lebih lengkap.


Berikut file latihan yang saya gunakan pada tutorial kita kali ini.

Dropbox
GDrive

*Jika link mati / tidak sanggup diakses silahkan lapor via kontak yang tersedia

LINK DOWNLOAD TERKUNCI.
Silahkan SHARE untuk membuka kunci!


Pada seri berikutnya kita akan mencar ilmu perihal bagaimana cara menggunakan atau memanggil function procedure, namun sebelum itu silahkan share Panduan ini sehingga lebih banyak lagi yang mendapat manfaatnya.

Post a Comment for "Function Procedure Pada Vba Excel #08"