Sub Procedure Pada VBA Excel #06

Pada pembahasan mengenai module dan procedure sudah sedikit kami singgung bahwa procedure pada VBA ada 3 jenis: Sub, Function dan Property. Pada seri panduan VBA Excel kali ini kita akan berguru lebih jauh ihwal jenis prosedur Sub.
Pengertian Sub Procedure Pada VBA Excel
Sub Procedure merupakan salah satu jenis procedure pada VBA. Istilah Sub pada jenis procedure VBA ini merujuk pada istilah Subroutines yang secara umum bisa di artikan sebagai sebuah set arahan yang dirancang untuk melakukan operasi atau tindakan agresi tertentu pada suatu acara komputer.
Sub procedure pada VBA Excel ialah sekumpulan kode VBA yang ditandai dengan statement pembuka Sub dan diakhiri dengan Statement End Sub. Sub procedure akan menjalankan suatu aksi, tindakan atau peran tertentu sesuai kode acara yang diberikan diantara statement Sub dan End Sub, namun tidak mengembalikan atau menghasilkan sebuah nilai tertentu (return value/return result).
Return Value atau nilai balasan inilah perbedaan utama antara Jenis Sub Procedure dengan Function Procedure pada VBA Excel. Function Procedure bisa mengembalikan atau menghasilkan sebuah nilai tertentu sedangkan Sub Procedure tidak. ihwal Function Procedure akan dibahas pada seri selanjutnya.
Jika sebuah sub procedure dijalankan maka kode-kode program di dalamnya akan dijalankan dari awal hingga ditemukan statement End Sub/Exit Sub.
Cara membuat Sub Procedure
Sintax atau Cara penulisan dalam membuat sebuah sub procedure kurang lebihnya sebagai berikut:
[Private|Public|Friend] [Static] Sub Nama_Prosedur ([List_Argumen])
[Instruksi/Kode acara]
[Exit Sub]
[Instruksi/Kode acara]
End Sub
Setiap elemen Sub Procedure yang ada di dalam kurung siku "[...]" bersifat opsional, artinya boleh digunakan dan boleh diabaikan atau tidak ditulis. jikalau anda pernah melihat sebuah mekanisme sub pada sebuah modul VBA, mungkin pemulisannya menggunakan Tutorial sederhana seakan-akan ini:
Sub Nama_Prosedur ()
'Instruksi/Kode acara
'Instruksi/Kode acara
'Dst.
End Sub
Contoh sederhana sebuah Sub Procedure ialah sebagai berikut:
Sub copyNilai()
' Copy Nilai C2 ke A1
Sheet1.Range("A1") = Sheet1.Range("C2")
' Copy Nilai D6 ke A2
Sheet1.Range("A2") = Sheet1.Range("D6")
End Sub
Keterangan:
- Sub : memperlihatkan jenis prosedure
- copyNilai : menunjukkan nama prosedur.
- Baris kode teks "Copy Nilai C2 ke A1" dan "Copy Nilai D6 ke A2" yang di awali dengan tanda petik (') merupakan keterangan/komentar dan tidak berarti apa-apa.
- Sheet1.Range("A1") = Sheet1.Range("C2") merupakan baris kode yang berisi perintah untuk mengisi nilai Sel A1 pada Sheet1 dengan nilai Sel C2 pada Sheet1
- Sheet1.Range("A2") = Sheet1.Range("D6") merupakan baris kode seolah-olah sebelumnya yang bisa juga diartikan perintah untuk mengcopy nilai sel D6 ke sel A2 pada Sheet1.
- End Sub : Baris kode sebagai statemen penutup Sub Procedure yang menunjukkan akibat dari prosedur copyNilai.
Selanjutnya akan coba dijelaskan masing-masing elemen penyusun sebuah Sub Procedure pada VBA Excel.
Elemen [Private|Public|Friend]
Keyword Private, Public dan Friend mengatur tingkat saluran atau scope dari mekanisme terkait.
- Private : Menyatakan bahwa Sub procedure hanya mampu diakses/dipanggil oleh procedure di modul yang sama dimana procedure tersebut ditulis
- Public : Menyatakan bahwa Sub procedure dapat diakses/dipanggil oleh setiap procedure di semua modul.
- Friend : Keyword ini dipakai pada Class module. Untuk dikala ini kita abaikan dulu.
Ketiga keyword yang juga sering disebut sebagai access modifiers di atas bersifat opsional. kalau pada pembuatan atau dikala deklarasi sub procedure tidak anda gunakan salah satunya, maka VBA Excel akan menggunakan keyword Default yaitu Public. Artinya mekanisme yang anda buat dapat dipanggil dari semua modul yang ada.
Tentang Scope ini sudah banyak kita singgung pada seri sebelumnya, untuk lebih jelasnya akan di teladankan pada penggalan latihan dibawah.
Elemen [Static]
Keyword Static pada deklarasi prosedur menyatakan bahwa setiap variabel lokal pada sebuah Sub procedure akan disimpan atau tidak dibuang dari memori. jika keyword ini tidak anda gunakan maka normalnya variabel akan dikosongkan setelah sebuah procedure yang dipanggil berakhir atau tamat dijalankan.
Jika anda sudah membaca penduan sebelumnya tentang Konstanta dan Variabel VBA tentunya anda sudah mendapatkan ilustrasi umum perihal Static Keyword di atas.
Elemen "Sub"
Teks atau element "Sub" ini wajib anda gunakan kalau anda bermaksud membuat sebuah Sub procedure. Elemen inilah yang menjadi perbedaan utama dalam penyusunan prosedur sub dengan jenis lainnya.
Elemen "Nama_Prosedur"
Bagian ini memperlihatkan nama dari prosedur yang anda buat dan harus anda gunakan.
Nama prosedur digunakan sebagai penanda untuk membedakan prosedure satu dengan yang lainnya sekaligus menentukan bagaimana prosedur tersebut akan dipanggil oleh prosedur lainnya.
Meskipun tidak mensugesti apapun dari sebuah prosedur, namun sebaiknya gunakan nama yang mewakili tujuan dari keseluruhan prosedur yang anda buat, sehingga saat sudah banyak mekanisme yang anda susun anda tidak kesulitan membedakan maksud atau tujuan dari setiap mekanisme yang ada.
Seperti yang sudah dijelaskan pada bagian sebelumnya, nama sebuah prosedur 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 mampu digunakan).
- Tidak boleh memakai titik (.) Dan spasi ( ) juga tidak mampu memakai karakter berikut: #, $,%, &, @, ^, * dan !.
- Tidak ada perbedaan antara huruf besar dan huruf kecil.
- Jumlah maksimum karakter yang mampu digunakan ialah 255.
Elemen [List_Argumen]
Bagian ini menunjukkan list atau daftar variabel yang mewakili argumen yang akan digunakan pada prosedur Sub ketika dipanggil. jika menggunakan lebih dari satu argumen atau variabel penulisannya dipisahkan oleh koma.
Argumen dalam deklarasi prosedur ditulis seperti deklarasi variabel tanpa menyertakan scope. Penulisan argumen tersebut mampu disertai statement lain seperti ByVal atau ByRef atau Optional, sedangkan pada deklarasi variabel tidak ada.
Scope dari sebuah argumen bersifat lokal pada prosedur tersebut. Artinya, seakan-akan setara dengan variabel yang dideklarasikan dengan Dim dalam mekanisme tersebut. Kaprikornus argumen mampu menghasilkan sebuah variabel ber-scope lokal dalam prosedur yang bisa menerima nilai dari luar prosedur.
Tentang Penggunaan List_Argument ini akan kami bahas pada seri panduan VBA berikutnya. Untuk ketika ini mampu diabaikan dulu.
Elemen [Instruksi/Kode program]
Instruksi/Kode acara merupakan baris-baris kode perintah yang akan dilakukan oleh sub procedure yang dijalankan atau dipanggil. Isinya tentunya menyesuaikan kebutuhan atau harapan anda yang pada intinya adalah hal-hal apa saja yang akan dijalankan oleh mekanismee terkait ketika berjalan. contohnya menyembunyikan baris tertentu, memunculkan notifikasi, menyimpan file dan lain sebagainya.
Elemen [Exit Sub]
Baris kode "Exit Sub" merupakan perintah untuk keluar dari Sub Procedure terkait.
"Exit Sub" menunjukan bahwa prosedur harus di akibati dan tidak dilanjutkan ke baris-baris acara selanjutnya. Dengan kata lain saat urutan kode sampai pada "Exit sub" maka urutan kode yang dijalankan akan langsung lompat ke balasan prosedur atau "End Sub".
Elemen "End Sub"
Bagian ini menandai akhir sebuah Sub Procedure.
Pada ketika menyelesaikan statemen pembuka untuk membuat sebuah procedure baru biasanya Statement epilog mekanisme sub ini akan otomatis dibentuk pada VBE (Visual Basic Editor).
Latihan menciptakan Sub Procedure VBA Excel
Belajar VBA itu tidak afdhol kalau tidak ada prakteknya. Betul?
Pada kepingan ini kita akan berguru memahami beberapa istilah yang sudah dijelaskan di atas. Sekaligus kita juga akan berguru bagimana menentukan scope sebuah mekanisme Sub VBA.
Sekarang silahkan menciptakan sebuah file berekstensi xslm kemudian simpan dengan nama "Kelas Excel-Latihan VBA 4" pada folder yang sudah kita buat pada bagian pertama seri tutorial VBA Dasar ini.
Public Sub Procedure
Pada file yang telah kita buat tadi buatlah sebuah module gres kemudian ubah nama modul baru tadi dari "Module1" menjadi "SubProsedure1". Bagaimana Caranya? jika masih kesulitan untuk melakukan aktifitas ini dilahkan baca seri sebelumnya.
Selanjutnya apa bila anda mengikuti seri panduan VBA Dasar ini dari awal, dikala membuka modul "SubProsedure1" secara otomatis pada serpihan atas Module Window akan mucul teks/kode "Option Explicit".
Dibawah kode ini buatlah 2 buah prosedur Sub, masing-masing dengan nama Latihan11 dan Latihan12 seakan-akan dibawah ini:
Public Sub Latihan11()
MsgBox "Ini prosedure Latihan11"
End Sub
Sub Latihan12()
MsgBox "Ini mekanismee Latihan12"
End Sub
Perbedaan utama dari kedua sub procedure di atas adalah adanya keyword "Public" pada prosedur "Latihan11", sedangkan mekanisme "Latihan12" tidak.
Sekarang silahkan coba jalankan kedua mekanismee tadi. jika langkah anda benar maka dikala dijalankan, masing-masing mekanisme akan memunculkan sebuah message box/kotak pesan.
Setelah berhasil menjalankan kedua mekanisme Latihan11 dan Latihan12, selanjutnya silahkan buat lagi 2 prosedur lain dibawahnya. Masing-masing dengan nama "Latihan13" dan "Latihan14" seperti dibawah ini.
Sub Latihan13()
Call Latihan11
End Sub
Sub Latihan14()
Call Latihan12
End Sub
Jika sudah, silahkan jalankan kedua prosedur ini secara bergantian.
Saat dijalankan, prosedur "Latihan13" akan memanggil mekanisme "Latihan11" dan memunculkan kotak pesan berikut:

