Sub Procedure Pada VBA Excel #06

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 berguru lebih jauh ihwal jenis prosedur Sub.


*FILE LATIHAN YANG dipakai PADA PEMBAHASAN mampu ANDA DOWNLOAD PADA kepingan akhir.

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.

Jika anda menjalankan perintah atau hidangan "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 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:
  1. Sub : memperlihatkan 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 seolah-olah 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 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:
  1. Karakter pertama harus berupa Letter karakter (A-Z,a-z).
  2. Karakter berikutnya mampu berupa huruf, angka atau karakter tanda baca tertentu (tidak semua tanda baca mampu digunakan).
  3. Tidak boleh memakai titik (.) Dan spasi ( ) juga tidak mampu memakai karakter berikut: #, $,%, &, @, ^, * dan !.
  4. Tidak ada perbedaan antara huruf besar dan huruf kecil.
  5. 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.

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

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:

Public Sub Procedure VBA Excel

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

Public Sub Procedure VBA Excel

  • Salah satu Cara memanggil prosedur dari mekanisme lain adalah dengan menggunakan keyword Call diikuti dengan nama mekanisme 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 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:
  1. 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.
  2. Jika sebuah mekanisme dideklarasikan tanpa menyertakan keyword public atau Private maka akan dianggap menggunakan keyword public sebagai acces modifier default.
  3. 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:

Private Sub Procedure VBA Excel

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:

Compile Error Sub or Function not Defined

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.

Anda dapat membuat semua Sub mekanisme 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 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

Postingan populer dari blog ini

Download Add-In Fungsi Terbilang Excel Indonesia dan Inggris

Rumus Vlookup Sebagian Kata atau Teks (VLOOKUP - LEFT, MID, RIGHT)

Rumus Excel RANK, Mencari & menentukan Ranking Peringkat Nilai di Excel