Mengenal Konstanta dan Variabel Pada VBA Excel #05

Seperti yang sudah saya hinggakan pada tutorial sebelumnya, sehabis membahas wacana Tipe data (Data Type) pada VBA kita akan melanjutkan seri tutorial VBA Dasar ini dengan membahas istilah Konstanta dan Variabel pada VBA serta bagaimana memakainya dalam sebuah kode VBA Excel.
Jika anda sudah terbiasa memakai rumus excel aku Yakin Anda akan cepat memahami maksud dari kedua istilah ini (Konstanta dan Variabel). alasannya, barangkali secara tidak sadar sesungguhnya anda juga telah menggunakan Konstanta atau Variabel sebagai belahan dari sebuah elemen rumus excel tertentu.
Wah, jangan bilang anda masih belum faham tantang elemen penyusun rumus excel ya. jika benar demikian, sebelum melanjutkan membaca penjelasan wacana Konstanta dan Variabel VBA ini kami sarankan terlebih dahulu untuk membaca halaman yang menjelaskan tentang fungsi dan formula excel berikut: Pengenalan Rumus dan Fungsi Pada Microsoft Excel.
Selein itu Anda akan kami ajak juga untuk lebih memahami wacana Istilah Scope atau runga lingkup VBA dan istilah lifetime VBA.
Baca-pelan-pelan dan jangan lupa siapkan dulu kopi dan cemilannya.
Konstanta VBA Excel
Bagaimanakah pengertian Konstanta pada VBA Excel?
Pada pembahasan sebelumnya sudah kami hinggakan bahwa pada dasarnya VBA Excel ada kalanya menyimpan data sebagai sebuah objek dan ada kalanya menyimpan data sebagai sebuah Variabel. Penyimpanan data dalam bentuk variabel yang tetap dan tidak berubah biasa disebut sebagai konstanta.
Jadi Konstanta pada VBA Excel ialah kawasan penyimpanan bagi sebuah nilai tertentu yang mana nilai ini tetap dan tidak mampu berubah. Hal ini berarti bahwa dikala digunakan Konstanta bersifat read only yang mana Nilai dalam konstanta ditetapkan ketika melakukan deklarasi konstanta.
Jika Anda menulis sebuah rumus excel, misal:
=A1*2
Maka angka 2 pada rumus tersebut merupakan sebuah konstanta yang tetap, berbeda dengan nilai A1, yang mana dinilainya dpat kita ubah sesuai dengan nilai yang kita inputkan pada sel A1.
Loh bang, kan kita bisa ubah angka 2 dengan angka yang lainnya? Ya benar, namun maksud tidak dapat kita ubah disini bukan seolah-olah itu. Makara sehabis kita menetapkan nilai 2 pada rumus tersebut maka nilai 2 itulah yang digunakan dalam rumus excel. Sedangkan tanpa merubah rumusnya kita dapat mengubah nilai A1. saya yakin anda cukup cerdas untuk menangkap pesan yang ingin saya sampaikan.
Pada VBA Excel, untuk mendeklarasikan sebuah konstanta mengikuti sebuah sintaksis atau Tutorial penulisan tertentu. Berikut klarifikasi lebih lanjutnya.
Cara Mendeklarasikan Konstanta
Konstanta pada VBA Excel ini ada 2 jenis:
- Konstanta Intrinsik, merupakan konstanta yang telah disediakan oleh VBA (Visual Basic For Application). Cirinya diawali dengan kata vb atau xl dibagian awal konstanta, misal: vbYesNo dan xlDialogOpen. Mengenai konstanta default (Intrinsik) ini akan kita bahas pada halaman lain saat sudah dibutuhkan.
- Konstanta Simbolik yaitu konstanta yang nilainya ditentukan oleh user (Anda) dengan menggunakan keyword atau kata kunci "Const". Jenis konstanta VBA inilah yang dimaksudkan dalam pembahasan dihalaman ini.
Konstanta dibuat atau di deklarasikan dengan keyword Const dengan scope level minimal ialah pada scope level Module. perihal scope ini akan kita bahas lebih detail nanti dibagian bawah.
Syntax deklarasi konstanta adalah sebagai berikut:
scope CONST Nama_Konstanta AS DataType = Nilai_Konstanta
Keterangan:
- Elemen Scope bisa anda isi dengan Public atau Private sesuai scope yang anda butuhkan. kalau Elemen ini tidak anda sertakan maka VBA akan menganggap Konstanta dideklarasikan sebagai scope Public.
- CONST merupakan keyword yang menunjukkan bahwa anda sedang mendeklarasikan konstanta pada module atau prosedure VBA yang sedang anda buat
- Nama_Konstanta yaitu nama yang ingin anda gunakan untuk konstanta dimaksud untuk membedakan konstanta satu dengan yang lainnya.
- DataType merupakan jenis atau tipe data yang ingin anda gunakan dalam konstanta tersebut sebagaimana yang sudah dijelaskan pada tutorial sebelumnya.
- Nilai_Konstanta yaitu nilai yang ingin anda berikan untuk konstanta tersebut, tentunya harus sesuai dengan tipe data yang Anda tentukan.
Contoh Deklarasi Konstanta
Berikut contoh sederhana penulisan sebuah deklarasi konstanta:
Public Const Penulis As String = "Kang IM"
Private Const NamaBlog As String = "Kelas Excel"
Untuk saat ini aku kira tidak perlu memperpanjang pembahasan mengenai Konstanta pada VBA. Pada bagian selanjutnya Anda akan admin ajak untuk mengenal dan belajar lebih jauh mengenai Variabel VBA.
Variable VBA Excel
Variabel pada VBA Excel merupakan penggalan yang aku anggap sangat penting untuk Anda kuasai. karena.... karena apa ya? pokoknya penting lah. Hahahaha. Silahkan anda definisikan sendiri pentingnya mempelajari pengertian dan Cara memakai Variabel VBA ini sesudah anda akhir membaca dan mempraktekkan tutorial dasar VBA ini.
Apa sih Variabel VBA itu?
Variabel ialah nama lokasi memori yang digunakan untuk menyimpan atau mewakili nilai tertentu yang mampu diubah selama eksekusi aba-aba VBA.
Pada dasarnya Variabel sama seakan-akan konstanta yang memiliki nama dan tipe data tertentu, bedanya saat isyarat berjalan nilai konstanta tidak mampu diubah sedangkan variabel nilainya mampu diubah untuk memanipulasi data.
Jadi jika konstanta hanya sanggup untuk dibaca atau diambil nilainya (Read), Variabel selain sanggup untuk diambil nilainya juga bisa di tulis atau diubah nilai yang tersimpan didalamnya (Read and Write).
Dari pengertian di atas mampu kita sederhanakan bahwa variabel memiliki 3 karakteristik berikut:
- Memiliki nama tertentu.
- Marupakan lokasi penyimpanan nilai atau data di dalam memori komputer.
- Digunakan oleh sebuah acara.
Dari ketiga karakteristik utama dari variabel di atas aku kira mampu anda Makarakan referensi perihal apa yang perlu Anda pahami setelah tamat membaca panduan mengenai Variabel VBA pada belahan ini supaya Anda sanggup mendeklarasikan variabel dengan tepat pada ketika menuliskan kode-kode Macro VBA Excel, yakni:
- Bagaimana Anda menentukan Tutorial penyimpanan nilai atau data. Pembahasan mengenai hal ini terkait erat perihal bagaimana Anda menentukan VBA datatype (Tipe data) yang anda gunakan serta bagaimana Tutorial mendefinisikan atau mendeklarasikan sebuah variabel.
- Bagaimana Anda memberi nama variabel VBA.
- Bagaimana Anda menentukan dimana sebuah Variabel mampu digunakan atau diakses. Pembahasan hal ini terkait dekat dengan Scope (Ruanglingkup) dan Lifetime of Variables (Umur Variabel).
Sebelum membahas perihal Konstanta dan Variabel Pada VBA Excel ini, aku terlebih dahulu memilih untuk membahas Tipe Data VBA pada artikel tutorial VBA Dasar sebelumnya. Sehingga kali ini aku tidak perlu mengulangnya lagi.
Manfaat Mendeklarasikan Variabel VBA
Sebenarnya Anda mampu saja menyusun isyarat program VBA tanpa melakukan deklarasi Variabel. Hanya saja seolah-olah yang sudah kita ulas pada seri sebelumnya bahwa dengan Mendeklarasikan variabel secara explicit maka aba-aba macro VBA yang kita buat akan berjalan lebih cepat serta lebih efisien dalam penggunaan memori.
Beberapa alasan atau manfaat lain kenapa Anda harus melakukan deklarasi variabel adalah sebagai berikut:
- Memungkinkan anda untuk menggunakan fitur AutoComplete untuk menghindari kesalahan penulisan nama variabel saat melakukan pemanggilan atau bermaksud memakai variabel tertentu.
- Membuat VBA melakukan pemeriksaan error atau kesalahan tambahan. Misal anda mendeklarasikan sebuah variabel sebagai integer karena bermaksud mengisi value atau nilai variabel tersebut dengan sebuah angka, namun Anda mengisinya dengan sebuah teks tanpa sengaja. kalau terjadi hal demikian maka VBA akan menyampaikan berita kesalahan bahwa anda memasukkan nilai yang tidak sesuai pada variabel tersebut.
- Mendeklarasikan variabel akan meningkatkan Readability atau tingkat keterbacaan sebuah isyarat. Hal ini menyebabkan proses Debug menjadi lebih praktis dan mengurangi resiko kesalahan atau error tertentu.
Inilah alasan kenapa Anda harus mengaktifkan opsi "Option Explicit" seperti yang sudah disampaikan pada seri pertama tutorial VBA ini. Statemen Option Explicit yang Anda gunakan pada setiap awal sebuah modul akan memaksa anda untuk selalu mendefinisikan atau melakukan deklarasi Variabel.
Hal lain yang kami kira cukup bermanfaat ialah bahwa dengan memakai statemen Option Explicit ini, Visual Basic Editor secara otomatis mengoreksi ejaan nama variabel VBA yang anda buat.
Cara Mendeklarasikan Variabel VBA
Sekarang, bagaimana Tutorial melakukan deklarasi variabel? Syntax untuk mendeklarasikan Variabel VBA ialah sebagai berikut:
Keyword Nama_Variabel As Tipe_Data
Keterangan:
- "Keyword" yaitu salah satu dari statemen berikut: Dim, Public, Private atau Static.
- "Nama_Variabel" ialah nama yang ingin Anda gunakan sebagai pengenal variabel.
- "Tipe_Data" ialah referensi ke tipe data dari variabel. Meskipun Elemen ini opsional atau boleh tidak digunakan, saya sarankan Anda untuk selalau memakainya, kecuali Anda benar-benar resah Tipe Data apa yang harus anda gunakan pada variable yang anda deklarasikan.
Contoh deklarasi Variabel VBA adalah sebagai berikut:
Dim nomor_urut As Long
Dim nomor_kode As String
Kode di atas bermaksud mendeklarasikan 2 buah Variabel dengan nama nomor_urut dan nomor_kode. Variabel nomor_urut kita tentukan menggunakan tipe data Long, sedangkan nomor_kode kita tentukan sebagai String atau teks.
Agar baris penulisan isyarat lebih ringkas, Anda dapat juga menggunakan 1 keyword Dim untuk mendeklarasikan beberapa variabel sekaligus dengan memisahkan antar variabel mengunakan koma(,). polanya adlaah sebagai berikut:
Dim nomor_urut As Long, nomor_kode As String
Dulu (bahkan sampai kini juga sih) kami sering meringkas penulisan arahan deklarasi variabel semisal berikut:
Dim nomor_A, nomor_B As Integer
Dengan maksud mendeklarasikan vaiabel nomor_A dan nomor_B sebagai nilai Integer.
Perlu Anda ketahui bahwa pada penulisan statement deklarasi variable semacam ini, VBA hanya menentukan Variabel nomor_B sebagai Integer, sedangkan untuk variabel nomor_A karena tipe data tidak disebutkan maka akan dianggap sebagai Variant sebagai tipe data devault pada VBA.
Jadi, penulisan kode deklarasi yang sempurna seharusnya ialah sebagai berikut:
Dim nomor_A As Integer, nomor_B As Integer
Aturan Menamai Variabel VBA
Pada dasarnya anda bebas menamai sebuah variabel. Namun akan lebih baik jika nama tersebut sekaligus mencerminkan nilai atau isi dari variabel tersebut. misalnya gunakan abreviasi tipe data kemudian disambung dengan Nama yang menggambarkan nilai variabel tersebut.
Berikut beberapa akronim yang umum digunakan sebagai prefix atau awalan nama Variabel:
Data Type | Prefix | Alternatif |
---|---|---|
String | str | - |
Boolean | bln | b |
Double | dbl | d |
Integer | int | i |
Long | lng | l |
Single | sng | s |
Date/Time | dt | - |
Currency | cur | c |
Object | obj | - |
Variant | var | v |
Type (User-Defined) | typ | u |
Contoh Nama Variabel:
- Untuk menamai variabel nomor urut dengan tipe Integer pakailah nama: intNoUrut, int_No_Urut atau int_NoUrut.
- Untuk Variabel yang menyimpan nama orang misalnya gunakan nama str_Nama atau s_Nama yang mana str atau sadalah akronim dari tipe data String.
Selain itu ada beberapa hukum khusus yang harus Anda patuhi ketika menentukan nama sebuah Variabel:
- Menggunakan aksara sebagai karakter pertama. Karakter selanjutnya mampu berupa karakter, angka, dan beberapa karakter tanda baca contohnya underscore (_).
- Nama variabel dilarang melebihi 255 karakter.
- Nama variabel VBA dilarang mengandung spasi (), periode/titik (.), Operator matematika (misalnya +, -, /, ^ atau *), operator perbandingan (seperti =, < atau >) atau karakter tanda baca tertentu (seperti jenis-deklarasi karakter @, #, $,%, & dan !).
- Nama variabel VBA tidak dapat sama dengan keyword atau istilah apa pun sudah ada atau digunakan secara default oleh sistem VBA Excel. contohnya: Sub, Dim, With, End, Next, For dan lain sebagainya.
- Visual Basic for Applications tidak membedakan antara aksara besar dan aksara kecil. contohnya, "A" sama dengan "a".
- Nama setiap variabel VBA yang digunakan harus unik dalam scope yang relevan. Artinya nama variabel tingkat prosedur harus unik dalam prosedur yang relevan, nama variabel level modul harus unik dalam modulnya, dan seterusnya.
Cara Memasukkan Nilai ke Dalam Variabel VBA
Setelah mendeklarasikan Variabel, bagaimana Tutorial memasukkan nilai ke dalam variebel tersebut?
Jika Anda membaca tutorial ini secara urut dari seri pertama, saya yakin anda sudah faham bahwa pada dasarnya tipe variabel itu ada 2 macam. yakni variabel ber-datatype object dan non object. Untuk masing-masing tipe ini Tutorial memasukkan nilainya berbeda:
Variabel ber-datatype selain object Tutorialnya ialah dengan hidanganliskan nama variabel kemudian diikuti tanda sama dengan (=) dan nilai dari variabel tersebut.
Nama_Variabel = Ekspresi_Nilai_Variabel
Contoh:
Dim nomor_urut As Long, nomor_kode As String
nomor_urut = 123
nomor_kode = "A123"
Untuk Variabel ber-datatype selain object Tutorialnya ialah dengan menggunakan keyword "Set" diikuti nama variabel, kemudian diikuti tanda sama dengan (=) dan nilai dari variabel tersebut.
Set Nama_Variabel = Ekspresi_Nilai_Variabel
Contoh:
Dim range_Data As Range
Set range_Data = Sheets("Sheet1").Range("A1")
Nah, mudah bukan? untuk sementara cukup ini dulu tentang bagaimana Cara memasukkan nilai ke dalam sebuah variabel. teladan-contoh lainnya akan dijelaskan pada potongan-bagian penjelasan lain. Yang perlu Anda catat, Tambahkan keyword/statement SET jika data pada variabel tersebut adalah berupa object VBA.
Keyword Dim, Static, Public dan Private Pada Deklarasi Variabel VBA
Seperti yang sudah dijelaskan di atas, Statemen atau keyword yang mampu digunakan untuk mendeklarasikan sebuah variabel ialah sebagai berikut, tentunya masing-masing mempunyai tujuan tertentu:
- Dim
- Static
- Public
- Private
Dari keempat keyword tersebut, Statement DIM adalah yang paling umum digunakan. Sedangkan 3 keyword berikutnya digunakan untuk mendeklarasikan variabel dengan karakteristik khusus yang menyangkut ruang lingkup (scope) atau masa pakainya (lifetime).
Lalu apa maksud dari masing-masing statement atau keyword di atas?
Bagian ini memang agak sulit dijelaskan, Makara jikalau Anda merasa kebingungan untuk memahaminya saya rasa masuk akal. Hal ini lebih disebabkan keterbatasan kemampuan aku dalam menjelaskan dan bukan lantaran tingkat kecerdasan Anda. Soo, silahkan ambil nafas panjang terlebih dahulu.
Perbedaan utama antara variabel VBA yang dideklarasikan menggunakan Statement Dim dan Static yaitu kapan variabel tersebut direset atau dibuang dari memori. Hal ini menyangkut tentang lifetime seakan-akan yang sudah aku singgung di cuilan atas.
Sebagai hukum umum ketika sebuah variabel dideklarasikan dengan keyword Dim, semua variabel tingkat-prosedur direset ulang ketika prosedur yang relevan berakhir. Sedangkan Variabel static tidak demikain (tidak direset/dibuang).
Adapun Statement Public dan Private lebih kuat terhadap scoope atau ruang lingkup dari sebuah variabel. Scoope disini maksudnya adalah kepingan mana dari sebuah project VBA dapat memakai atau mengakses variabel tersebut. Apakah hanya pada mekanisme tertentu, semua mekanisme dalam sebuah module atau juga mampu digunakan oleh mekanisme lain meskipun berbeda module.
Tentang scope ini sudah sedikit kami singgung pada seri tutorial VBA Dasar sebelumnya, silahkan dibaca terlebih dahulu bila Anda belum sempat membacanya:Gambaran Umum Scope.
Jika sudah anda baca, admin kira bagian ini akan lebih praktis dijelaskan dengan membuat sebuah file latihan. Jadi silahkan buat sebuah file gres kemudian simpan dengan nama file "Kelas Excel-Latihan VBA 3.xlsm" pada folder yang sudah kita siapkan sebelumnya. Jangan lupa pilih ekstensi .xlsm yang mendukung format macro VBA Excel.
Bentar, admin tak nyeduh kopi dulu.
Menentukan Scoope Variable VBA
Pada belahan sebelumnya sudah dijelaskan bahwa Scope variabel VBA ialah mengacu pada istilah ihwal modul dan prosedur mana yang dapat memakai sebuah variabel. Dengan kata lain, Scope menentukan di mana variabel itu mampu digunakan pada sebuah project VBA.
Pada seri yang lalu sudah dijelaskan sebuah workbook Excel dapat mempunyai beberapa modul dan pada setiap modul dapat diisi dengan beberapa prosedur VBA.
Pada sebuah aplikasi VBA yang sederhana, Anda mungkin cukup menggunakan satu modul dengan beberapa prosedur. Namun, dengan bertambahnya waktu mampu Kaprikornus pekerjaan Anda dengan VBA mulai menjadi lebih kompleks dan membutuhkan banyak module serta prosedure VBA.
Pada perkara yang lebih kompleks, barangkali Anda tidak ingin semua variabel VBA mampu diakses oleh setiap modul dan prosedur. Kaprikornus beberapa variabel tertentu hanya boleh digunakan oleh prosedure tertentu baik pada module yang sama atau prosedure pada modul yang lain.
Penentuan ruang lingkup atau scope variabel VBA secara tepat akan memungkinkan Anda untuk melakukan hal semacam ini.
Jika pada bahasan prosedure dan module kami menyinggung ada 4 level scope, untuk bahasan kali ini akan dicontohkan 3 saja yakni:
- Procedure-Level atau Local VBA Variable
- Module-Level atau Private VBA Variable
- Project-Level atau Public VBA Variable
*Semoga saya tidak salah menggunakan istilahnya. jikalau memang kurang sempurna Silahkan dikoreksi dengan membandingkannya dengan tutorial sejenis pada web atau buku wacana VBA.
Scope Procedure-Level atau Local VBA
Seperti yang ditunjukkan oleh namanya, variabel tingkat mekanisme atau variabel lokal hanya mampu digunakan dalam prosedur di mana sebuah variable dideklarasikan. Hal ini berlaku untuk prosedur jenis Sub atau Function.
Cara melaksanakan deklarasi variabel untuk scope level prosedur ini umumnya adalah tepat dibawah deklarasi atau statement prosedur. Dengan Cara semacam ini anda dapat memakai nama yang sama untuk beberapa variabel pada prosedur yang berbeda.
File "Kelas Excel-Latihan VBA 3.xlsm" tadi sudah dibuat kan? Okey, selanjutnya silahkan dinikmati kopi dan cemmilannya.
Berikutnya silahkan lakukan latihan berikut:
- Pada file yang telah kita buat tadi buatlah sebuah module dengan nama "Module1".
- Pada Module1 ini tuliskan instruksi VBA berikut ini:
Option Explicit Sub Latihan_Lokal_Variabel1() Dim int_Angka1 As Integer Dim int_Angka2 As Integer int_Angka1 = 5 int_Angka2 = int_Angka1 + 10 MsgBox "Nilai Variabel int_Angka1 ialah: " & int_Angka1 & Chr(10) & _ "Nilai Variabel int_Angka2 ialah: " & int_Angka2 End Sub Sub Latihan_Lokal_Variabel2() Dim int_Angka1 As Integer Dim int_Angka2 As Integer int_Angka1 = 10 int_Angka2 = int_Angka1 * 2 MsgBox "Nilai Variabel int_Angka1 ialah: " & int_Angka1 & Chr(10) & _ "Nilai Variabel int_Angka2 ialah: " & int_Angka2 End Sub
- Jalankan masing-masing prosedur di atas.
* Pastikan seebelum dan setelah penulisan karakter & ada spasinya.
Pada Module1 tersebut kita menciptakan 2 buah prosedur dengan nama Latihan_Lokal_Variabel1 dan Latihan_Lokal_Variabel2. Pada masing-masing mekanisme ini kita mendeklarasikan 2 buah Variabel dengan nama int_Angka1 dan int_Angka2.
Saat dijalankan mekanisme pertama menghasilkan kotak pesan sebagai berikut:

Sedangkan prosedur kedua menampilkan kotak pesan yang berbeda sebagai berikut:

Hal ini menunjukkan bahwa masing-masing variabel berjalan secara lokal pada mekanismee terkait dan segera dihapus nilainya dikala mekanisme berakhir.
Selanjutnya silahkan tambahkan sebuah prosedure lain berikut ini pada Module1 dibawah kedua mekanisme tadi:
Sub Latihan_Lokal_Variabel3()
MsgBox "Nilai Variabel int_Angka1 yaitu: " & int_Angka1 & Chr(10) & _
"Nilai Variabel int_Angka2 yaitu: " & int_Angka2
End Sub
Selanjutnya, silahkan jalankan prosedur Latihan_Lokal_Variabel3. Apa yang terjadi?

Gambar di atas menujukkan bahwa Latihan_Lokal_Variabel3 tidak mengenal Variabel int_Angka1 dan int_Angka2, karena Variabel int_Angka1 dan int_Angka1 yang sudah anda deklarasikan sebelumnya hanya tersedia untuk prosedure terkait dimana Variabel tersebut dideklarasikan.
Selanjutnya silahkan hapus statement "Option Explicit" Pada bagian atas Module1, kemudian jalankan masing-masing mekanismee pada module tersebut secara bergantian.
Meskipun instruksi tidak error pada dasarnya, VBA mendeklarasikan int_Angka1 dan int_Angka2 secara Implicit. Yang berarti bahwa tipe data yang digunakan untuk kedua variabel pada mekanisme Latihan_Lokal_Variabel3 yaitu Variant. Selain itu nilai kedua Variabel pada mekanisme ini masih kosong, karena kita memng belum memasukkan nilai apapun pada kedua Variabel VBA ini.
Dari sini Anda sudah mampu mengambil pemahaman wacana Variabel dalam Scope Level Procedur atau Local VBA kan? intinya Sebuah Variabel yang hanya bisa digunakan pada prosedur terkait dan tidak bisa dipanggil untuk mekanisme lainnya.
Lalu bagaimana jika Anda menghendaki VBA mampu mengakses sebuah Variabel dari mekanismee lain?
Scope Module-Level atau Private VBA
Jika pada Scope level prosedure sebuah Variabel hanya bisa digunakan oleh mekanisme terkait, pada variabel scope level-modul, sebuah Variabel tersedia juga untuk digunakan dalam prosedur lain asal masih dalam modul yang sama di mana variabel VBA tersebut dideklarasikan.
Untuk lebih memahaminya silahkan buat sebuah module baru dengan nama "Module2" pada file yang sama. Pada module tersebut tuliskan kode VBA berikut:
Option Explicit
Dim str_Teks As String
Dim int_Angka As Integer
Sub Latihan_LevelModule_Variabel1()
str_Teks = "Belajar VBA Excel Dasar"
int_Angka = 1439
MsgBox "Latihan_LevelModule_Variabel1" & Chr(10) & Chr(10) & _
"Nilai Variabel str_Teks ialah: " & str_Teks & Chr(10) & _
"Nilai Variabel int_Angka yaitu: " & int_Angka
End Sub
Sub Latihan_LevelModule_Variabel2()
str_Teks = "www.kelasexcel.id"
int_Angka = 2018
MsgBox "Latihan_LevelModule_Variabel2" & Chr(10) & Chr(10) & _
"Nilai Variabel str_Teks adalah: " & str_Teks & Chr(10) & _
"Nilai Variabel int_Angka adalah: " & int_Angka
End Sub
Sub Latihan_LevelModule_Variabel3()
MsgBox "Latihan_LevelModule_Variabel3" & Chr(10) & Chr(10) & _
"Nilai Variabel str_Teks ialah: " & str_Teks & Chr(10) & _
"Nilai Variabel int_Angka ialah: " & int_Angka
End Sub
Jika sudah, selanjutnya silahkan jalankan masing-masing mekanismee di atas secara bergantian dengan urutan sebagai berikut. Sebelumnya tekan tombol reset pada hidangan VBE untuk memastikan semua Variabel telah di reset ulang:
- Latihan_LevelModule_Variabel3
- Latihan_LevelModule_Variabel1 kemudian Latihan_LevelModule_Variabel3
- Latihan_LevelModule_Variabel2 kemudian Latihan_LevelModule_Variabel3

Dari latihan ini anda bisa mampukan bahwa dengan melakukan deklarasi Variabel pada awal baris deklarasi atau sebelum mendeklarasikan mekanisme, sempurnanya dibawah statement "Option Explicit", maka Variabel tersebut memliki scope level module.
Artinya Variabel VBA tersebut bisa dikenali oleh semua mekanisme dalam module yang sama dan tidak terjadi error seakan-akan pada acuan latihan sebelumnya pada bagian Scope Procedure-Level atau Local VBA.
Pada acuan deklarasi diatas, untuk menerima scope level module selain mendeklarasikan dengan keyword Dim Anda juga dapat mendeklarasikan Variabel tersebut dengan statement Private. Sehingga aba-aba:
Dim str_Teks As String
Dim int_Angka As Integer
Bisa juga anda tulis dengan
Private str_Teks As String
Private int_Angka As Integer
Oke, sudah mampu memahami variabel scope modul ya?
Sekarang buat 1 Modul lagi dengan nama "Module3". Kemudian tuliskan isyarat Macro VBA Excel berikut pad modul tersebut:
Option Explicit
Sub Latihan_LevelPublic_Variabel()
MsgBox "Latihan_LevelModule_Variabel3" & Chr(10) & Chr(10) & _
"Nilai Variabel str_Teks yaitu: " & str_Teks & Chr(10) & _
"Nilai Variabel int_Angka ialah: " & int_Angka
End Sub
Kemudian coba jalankan mekanisme Latihan_LevelPublic_Variabel ini.
Error ya? Soo bagaimana Tutorial supaya kita bisa menggunakan sebuah Variabel lintas Modul? Kita lanjutkan pembahasan pada belahan selanjutnya.
Scope Project-Level atau Public VBA
Sampai tahap ini Anda sudah mampu memakai Variabel pada level prosedur dan Modul. sekarang kita akan lanjutkan untuk menciptakan sebuah Variabel Level Project dimana scope levelnya lebih luas bila dibandingkan 2 scope sebelumnya.
Untuk mendeklarasikan variabel VBA pada scope Public, deklarasinya harus memenuhi persyaratan berikut:
- Deklarasikan variabel tersebut seolah-olah deklarasi tingkat modul yang dituliskan pada awal modul diluar semua prosedur.
- Gunakan Statement Public sebagai pengganti Statament Dim.
- Deklarasi variabel harus dibuat dalam modul VBA standar.
Variabel VBA yang deklarasinya memenuhi ketentuan di atas tersedia untuk prosedur apa pun, bahkan dalam modul berbeda dalam Workbook Excel yang sama.
Oke kini kita praktekkan ya?
Silahkan buka Module2 kemudian ubah keyword Dim atau Private jika sudah Anda ubah pada deklarasi variabel str_Teks dan int_Angka dengan statemen Public. sehingga pada module2 tersebut deklarasi kedua variabel tersebut menjadi:
Public str_Teks As String
Public int_Angka As Integer
Nah kini, coba buka Module3 kemudian jalankan prosedur Latihan_LevelPublic_Variabel.
Sekarang tidak error lagi bukan? Hanya saja nilai masing-masing variabel masih kosong, alasannya kita memang belum memasukkan nilai pada masing-masing variabel tersebut.
Selanjutnya coba jalankan prosedur Latihan_LevelModule_Variabel1 atau Latihan_LevelModule_Variabel2 pada Module2 untuk memberikan nilai pada kedua variabel kemudian jalankan lagi prosedur Latihan_LevelPublic_Variabel pada module3.
Sampai disini anda sudah memahami wacana bagaimana mengatur scope atau ruang lingkup sebuah variabel.
Yang perlu Anda catat sebaiknya gunakan scope yang sesempit mungkin, jikalau hanya butuh untuk level mekanismee maka atur variabel untuk level prosedure saja. bila sebuah variabel juga dibutuhkan pada level Module saja, maka jangan di atur untuk lebih luas sampai pada scope Public/Project.
Barangkali anda bertanya, loch kog sehabis prosedure berakhir nilai variabel tadi masih tersimpan dan tidak hilang dari memori?
Pertanyaan ini ada kaitannya dengan istilah Lifetime pada VBA. bila sudah, mari kita lanjutkan pembahasan.
Memmahami Lifetime Variable VBA
Istilah "lifetime" atau terkadang disebut "life" saja mengacu pada berapa usang sebuah variabel disimpan dalam memori komputer.
Pada dasarnya Scope sebuah variabel, selain besar lengan berkuasa terhadap dimana variabel tersebut mampu di akses atau digunakan, namun juga mensugesti keadaan di mana variabel dihapus atau tidak dari memori.
Secara umum ada 2 aturan dasar mengenai hal ini:
- Variabel VBA tingkat mekanisme yang dinyatakan dengan pernyataan Dim dihapus atau direset dari memori ketika prosedur tersebut selesai (End Sub).
- Tingkat mekanisme Variabel static, variabel tingkat modul, dan variabel public mempertahankan nilainya antara panggilan mekanisme (Tidak dihapus/direset).
Agar lebih terperinci Lakukan aktivitas berikut:
- Buat sebuah modul gres dengan nama "Module4" pada file yang telah kita buat sebelumnya tadi.
- Buat sebuah mekanisme public dengan nama "TestVarabelStatic".
- Didalam mekanismee tadi deklarasikan 2 buah variabel, masing-masing dengan nama int_Var1 dan int_Var2. Gunakan keyword Dim untuk int_Var1 dan keyword static untuk int_Var2.
- Setelah mendeklarasikan kedua variabel tadi, isi nilai masing-masing nilai dengan menjumlahkan variabel tersebut dengan angka 5.
- Selanjutnya kita tes nilai masing-masing variabel dengan memanggilnya pada sebuah message box dengan instruksi berikut:
MsgBox "Nilai Variabel int_Var1 ialah: " & int_Var1 & Chr(10) & _ "Nilai Variabel int_Var2 adalah: " & int_Var2
- Akhiri mekanismee tersebut dengan statement penutup "End Sub"
Apabila langkah-langkah yang anda lakukan benar maka arahan yang Anda buat pada Module1 akan terlihat seakan-akan ini:
Option Explicit
Public Sub TestVariabelStatic()
Dim int_Var1 As Integer
Static int_Var2 As Integer
int_Var1 = int_Var1 + 5
int_Var2 = int_Var2 + 5
MsgBox "Nilai Variabel int_Var1 adalah: " & int_Var1 & Chr(10) & _
"Nilai Variabel int_Var2 yaitu: " & int_Var2
End Sub
Setelah final silahkan coba jalankan prosedur tersebut.
Pada ketika dijalankan pertama kali terlihat bahwa nilai dari Variabel int_Var1 dan int_Var2 adalah 5. seperti terlihat pada kotak pesan berikut:

Selanjutnya, silahkan jalankan lagi mekanismee tersebut dan lihat risikonya.
Pada dikala dijalankan kedua kali ternyata nilai Variabel int_Var1 tetap 5 sedangkan nilai int_Var2 menjadi 10 dan terus berubah bertambah 5 ketika dijalankan ulang. Kenapa demikian?

Hal ini disebabkan Variabel int_Var2 kita deklarasikan sebagai Static, sehingga pada akhir mekanismee nilai 5 dari Variabel int_Var2 tetap tersimpan di dalam memori. dikala Anda menjalankan prosedure tersebut untuk kedua kalinya maka nilai tersebut ditambahkan dengan angka 5 sesuai nilai yang diberikan pada int_Var2 tersebut (int_Var2 = int_Var2 + 5).
Silahkan coba menjalankan prosedur TestVarabelStatic beberapa kali dan perhatikan nilai yang dihasilkan.
Lalu bagaimana untuk mereset nilai Static tadi? Untuk contoh perkara ini gunakan tombol hidangan reset pada VBE seolah-olah yang sudah dijelaskan sebelumnya.
Dari pola kasus sederhana di atas, saya yakin anda sudah menerima ilustrasi ihwal maksud dari lifetime yang aku singgung di atas.
Selain digunakan pada Variabel. Keyword atau statement Static bisa juga digunakan pada level mekanisme, hal ini akan menimbulkan semua Variabel didalam mekanismee tersebut memiliki lifetime yang lebih usang atau tidak segera di hapus saat akibat prosedur.
Pada module4 di bawah balasan mekanismee tadi tambahkan script atau arahan VBA berikut:
Public Static Sub TestProsedureStatic()
Dim int_Var1 As Integer
Dim int_Var2 As Integer
int_Var1 = int_Var1 + 5
int_Var2 = int_Var2 + 5
MsgBox "Nilai Variabel int_Var1 adalah: " & int_Var1 & Chr(10) & _
"Nilai Variabel int_Var2 yaitu: " & int_Var2
End Sub
Kemudian silahkan coba jalankan mekanismee "TestProsedureStatic" ini beberapa kali. Apa yang terjadi? Ternyata meskipun tidak kita deklarasikan sebagai Static, Variabel int_Var1 dan int_Var2 pada mekanisme ini diperlakukan layaknya sebuah variabel static bukan?
Baiklah, pembahasan mengenai Konstanta dan Variabel VBA pada seri tutorial VBA ini saya kira sudah cukup panjang dan melelahkan. Untuk itu admin sudahi dulu.
Untuk melengkapi pembahasan kali ini silahkan download File latihan di bawah ini :
LINK DOWNLOAD TERKUNCI.
Silahkan SHARE untuk membuka kunci!
Semoga bermanfaat dan menambah semangat belajar VBA Anda. Jangan lupa di Share kalau ada manfaatnya, sehingga mitra-kawan lain juga ikut mencicipi keuntungannya. hingga jumpa pada seri berikutnya. Salam Kelas Excel.
Komentar
Posting Komentar