Sedangkan prosedur "Latihan14" akan memanggil mekanisme "Latihan12" dan memunculkan pesan berikut:

Sampai pada tahap ini ternyata dengan menggunakan keyword Public atau tidak, tidak menghipnotis saluran sebuah mekanisme saat dipanggil dari module yang sama. lalu bagaimana jikalau dipanggil dari modul yang berbeda?
Sekarang silahkan membuat satu buah module lagi kemudian ubah namanya menjadi "SubProsedure2". Jadi kini kita mempunyai 2 buah modul. Pada Module pertama berisi 4 procedure, sedangkan pada Module VBA kedua masing kosong.
Selanjutnya, pada module ke-2 atau modul dengan nama "SubProsedure2" tadi buatlah dua Sub Procedure seolah-olah berikut:
Sub Latihan21()
Call Latihan11
End Sub
Sub Latihan22()
Call Latihan12
End Sub
Sub mekanismee Latihan21 berisi kode yang memanggil mekanisme Latihan11, sedangkan Sub Procedure Latihan22 berisi kode untuk memanggil prosedur Latihan12.
Jika sudah anda buat, jalankan kedua prosedur Latihan21 dan Latihan22 pada module SubProsedure2 secara bergantian.
Bagaimana akibatnya?
Ya ternyata kedua Sub Procedure Latihan11 dan Latihan12 bisa juga dipanggil dari modul lain yang berbeda.
Selanjutnya tuliskan lagi script kode berikut untuk menambahkan sebuah mekanisme sub pada modul SubProsedure2 berikut:
Sub Latihan23()
Latihan11
Latihan12
End Sub
Jika sudah akhir menciptakan Sub prosedure Latihan23 ini silahkan coba dijalankan.
Sekarang pada module SubProsedure1 terdapat 4 mekanisme VBA dengan nama Latihan11, Latihan12, Latihan13 dan Latihan14. Sedangkan pada module SubProsedure2 terdapat 3 mekanisme masing-masing dengan nama Latihan21, Latihan22, dan Latihan23.
Dari beberapa latihan di atas mampu disimpulkan beberapa hal berikut:
- Keyword Public pada statement deklarasi sebuah Sub Procedure menjadikan mekanisme tersebut mempunyai scope Project-Level, artinya mampu diakses/ dipanggil dari module yang lain bahkan dengan Cara yang benar mampu juga diakses dari Project VBA atau file excel yang lain.
- Jika sebuah mekanisme dideklarasikan tanpa menyertakan keyword public atau Private maka akan dianggap menggunakan keyword public sebagai acces modifier default.
- Sebuah Sub Procedure mampu dipanggil dari prosedur lain dengan menggunakan keyword Call diikuti nama mekanisme atau pribadi dipanggil dengan sajianliskan nama mekanismenya.
Bagaimana? sudah capek? jikalau belum kita lanjutkan latihan dan pembahasan tentang Sub Procedure VBA Excel ini.
Private Sub Procedure
Setelah memahami penggunaan keyword "Public" kini kita akan berlatih mencoba menggunakan Keyword "Private".
Pada modul VBA "SubProsedure1" tambahkan kode berikut untuk menciptakan 2 Sub Procedure lain:
Private Sub Latihan15()
MsgBox "Ini mekanismee Latihan15"
End Sub
Sub Latihan16()
Latihan15
End Sub
Prosedur Latihan15 berisi kode untuk memunculkan sebuah pesan, sedangkan pada prosedur dengan nama Latihan16 berisi perintah untuk memanggil atau menjalankan prosedur "Latihan15".
Semoga Tutorial aku menamai prosedur-prosedur di atas tidak menciptakan anda gundah. jikalau iya saya yakin anda hanya membaca saja tanpa praktek sajianliskan kode-kode di atas tadi. hehehehe.
Secara bergantian ketika kedua mekanisme ini dijalankan maka semestinya akan memunculkan sebuah kotak pesan seolah-olah ini:

