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 mencar ilmu lebih jauh wacana 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 sanggup di artikan sebagai sebuah set arahan yang dirancang untuk melaksanakan operasi atau tindakan agresi tertentu pada suatu aktivitas komputer.
Sub procedure pada VBA Excel yaitu sekumpulan kode VBA yang ditandai dengan statement pembuka Sub dan diakhiri dengan Statement End Sub. Sub procedure akan menjalankan suatu aksi, tindakan atau kiprah tertentu sesuai kode aktivitas yang diberikan diantara statement Sub dan End Sub, namun tidak mengembalikan atau menghasilkan sebuah nilai tertentu (return value/return result).
Return Value atau nilai simpulan inilah perbedaan utama antara Jenis Sub Procedure dengan Function Procedure pada VBA Excel. Function Procedure sanggup mengembalikan atau menghasilkan sebuah nilai tertentu sedangkan Sub Procedure tidak. Tentang Function Procedure akan dibahas pada seri selanjutnya.
Jika sebuah sub procedure dijalankan maka kode-kode aktivitas di dalamnya akan dijalankan dari awal hingga ditemukan statement End Sub/Exit Sub.
Cara Membuat Sub Procedure
Sintax atau cara penulisan dalam menciptakan sebuah sub procedure kurang lebihnya sebagai berikut:
[Private|Public|Friend] [Static] Sub Nama_Prosedur ([List_Argumen]) [Instruksi/Kode Program] [Exit Sub] [Instruksi/Kode Program] End Sub
Setiap elemen Sub Procedure yang ada di dalam kurung siku "[...]" bersifat opsional, artinya boleh dipakai dan boleh diabaikan atau tidak ditulis. Jika anda pernah melihat sebuah mekanisme sub pada sebuah modul VBA, mungkin pemulisannya menggunakan cara sederhana menyerupai ini:
Sub Nama_Prosedur () 'Instruksi/Kode Program 'Instruksi/Kode Program 'Dst. End Sub
Contoh sederhana sebuah Sub Procedure yaitu 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 : Menunjukkan 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 menyerupai sebelumnya yang sanggup juga diartikan perintah untuk mengcopy nilai sel D6 ke sel A2 pada Sheet1.
- End Sub : Baris kode sebagai statemen epilog Sub Procedure yang menawarkan simpulan dari mekanisme 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 kanal atau scope dari mekanisme terkait.
- Private : Menyatakan bahwa Sub procedure hanya sanggup 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 ketika ini kita abaikan dulu.
Ketiga keyword yang juga sering disebut sebagai access modifiers di atas bersifat opsional. Jika pada pembuatan atau ketika deklarasi sub procedure tidak anda gunakan salah satunya, maka VBA Excel akan menggunakan keyword Default yakni Public. Artinya mekanisme yang anda buat sanggup dipanggil dari semua modul yang ada.
Tentang Scope ini sudah banyak kita singgung pada seri sebelumnya, untuk lebih jelasnya akan di contohkan pada kepingan latihan dibawah.
Elemen [Static]
Keyword Static pada deklarasi mekanisme 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 sehabis sebuah procedure yang dipanggil berakhir atau selesai dijalankan.
Jika anda sudah membaca penduan sebelumnya wacana Konstanta dan Variabel VBA tentunya anda sudah mendapatkan citra umum wacana Static Keyword di atas.
Elemen "Sub"
Teks atau element "Sub" ini wajib anda gunakan jikalau anda bermaksud menciptakan sebuah Sub procedure. Elemen inilah yang menjadi perbedaan utama dalam penyusunan mekanisme sub dengan jenis lainnya.
Elemen "Nama_Prosedur"
Bagian ini menawarkan nama dari mekanisme yang anda buat dan harus anda gunakan.
Nama mekanisme dipakai sebagai penanda untuk membedakan prosedure satu dengan yang lainnya sekaligus memilih bagaimana mekanisme tersebut akan dipanggil oleh mekanisme lainnya.
Meskipun tidak menghipnotis apapun dari sebuah prosedur, namun sebaiknya gunakan nama yang mewakili tujuan dari keseluruhan mekanisme yang anda buat, sehingga ketika sudah banyak mekanisme yang anda susun anda tidak kesulitan membedakan maksud atau tujuan dari setiap mekanisme yang ada.
Seperti yang sudah dijelaskan pada kepingan sebelumnya, nama sebuah mekanisme mengikuti beberapa hukum berikut:
- Karakter pertama harus berupa Letter Abjad (A-Z,a-z).
- Karakter berikutnya sanggup berupa huruf, angka atau karakter tanda baca tertentu (tidak semua tanda baca sanggup digunakan).
- Tidak boleh menggunakan titik (.) Dan spasi ( ) juga tidak sanggup menggunakan karakter berikut: #, $,%, &, @, ^, * dan !.
- Tidak ada perbedaan antara karakter besar dan karakter kecil.
- Jumlah maksimum karakter yang sanggup dipakai yaitu 255.
Elemen [List_Argumen]
Bagian ini menawarkan list atau daftar variabel yang mewakili argumen yang akan dipakai pada mekanisme Sub ketika dipanggil. Jika menggunakan lebih dari satu argumen atau variabel penulisannya dipisahkan oleh koma.
Argumen dalam deklarasi mekanisme ditulis menyerupai deklarasi variabel tanpa menyertakan scope. Penulisan argumen tersebut sanggup disertai statement lain menyerupai ByVal atau ByRef atau Optional, sedangkan pada deklarasi variabel tidak ada.
Scope dari sebuah argumen bersifat lokal pada mekanisme tersebut. Artinya, seolah-olah setara dengan variabel yang dideklarasikan dengan Dim dalam mekanisme tersebut. Makara argumen sanggup menghasilkan sebuah variabel ber-scope lokal dalam mekanisme yang sanggup mendapatkan nilai dari luar prosedur.
Tentang Penggunaan List_Argument ini akan kami bahas pada seri panduan VBA berikutnya. Untuk ketika ini sanggup diabaikan dulu.
Elemen [Instruksi/Kode Program]
Instruksi/Kode Program merupakan baris-baris kode perintah yang akan dilakukan oleh sub procedure yang dijalankan atau dipanggil. Isinya tentunya menyesuaikan kebutuhan atau harapan anda yang pada pada dasarnya yaitu hal-hal apa saja yang akan dijalankan oleh prosedure terkait ketika berjalan. Misalnya 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" menerangkan bahwa mekanisme harus di akhiri dan tidak dilanjutkan ke baris-baris aktivitas selanjutnya. Dengan kata lain ketika urutan kode hingga pada "Exit sub" maka urutan kode yang dijalankan akan eksklusif lompat ke simpulan mekanisme atau "End Sub".
Elemen "End Sub"
Bagian ini menandai akhir sebuah Sub Procedure.
Pada ketika menuntaskan statemen pembuka untuk menciptakan sebuah procedure gres biasanya Statement epilog mekanisme sub ini akan otomatis dibentuk pada VBE (Visual Basic Editor).
Latihan Membuat Sub Procedure VBA Excel
Belajar VBA itu tidak afdhol jikalau tidak ada prakteknya. Betul?
Pada kepingan ini kita akan mencar ilmu memahami beberapa istilah yang sudah dijelaskan di atas. Sekaligus kita juga akan mencar ilmu bagimana memilih scope sebuah Prosedur Sub VBA.
Sekarang silahkan menciptakan sebuah file berekstensi xslm lalu simpan dengan nama "-Latihan VBA 4" pada folder yang sudah kita buat pada kepingan pertama seri tutorial VBA Dasar ini.
Public Sub Procedure
Pada file yang telah kita buat tadi buatlah sebuah module gres lalu ubah nama modul gres tadi dari "Module1" menjadi "SubProsedure1". Bagaimana caranya? Jika masih kesulitan untuk melaksanakan aktifitas ini dilahkan baca seri sebelumnya.
Selanjutnya apa bila anda mengikuti seri panduan VBA Dasar ini dari awal, ketika membuka modul "SubProsedure1" secara otomatis pada kepingan atas Module Window akan mucul teks/kode "Option Explicit".
Dibawah kode ini buatlah 2 buah Prosedur Sub, masing-masing dengan nama Latihan11 dan Latihan12 menyerupai dibawah ini:
Public Sub Latihan11() MsgBox "Ini Prosedure Latihan11" End Sub Sub Latihan12() MsgBox "Ini Prosedure Latihan12" End Sub
Perbedaan utama dari kedua sub procedure di atas yaitu adanya keyword "Public" pada mekanisme "Latihan11", sedangkan mekanisme "Latihan12" tidak.
Sekarang silahkan coba jalankan kedua prosedure tadi. Jika langkah anda benar maka ketika dijalankan, masing-masing mekanisme akan memunculkan sebuah message box/kotak pesan.
Setelah berhasil menjalankan kedua mekanisme Latihan11 dan Latihan12, selanjutnya silahkan buat lagi 2 mekanisme lain dibawahnya. Masing-masing dengan nama "Latihan13" dan "Latihan14" menyerupai dibawah ini.
Sub Latihan13() Call Latihan11 End Sub Sub Latihan14() Call Latihan12 End Sub
Jika sudah, silahkan jalankan kedua mekanisme ini secara bergantian.
Saat dijalankan, mekanisme "Latihan13" akan memanggil mekanisme "Latihan11" dan memunculkan kotak pesan berikut:
Sedangkan mekanisme "Latihan14" akan memanggil mekanisme "Latihan12" dan memunculkan pesan berikut:
Sampai pada tahap ini ternyata dengan menggunakan keyword Public atau tidak, tidak menghipnotis kanal sebuah mekanisme ketika dipanggil dari module yang sama. Lalu bagaimana jikalau dipanggil dari modul yang berbeda?
Sekarang silahkan menciptakan satu buah module lagi lalu ubah namanya menjadi "SubProsedure2". Makara 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 menyerupai berikut:
Sub Latihan21() Call Latihan11 End Sub Sub Latihan22() Call Latihan12 End Sub
Sub prosedure Latihan21 berisi kode yang memanggil mekanisme Latihan11, sedangkan Sub Procedure Latihan22 berisi kode untuk memanggil mekanisme Latihan12.
Jika sudah anda buat, jalankan kedua mekanisme Latihan21 dan Latihan22 pada module SubProsedure2 secara bergantian.
Bagaimana hasilnya?
Ya ternyata kedua Sub Procedure Latihan11 dan Latihan12 sanggup 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 selesai 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 sanggup disimpulkan beberapa hal berikut:
- Keyword Public pada statement deklarasi sebuah Sub Procedure menyebabkan mekanisme tersebut mempunyai scope Project-Level, artinya sanggup diakses/ dipanggil dari module yang lain bahkan dengan cara yang benar sanggup 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 sanggup dipanggil dari mekanisme lain dengan menggunakan keyword Call diikuti nama mekanisme atau eksklusif dipanggil dengan menuliskan nama prosedurnya.
Bagaimana? sudah capek? Jika belum kita lanjutkan latihan dan pembahasan wacana 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 Prosedure Latihan15" End Sub Sub Latihan16() Latihan15 End Sub
Prosedur Latihan15 berisi kode untuk memunculkan sebuah pesan, sedangkan pada mekanisme dengan nama Latihan16 berisi perintah untuk memanggil atau menjalankan mekanisme "Latihan15".
Semoga cara saya menamai prosedur-prosedur di atas tidak menciptakan anda bingung. Jika iya saya yakin anda hanya membaca saja tanpa praktek menuliskan kode-kode di atas tadi. hehehehe.
Secara bergantian ketika kedua mekanisme ini dijalankan maka semestinya akan memunculkan sebuah kotak pesan menyerupai 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 mekanisme Latihan15 ternyata muncul pesan error berikut:
Ya, hal ini disebabkan mekanisme Latihan15 kita deklarasikan sebagai Private, sehingga tidak sanggup di panggil dari module lain.
Dari latihan ini sanggup disimpulkan bahwa mekanisme VBA yang dideklarasikan sebagai Private mempunyai scope level modul sehingga hanya sanggup dipanggil oleh mekanisme lain pada modul yang sama dan tidak sanggup dipanggil dari modul yang lain.
Static Sub Procedure
Pada seri sebelumnya sudah disinggung bahwa tingkat mekanisme Variabel static mempertahankan nilainya ketika sebuah mekanisme selesai dijalankan (Tidak dihapus/direset).
Makara keyword "Static" ini menghipnotis lifetime dari local variable. Bagian ini tidak akan dijelaskan lebih jauh dikarenakan telah pernah kita bahas pada seri yang membahas wacana Konstanta dan variabel VBA.
Untuk latihan kini 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 adalah: " & 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 mencar ilmu lebih detail wacana cara menjalankan Sub procedure serta membahas wacana Function Procedure pada VBA Excel.
Jika ada pertanyaan silahkan sampaikan pada kolom komentar yang tersedia dan jangan lupa bagikan laman ini supaya semakin banyak kawan-kawan lain yang ikut mendapatkan manfaatnya.
Post a Comment for "Sub Procedure Pada Vba Excel #06"