Sub Procedure Pada VBA Excel #06

Sub Procedure Pada VBA Excel #06

Tutorial lengkap tentang Sub Procedure pada VBA Excel, Elemen penyusun Sub Procedure serta latihan membuat prosedur sub sebagai salah satu jenis prosedur pada VBA yang digunakan untuk menjalankan tugas atau tindakan aksi tertentu
Sub Procedure Pada VBA Excel

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 belajar lebih jauh tentang jenis Prosedur Sub.



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

PENGERTIAN SUB PROCEDURE


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 instruksi yang dirancang untuk melakukan operasi atau tindakan aksi tertentu pada suatu program komputer.

Sub procedure pada VBA Excel adalah sekumpulan kode VBA yang ditandai dengan statement pembuka Sub dan diakhiri dengan Statement End Sub. Sub procedure akan menjalankan suatu aksi, tindakan atau tugas tertentu sesuai kode program yang diberikan diantara statement Sub dan 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 sedangkan Sub Procedure tidak. Tentang Function Procedure akan dibahas pada seri selanjutnya.

Jika sebuah sub procedure dijalankan maka kode-kode program di dalamnya 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 dalam membuat 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 digunakan dan boleh diabaikan atau tidak ditulis. Jika anda pernah melihat sebuah prosedur sub pada sebuah modul VBA, mungkin pemulisannya menggunakan cara sederhana seperti ini:

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

Contoh sederhana sebuah Sub Procedure adalah 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:
  1. Sub : Menunjukkan jenis Prosedure
  2. copyNilai : Menunjukkan nama prosedur.
  3. 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.
  4. 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
  5. Sheet1.Range("A2") = Sheet1.Range("D6") merupakan baris kode seperti sebelumnya yang bisa juga diartikan perintah untuk mengcopy nilai sel D6 ke sel A2 pada Sheet1.
  6. End Sub : Baris kode sebagai statemen penutup Sub Procedure yang 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 dan Friend mengatur tingkat akses atau scope dari prosedur terkait.
  • Private : Menyatakan bahwa Sub procedure hanya dapat 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 digunakan pada Class module. Untuk saat ini kita abaikan dulu.

Ketiga keyword yang juga sering disebut sebagai 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 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 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 setelah sebuah procedure yang dipanggil berakhir atau selesai dijalankan.

Jika anda sudah membaca penduan sebelumnya tentang Konstanta dan Variabel VBA tentunya anda sudah 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 yang menjadi perbedaan utama dalam penyusunan prosedur sub dengan jenis lainnya.

Elemen "Nama_Prosedur"


Bagian ini menunjukkan 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 mempengaruhi apapun dari sebuah prosedur, namun sebaiknya gunakan nama yang mewakili tujuan dari keseluruhan prosedur yang anda buat, sehingga saat sudah banyak prosedur yang anda susun anda tidak kesulitan membedakan maksud atau tujuan dari setiap prosedur yang ada.

Seperti yang sudah dijelaskan pada bagian sebelumnya, nama sebuah prosedur mengikuti beberapa aturan berikut:
  1. Karakter pertama harus berupa Letter Abjad (A-Z,a-z).
  2. Karakter berikutnya 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 berikut: #, $,%, &, @, ^, * dan !.
  4. Tidak ada perbedaan antara huruf besar dan huruf kecil.
  5. Jumlah maksimum karakter yang bisa digunakan adalah 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 bisa 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 prosedur tersebut. Jadi argumen bisa 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 saat ini bisa 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 keinginan anda yang pada intinya adalah hal-hal apa saja yang akan dijalankan oleh prosedure terkait saat 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" menandakan bahwa prosedur harus di akhiri dan tidak dilanjutkan ke baris-baris program selanjutnya. Dengan kata lain saat urutan kode sampai pada "Exit sub" maka urutan kode yang 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


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

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

Sekarang silahkan membuat 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 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 dan Latihan12 seperti 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 adanya keyword "Public" pada prosedur "Latihan11", sedangkan prosedur "Latihan12" tidak.

Sekarang silahkan 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

Setelah berhasil menjalankan kedua prosedur 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 prosedur "Latihan11" dan memunculkan kotak pesan berikut:

Public Sub Procedure VBA Excel

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

Public Sub Procedure VBA Excel

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

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

Sekarang silahkan membuat satu buah module lagi kemudian ubah namanya menjadi "SubProsedure2". Jadi sekarang kita memiliki 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 seperti berikut:

Sub Latihan21()
    Call Latihan11
End Sub

Sub Latihan22()
    Call Latihan12
End Sub

Sub prosedure Latihan21 berisi kode yang memanggil prosedur 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 hasilnya?

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 prosedur sub pada modul SubProsedure2 berikut:

Sub Latihan23()
    Latihan11
    Latihan12
End Sub

Jika sudah selesai membuat Sub Prosedure Latihan23 ini silahkan coba dijalankan.

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

Dari beberapa latihan di atas bisa disimpulkan beberapa hal berikut:
  1. Keyword Public pada statement deklarasi sebuah Sub Procedure menjadikan prosedur tersebut memiliki scope Project-Level, artinya dapat diakses/ dipanggil dari module yang lain bahkan dengan cara yang benar dapat juga diakses dari Project VBA atau file excel yang lain.
  2. Jika sebuah prosedur dideklarasikan tanpa menyertakan keyword public atau Private maka akan dianggap menggunakan keyword public sebagai 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? sudah capek? Jika belum kita lanjutkan latihan dan pembahasan tentang Sub Procedure VBA Excel ini.

Private Sub Procedure


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

Pada modul VBA "SubProsedure1" tambahkan kode berikut 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, sedangkan 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 seperti ini:

Private Sub Procedure VBA Excel

Sekarang kita pindah ke module "SubProsedure2" dan tambahkan Sub prosedur berikut di bawah prosedur "Latihan23" yang sudah ada:

Sub Latihan24()
    Latihan15
End Sub

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

Compile Error Sub or Function not Defined

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

Dari latihan ini dapat disimpulkan bahwa prosedur VBA yang dideklarasikan sebagai Private memiliki 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 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 sudah pernah kita bahas pada seri yang membahas tentang Konstanta dan variabel VBA.

Untuk latihan sekarang silahkan membuat module baru 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 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 yang sama (tidak dari project VBA/file lain) dengan menambahkan statement "Option Private Module" tanpa petik pada awal module.

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

Dropbox
GDrive

*Jika link mati / tidak dapat diakses silahkan lapor via kontak yang tersedia
LINK DOWNLOAD TERKUNCI.
Silahkan SHARE untuk membuka kunci!


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

Jika ada pertanyaan silahkan sampaikan pada kolom komentar yang tersedia dan jangan lupa bagikan laman ini agar semakin banyak kawan-kawan lain yang ikut mendapatkan manfaatnya.

Silahkan bagikan tulisan ini di akun sosial media agar teman-teman Anda juga mendapatkan manfaat yang sama. Apabila ada pertanyaan, saran atau kritik, silahkan disampaikan melalui kolom komentar.

Sub Procedure Pada VBA Excel #06Tutorial lengkap tentang Sub Procedure pada VBA Excel, Elemen penyusun Sub Procedure serta latihan membuat prosedur sub sebagai salah satu jenis prosedur pada VBA yang digunakan untuk menjalankan tugas atau tindakan aksi tertentu