Sub Procedure Pada VBA Excel #06

 Pada pembahasan mengenai module & procedure sdh sedikit kmi singgung bahwa procedure Sub Procedure Pada VBA Excel #06

Pada pembahasan mengenai module & procedure sdh sedikit kmi singgung bahwa procedure pada VBA ada 3 jenis: Sub, Function & Property. Pada seri panduan VBA Excel kali ini kita akan belajar lebih jauh tentang jenis Prosedur Sub.


*FILE LATIHAN YANG DIGUNAKAN PADA PEMBAHASAN BISA ANDA DOWNLOAD PADA BAGIAN AKHIR.

Pengertian Sub Procedure Pada VBA Excel


Sub Procedure adalah salah satu jenis procedure pada VBA. Istilah Sub pada jenis procedure VBA ini merujuk pada istilah Subroutines yg secara umum bisa di artikan sbgai sebuah set instruksi yg dirancang untuk melakukan operasi atau tindakan aksi tertentu pada suatu program komputer.

Sub procedure pada VBA Excel adalah sekumpulan kode VBA yg ditandai dengan statement pembuka Sub & diakhiri dengan Statement End Sub. Sub procedure akan menjalankan suatu aksi, tindakan atau tugas tertentu sesuai kode program yg diberikan diantara statement Sub & End Sub, namun tidak mengembalikan atau menghasilkan sebuah nilai tertentu (return value/return result).

Return Value atau nilai akhir inilah perbedaan utama antara Jenis Sub Procedure dengan Function Procedure pada VBA Excel. Function Procedure bisa mengembalikan atau menghasilkan sebuah nilai tertentu se&gkan Sub Procedure tidak. Tentang Function Procedure akan dibahas pada seri selanjutnya.

Jika sebuah sub procedure dijalankan maka kode-kode program di dlmnya akan dijalankan dari awal sampai ditemukan statement End Sub/Exit Sub.

Jika anda menjalankan perintah atau menu "Record Macro" pada Tab Developer Excel, maka excel secara otomatis akan membuat sebuah VBA Sub procedure

Cara Membuat Sub Procedure


Sintax atau cara penulisan dlm membuat sebuah sub procedure kurang lebihnya sbgai brkut:

[Private|Public|Friend] [Static] Sub Nama_Prosedur ([List_Argumen]) [Instruksi/Kode Program] [Exit Sub] [Instruksi/Kode Program] End Sub

Setiap elemen Sub Procedure yg ada di dlm kurung siku "[...]" bersifat opsional, artinya boleh digunakan & boleh diabaikan atau tidak ditulis. Jika anda pernah melihat sebuah prosedur sub pada sebuah modul VBA, mungkin pemulisannya menggunakan cara sederhana sprti ini:

Sub Nama_Prosedur () 'Instruksi/Kode Program 'Instruksi/Kode Program 'Dst. End Sub