Sekarang kita pindah ke module "SubProsedure2" dan tambahkan Sub mekanisme berikut di bawah mekanisme "Latihan23" yang sudah ada:
Sub Latihan24()
Latihan15
End Sub
Saat mekanisme Latihan24 dijalankan untuk memanggil prosedur Latihan15 ternyata muncul pesan error berikut:

Ya, hal ini disebabkan prosedur Latihan15 kita deklarasikan sebagai Private, sehingga tidak mampu di panggil dari module lain.
Dari latihan ini dapat disimpulkan bahwa mekanisme VBA yang dideklarasikan sebagai Private mempunyai scope level modul sehingga hanya bisa dipanggil oleh prosedur lain pada modul yang sama dan tidak bisa dipanggil dari modul yang lain.
Static Sub Procedure
Pada seri sebelumnya sudah disinggung bahwa tingkat prosedur Variabel static mempertahankan nilainya ketika sebuah mekanisme akhir dijalankan (Tidak dihapus/direset).
Jadi keyword "Static" ini mensugesti lifetime dari local variable. pecahan ini tidak akan dijelaskan lebih jauh karena telah pernah kita bahas pada seri yang membahas ihwal Konstanta dan variabel VBA.
Untuk latihan sekarang silahkan menciptakan module gres lagi dan ubah namanya menjadi "SubProsedure3"
Pada modul ini tuliskan kedua script VBA berikut:
Sub Latihan31()
Dim int_Variabel1 As Integer
int_Variabel1 = int_Variabel1 + 5
MsgBox "Nilai Variabel int_Var1 yaitu: " & int_Variabel1
End Sub
Static Sub Latihan32()
Dim int_Variabel2 As Integer
int_Variabel2 = int_Variabel2 + 5
MsgBox "Nilai Variabel int_Var1 adalah: " & int_Variabel2
End Sub
Berikutnya silahkan jalankan kedua mekanisme ini masing-masing 3x atau lebih. Kemudian perhatikan perbedaannya.
Untuk melengkapi pembahasan kali ini silahkan download File latihan di bawah ini :
LINK DOWNLOAD TERKUNCI.
Silahkan SHARE untuk membuka kunci!
Sekian dulu pembahasan kita untuk VBA Sub Procedure, Pada seri berikutnya kita akan berguru lebih detail tentang Cara menjalankan Sub procedure serta membahas ihwal Function Procedure pada VBA Excel.
Jika ada pertanyaan silahkan hinggakan pada kolom komentar yang tersedia dan jangan lupa bagikan laman ini supaya semakin banyak kawan-kawan lain yang ikut menerima keuntungannya.
Komentar
Posting Komentar