Contoh sederhana sebuah Sub Procedure adalah sbgai brkut:

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:
  1. Sub : Menunjukkan jenis Prosedure
  2. copyNilai : Menunjukkan nama prosedur.
  3. Baris kode teks "Copy Nilai C2 ke A1" & "Copy Nilai D6 ke A2" yg di awali dengan tanda petik (') adalah keterangan/komentar & tidak berarti apa-apa.
  4. Sheet1.Range("A1") = Sheet1.Range("C2") adalah baris kode yg berisi perintah untuk mengisi nilai Sel A1 pada Sheet1 dengan nilai Sel C2 pada Sheet1
  5. Sheet1.Range("A2") = Sheet1.Range("D6") adalah baris kode sprti sebelumnya yg bisa juga diartikan perintah untuk mengcopy nilai sel D6 ke sel A2 pada Sheet1.
  6. End Sub : Baris kode sbgai statemen penutup Sub Procedure yg menunjukkan akhir dari prosedur copyNilai.

Selanjutnya akan coba dijelaskan masing-masing elemen penyusun sebuah Sub Procedure pada VBA Excel.

Elemen [Private|Public|Friend]


Keyword Private, Public & Friend mengatur tingkat akses atau scope dari prosedur terkait.
  • Private : Menyatakan bahwa Sub procedure hanya dapat diakses/dipanggil oleh procedure di modul yg sama dimana procedure tersebut ditulis
  • Public : Menyatakan bahwa Sub procedure dapat diakses/dipanggil oleh setiap procedure di semua modul.
  • Friend : Keyword ini digunakan pada Class module. Untuk saat ini kita abaikan dulu.

Ketiga keyword yg juga sering disebut sbgai access modifiers di atas bersifat opsional. Jika pada pembuatan atau saat deklarasi sub procedure tidak anda gunakan salah satunya, maka VBA Excel akan menggunakan keyword Default yakni Public. Artinya prosedur yg anda buat dapat dipanggil dari semua modul yg ada.

Tentang Scope ini sdh banyak kita singgung pada seri sebelumnya, untuk lebih jelasnya akan di contohkan pada bagian 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 setlah sebuah procedure yg dipanggil berakhir atau selesai dijalankan.

Jika anda sdh membaca penduan sebelumnya tentang Konstanta & Variabel VBA tentunya anda sdh mendapatkan gambaran umum tentang Static Keyword di atas.

Elemen "Sub"


Teks atau element "Sub" ini wajib anda gunakan jika anda bermaksud membuat sebuah Sub procedure. Elemen inilah yg menjadi perbedaan utama dlm penyusunan prosedur sub dengan jenis lainnya.

Elemen "Nama_Prosedur"


Bagian ini menunjukkan nama dari prosedur yg anda buat & harus anda gunakan.

Nama prosedur digunakan sbgai penanda untuk membedakan prosedure satu dengan yg lainnya sekaligus menentukan bagaimana prosedur tersebut akan dipanggil oleh prosedur lainnya.

Meskipun tidak mempengaruhi apapun dari sebuah prosedur, namun sebaiknya gunakan nama yg mewakili tujuan dari keseluruhan prosedur yg anda buat, sehingga saat sdh banyak prosedur yg anda susun anda tidak kesulitan membedakan maksud atau tujuan dari setiap prosedur yg ada.

Seperti yg sdh dijelaskan pada bagian sebelumnya, nama sebuah prosedur mengikuti beberapa aturan brkut:
  1. Karakter pertama harus berupa Letter Abjad (A-Z,a-z).
  2. Karakter brkutnya dapat berupa huruf, angka atau karakter tanda baca tertentu (tidak semua tanda baca bisa digunakan).
  3. Tidak boleh memakai titik (.) Dan spasi ( ) juga tidak bisa memakai karakter brkut: #, $,%, &, @, ^, * & !.
  4. Tidak ada perbedaan antara huruf besar & huruf kecil.
  5. Jumlah maksimum karakter yg bisa digunakan adalah 255.

Elemen [List_Argumen]


Bagian ini menunjukkan list atau daftar variabel yg mewakili argumen yg akan digunakan pada prosedur Sub ketika dipanggil. Jika menggunakan lebih dari satu argumen atau variabel penulisannya dipisahkan oleh koma.

Argumen dlm deklarasi prosedur ditulis sprti deklarasi variabel tanpa menyertakan scope. Penulisan argumen tersebut bisa didani statement lain sprti ByVal atau ByRef atau Optional, se&gkan pada deklarasi variabel tidak ada.

Scope dari sebuah argumen bersifat lokal pada prosedur tersebut. Artinya, seakan-akan setara dengan variabel yg dideklarasikan dengan Dim dlm prosedur tersebut. Jadi argumen bisa menghasilkan sebuah variabel ber-scope lokal dlm prosedur yg bisa menerima nilai dari luar prosedur.

Tentang Penggunaan List_Argument ini akan kmi bahas pada seri panduan VBA brkutnya. Untuk saat ini bisa diabaikan dulu.

Elemen [Instruksi/Kode Program]


Instruksi/Kode Program adalah baris-baris kode perintah yg akan dilakukan oleh sub procedure yg dijalankan atau dipanggil. Isinya tentunya menyesuaikan kebutuhan atau keinginan anda yg pada intinya adalah hal-hal apa saja yg akan dijalankan oleh prosedure terkait saat berjalan. Misalnya menyembunyikan baris tertentu, memunculkan notifikasi, menyimpan file & lain sbgainya.

Elemen [Exit Sub]


Baris kode "Exit Sub" adalah perintah untuk keluar dari Sub Procedure terkait.

"Exit Sub" menandakan bahwa prosedur harus di akhiri & tidak dilanjutkan ke baris-baris program selanjutnya. Dengan kata lain saat urutan kode sampai pada "Exit sub" maka urutan kode yg dijalankan akan langsung lompat ke akhir prosedur atau "End Sub".

Elemen "End Sub"


Bagian ini menandai akhir sebuah Sub Procedure.

Pada saat menyelesaikan statemen pembuka untuk membuat sebuah procedure baru biasanya Statement penutup prosedur sub ini akan otomatis dibuat pada VBE (Visual Basic Editor).

Latihan Membuat Sub Procedure VBA Excel


Belajar VBA itu tidak afdhol jika tidak ada prakteknya. Betul?

Pada bagian ini kita akan belajar memahami beberapa istilah yg sdh dijelaskan di atas. Sekaligus kita juga akan belajar bagimana menentukan scope sebuah Prosedur Sub VBA.

Sekarang slahkan membuat sebuah file berekstensi xslm kemudian simpan dengan nama "-Latihan VBA 4" pada folder yg sdh kita buat pada bagian pertama seri tutorial VBA Dasar ini.

Public Sub Procedure


Pada file yg tlah kita buat tadi buatlah sebuah module baru 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, saat membuka modul "SubProsedure1" secara otomatis pada bagian atas Module Window akan mucul teks/kode "Option Explicit".

Dibawah kode ini buatlah 2 buah Prosedur Sub, masing-masing dengan nama Latihan11 & Latihan12 sprti 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 adalah a&ya keyword "Public" pada prosedur "Latihan11", se&gkan prosedur "Latihan12" tidak.

Sekarang slahkan coba jalankan kedua prosedure tadi. Jika langkah anda benar maka saat dijalankan, masing-masing prosedur akan memunculkan sebuah message box/kotak pesan.

Untuk menjalankan prosedur posisikan cursor pada salah satu bagian prosedur kemudian tekan F5 atau pilih menu Run--Run Sub/Userform

Setlah berhasil menjalankan kedua prosedur Latihan11 & Latihan12, selanjutnya slahkan buat lagi 2 prosedur lain dibawahnya. Masing-masing dengan nama "Latihan13" & "Latihan14" sprti dibawah ini.

Sub Latihan13()     Call Latihan11 End Sub  Sub Latihan14()     Call Latihan12 End Sub

Jika sdh, slahkan jalankan kedua prosedur ini secara bergantian.

Saat dijalankan, prosedur "Latihan13" akan memanggil prosedur "Latihan11" & memunculkan kotak pesan brkut:

 Pada pembahasan mengenai module & procedure sdh sedikit kmi singgung bahwa procedure Sub Procedure Pada VBA Excel #06

Se&gkan prosedur "Latihan14" akan memanggil prosedur "Latihan12" & memunculkan pesan brkut:

 Pada pembahasan mengenai module & procedure sdh sedikit kmi singgung bahwa procedure Sub Procedure Pada VBA Excel #06

  • Salah satu cara memanggil prosedur dari prosedur lain adalah dengan menggunakan keyword Call diikuti dengan nama prosedur yg dipanggil.
  • Msg Box adalah salah satu perintah VBA yg digunakan untuk memunculkan kotak pesan yg berisi teks tertentu.

Sampai pada tahap ini ternyata dengan menggunakan keyword Public atau tidak, tidak mempengaruhi akses sebuah prosedur saat dipanggil dari module yg sama. Lalu bagaimana jika dipanggil dari modul yg berbeda?

Sekarang slahkan membuat satu buah module lagi kemudian ubah namanya menjadi "SubProsedure2". Jadi sekarang kita memiliki 2 buah modul. Pada Module pertama berisi 4 procedure, se&gkan pada Module VBA kedua masing kosong.

Selanjutnya, pada module ke-2 atau modul dengan nama "SubProsedure2" tadi buatlah dua Sub Procedure sprti brkut:

Sub Latihan21()     Call Latihan11 End Sub  Sub Latihan22()     Call Latihan12 End Sub

Sub prosedure Latihan21 berisi kode yg memanggil prosedur Latihan11, se&gkan Sub Procedure Latihan22 berisi kode untuk memanggil prosedur Latihan12.

Jika sdh anda buat, jalankan kedua prosedur Latihan21 & Latihan22 pada module SubProsedure2 secara bergantian.

Bagaimana hasilnya?

Ya ternyata kedua Sub Procedure Latihan11 & Latihan12 bisa juga dipanggil dari modul lain yg berbeda.

Selanjutnya tuliskan lagi script kode brkut untuk menambahkan sebuah prosedur sub pada modul SubProsedure2 brkut:

Sub Latihan23()     Latihan11     Latihan12 End Sub

Jika sdh selesai membuat Sub Prosedure Latihan23 ini slahkan coba dijalankan.

Sekarang pada module SubProsedure1 terdapat 4 prosedur VBA dengan nama Latihan11, Latihan12, Latihan13 & Latihan14. Se&gkan pada module SubProsedure2 terdapat 3 prosedur masing-masing dengan nama Latihan21, Latihan22, & Latihan23.

Dari beberapa latihan di atas bisa disimpulkan beberapa hal brkut:
  1. Keyword Public pada statement deklarasi sebuah Sub Procedure menjadikan prosedur tersebut memiliki scope Project-Level, artinya dapat diakses/ dipanggil dari module yg lain bahkan dengan cara yg benar dapat juga diakses dari Project VBA atau file excel yg lain.
  2. Jika sebuah prosedur dideklarasikan tanpa menyertakan keyword public atau Private maka akan dianggap menggunakan keyword public sbgai acces modifier default.
  3. Sebuah Sub Procedure dapat dipanggil dari prosedur lain dengan menggunakan keyword Call diikuti nama prosedur atau langsung dipanggil dengan menuliskan nama prosedurnya.

Bagaimana? sdh capek? Jika belum kita lanjutkan latihan & pembahasan tentang Sub Procedure VBA Excel ini.

Private Sub Procedure


Setlah memahami penggunaan keyword "Public" sekarang kita akan berlatih mencoba menggunakan Keyword "Private".

Pada modul VBA "SubProsedure1" tambahkan kode brkut untuk membuat 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, se&gkan pada prosedur dengan nama Latihan16 berisi perintah untuk memanggil atau menjalankan prosedur "Latihan15".

Semoga cara saya menamai prosedur-prosedur di atas tidak membuat anda bingung. Jika iya saya yakin anda hanya membaca saja tanpa praktek menuliskan kode-kode di atas tadi. hehehehe.

Secara bergantian saat kedua prosedur ini dijalankan maka semestinya akan memunculkan sebuah kotak pesan sprti ini:

 Pada pembahasan mengenai module & procedure sdh sedikit kmi singgung bahwa procedure Sub Procedure Pada VBA Excel #06

Sekarang kita pindah ke module "SubProsedure2" & tambahkan Sub prosedur brkut di bawah prosedur "Latihan23" yg sdh ada:

Sub Latihan24()     Latihan15 End Sub

Saat prosedur Latihan24 dijalankan untuk memanggil prosedur Latihan15 ternyata muncul pesan error brkut:

 Pada pembahasan mengenai module & procedure sdh sedikit kmi singgung bahwa procedure Sub Procedure Pada VBA Excel #06

Ya, hal ini disebabkan prosedur Latihan15 kita deklarasikan sbgai Private, sehingga tidak bisa di panggil dari module lain.

Dari latihan ini dapat disimpulkan bahwa prosedur VBA yg dideklarasikan sbgai Private memiliki scope level modul sehingga hanya bisa dipanggil oleh prosedur lain pada modul yg sama & tidak bisa dipanggil dari modul yg lain.

Static Sub Procedure


Pada seri sebelumnya sdh disinggung bahwa tingkat prosedur Variabel static mempertahankan nilainya saat sebuah prosedur selesai dijalankan (Tidak dihapus/direset).

Jadi keyword "Static" ini mempengaruhi lifetime dari local variable. Bagian ini tidak akan dijelaskan lebih jauh sebab sdh pernah kita bahas pada seri yg membahas tentang Konstanta & variabel VBA.

Untuk latihan sekarang slahkan membuat module baru lagi & ubah namanya menjadi "SubProsedure3"

Pada modul ini tuliskan kedua script VBA brkut:

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 slahkan jalankan kedua prosedur ini masing-masing 3x atau lebih. Kemudian perhatikan perbedaannya.

Anda dapat membuat semua Sub prosedur VBA pada sebuah modul tertentu hanya dapat diakses dari project VBA yg sama (tidak dari project VBA/file lain) dengan menambahkan statement "Option Private Module" tanpa petik pada awal module.

Untuk melengkapi pembahasan kali ini slahkan download File latihan di bawah ini :

Dropbox
GDrive

*Jika link mati / tidak dapat diakses slahkan lapor via kontak yg tersedia

LINK DOWNLOAD TERKUNCI.
Silahkan SHARE untuk membuka kunci!


Sekian dulu pembahasan kita untuk VBA Sub Procedure, Pada seri brkutnya kita akan belajar lebih detail tentang cara menjalankan Sub procedure dan membahas tentang Function Procedure pada VBA Excel.

Jika ada pertanyaan slahkan sampaikan pada kolom komentar yg tersedia & jangan lupa bagikan laman ini agar semakin banyak kawan-kawan lain yg ikut mendapatkan manfaatnya.


Sumber https://www.kelasexcel.id

Berlangganan update artikel terbaru via email:

Belum ada Komentar untuk "Sub Procedure Pada VBA Excel #06"

Posting Komentar

Iklan Atas Artikel

Iklan Tengah Artikel 1

Iklan Tengah Artikel 2

Iklan Bawah Artikel