Mengenal Konstanta Dan Variabel Pada Vba Excel #05
Seperti yang sudah saya sampaikan 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 menggunakannya dalam sebuah aba-aba VBA Excel.
Jika anda sudah terbiasa memakai rumus excel saya Yakin Anda akan cepat memahami maksud dari kedua istilah ini (Konstanta dan Variabel). Sebab, barangkali secara tidak sadar sebetulnya anda juga telah memakai 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 klarifikasi wacana Konstanta dan Variabel VBA ini saya sarankan terlebih dahulu untuk membaca halaman yang menjelaskan wacana 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 saya sampaikan bahwa intinya 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.
Makara Konstanta pada VBA Excel ialah daerah penyimpanan bagi sebuah nilai tertentu yang mana nilai ini tetap dan tidak sanggup berubah. Hal ini berarti bahwa dikala digunakan Konstanta bersifat read only yang mana Nilai dalam konstanta ditetapkan dikala melaksanakan 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 sanggup kita ubah disini bukan menyerupai itu. Makara sehabis kita memutuskan nilai 2 pada rumus tersebut maka nilai 2 itulah yang digunakan dalam rumus excel. Sedangkan tanpa merubah rumusnya kita sanggup 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 cara 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 dikala sudah diperlukan.
- Konstanta Simbolik ialah konstanta yang nilainya ditentukan oleh user (Anda) dengan memakai 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. Tentang scope ini akan kita bahas lebih detail nanti dibagian bawah.
Syntax deklarasi konstanta ialah 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. Jika Elemen ini tidak anda sertakan maka VBA akan menganggap Konstanta dideklarasikan sebagai scope Public.
- CONST merupakan keyword yang memperlihatkan bahwa anda sedang mendeklarasikan konstanta pada module atau prosedure VBA yang sedang anda buat
- Nama_Konstanta ialah 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 ialah 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 = ""
Untuk dikala ini saya kira tidak perlu memperpanjang pembahasan mengenai Konstanta pada VBA. Pada belahan selanjutnya Anda akan saya ajak untuk mengenal dan berguru lebih jauh mengenai Variabel VBA.
Variable VBA Excel
Variabel pada VBA Excel merupakan belahan yang saya anggap sangat penting untuk Anda kuasai. Sebab.... lantaran apa ya? pokoknya penting lah. Hahahaha. Silahkan anda definisikan sendiri pentingnya mempelajari pengertian dan cara memakai Variabel VBA ini sehabis anda selesai 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 sanggup diubah selama sanksi aba-aba VBA.
Pada dasarnya Variabel sama menyerupai konstanta yang mempunyai nama dan tipe data tertentu, bedanya dikala aba-aba berjalan nilai konstanta tidak sanggup diubah sedangkan variabel nilainya sanggup diubah untuk memanipulasi data.
Makara bila konstanta hanya bisa untuk dibaca atau diambil nilainya (Read), Variabel selain bisa untuk diambil nilainya juga bisa di tulis atau diubah nilai yang tersimpan didalamnya (Read and Write).
Dari pengertian di atas sanggup kita sederhanakan bahwa variabel mempunyai 3 karakteristik berikut:
- Memiliki nama tertentu.
- Marupakan lokasi penyimpanan nilai atau data di dalam memori komputer.
- Digunakan oleh sebuah program.
Dari ketiga karakteristik utama dari variabel di atas saya kira sanggup anda jadikan pola wacana apa yang perlu Anda pahami sehabis selesai membaca panduan mengenai Variabel VBA pada belahan ini supaya Anda bisa mendeklarasikan variabel dengan sempurna pada dikala menuliskan kode-kode Macro VBA Excel, yakni:
- Bagaimana Anda menentukan cara penyimpanan nilai atau data. Pembahasan mengenai hal ini terkait dekat wacana bagaimana Anda menentukan VBA datatype (Tipe data) yang anda gunakan serta bagaimana cara mendefinisikan atau mendeklarasikan sebuah variabel.
- Bagaimana Anda memberi nama variabel VBA.
- Bagaimana Anda menentukan dimana sebuah Variabel sanggup digunakan atau diakses. Pembahasan hal ini terkait dekat dengan Scope (Ruanglingkup) dan Lifetime of Variables (Umur Variabel).
Sebelum membahas wacana Konstanta dan Variabel Pada VBA Excel ini, saya terlebih dahulu menentukan untuk membahas Tipe Data VBA pada artikel tutorial VBA Dasar sebelumnya. Sehingga kali ini saya tidak perlu mengulangnya lagi.
Manfaat Mendeklarasikan Variabel VBA
Sebenarnya Anda bisa saja menyusun aba-aba kegiatan VBA tanpa melaksanakan deklarasi Variabel. Hanya saja menyerupai 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 melaksanakan deklarasi variabel ialah sebagai berikut:
- Memungkinkan anda untuk memakai fitur AutoComplete untuk menghindari kesalahan penulisan nama variabel dikala melaksanakan pemanggilan atau bermaksud memakai variabel tertentu.
- Membuat VBA melaksanakan investigasi error atau kesalahan tambahan. Misal anda mendeklarasikan sebuah variabel sebagai integer lantaran bermaksud mengisi value atau nilai variabel tersebut dengan sebuah angka, namun Anda mengisinya dengan sebuah teks tanpa sengaja. Jika terjadi hal demikian maka VBA akan memperlihatkan informasi kesalahan bahwa anda memasukkan nilai yang tidak sesuai pada variabel tersebut.
- Mendeklarasikan variabel akan meningkatkan Readability atau tingkat keterbacaan sebuah kode. Hal ini mengakibatkan proses Debug menjadi lebih gampang dan mengurangi resiko kesalahan atau error tertentu.
Inilah alasan kenapa Anda harus mengaktifkan opsi "Option Explicit" menyerupai 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 melaksanakan deklarasi Variabel.
Hal lain yang saya 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 cara melaksanakan deklarasi variabel? Syntax untuk mendeklarasikan Variabel VBA ialah sebagai berikut:
Keyword Nama_Variabel As Tipe_Data
Keterangan:
- "Keyword" ialah salah satu dari statemen berikut: Dim, Public, Private atau Static.
- "Nama_Variabel" ialah nama yang ingin Anda gunakan sebagai pengenal variabel.
- "Tipe_Data" ialah tumpuan ke tipe data dari variabel. Meskipun Elemen ini opsional atau boleh tidak digunakan, saya sarankan Anda untuk selalau menggunakannya, kecuali Anda benar-benar galau Tipe Data apa yang harus anda gunakan pada variable yang anda deklarasikan.
Contoh deklarasi Variabel VBA ialah 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 memakai tipe data Long, sedangkan nomor_kode kita tentukan sebagai String atau teks.
Agar baris penulisan aba-aba lebih ringkas, Anda sanggup juga memakai 1 keyword Dim untuk mendeklarasikan beberapa variabel sekaligus dengan memisahkan antar variabel mengunakan koma(,). Contohnya adlaah sebagai berikut:
Dim nomor_urut As Long, nomor_kode As String
Dulu (bahkan hingga kini juga sih) saya sering meringkas penulisan aba-aba 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 lantaran tipe data tidak disebutkan maka akan dianggap sebagai Variant sebagai tipe data devault pada VBA.
Jadi, penulisan aba-aba 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 bila 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 abreviasi 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 contohnya gunakan nama str_Nama atau s_Nama yang mana str atau sadalah abreviasi dari tipe data String.
Selain itu ada beberapa aturan khusus yang harus Anda patuhi dikala menentukan nama sebuah Variabel:
- Menggunakan abjad sebagai karakter pertama. Karakter selanjutnya bisa berupa huruf, 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 sanggup sama dengan keyword atau istilah apa pun sudah ada atau digunakan secara default oleh sistem VBA Excel. Misalnya: Sub, Dim, With, End, Next, For dan lain sebagainya.
- Visual Basic for Applications tidak membedakan antara abjad besar dan abjad kecil. Misalnya, "A" sama dengan "a".
- Nama setiap variabel VBA yang digunakan harus unik dalam scope yang relevan. Artinya nama variabel tingkat mekanisme harus unik dalam mekanisme yang relevan, nama variabel level modul harus unik dalam modulnya, dan seterusnya.
Cara Memasukkan Nilai ke Dalam Variabel VBA
Setelah mendeklarasikan Variabel, bagaimana cara memasukkan nilai ke dalam variebel tersebut?
Jika Anda membaca tutorial ini secara urut dari seri pertama, saya yakin anda sudah faham bahwa intinya tipe variabel itu ada 2 macam. Yakni variabel ber-datatype object dan non object. Untuk masing-masing tipe ini cara memasukkan nilainya berbeda:
Variabel ber-datatype selain object caranya ialah dengan menuliskan 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 caranya ialah dengan memakai 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, gampang bukan? untuk sementara cukup ini dulu wacana bagaimana cara memasukkan nilai ke dalam sebuah variabel. Contoh-contoh lainnya akan dijelaskan pada bagian-bagian klarifikasi lain. Yang perlu Anda catat, Tambahkan keyword/statement SET bila data pada variabel tersebut ialah berupa object VBA.
Keyword Dim, Static, Public dan Private Pada Deklarasi Variabel VBA
Seperti yang sudah dijelaskan di atas, Statemen atau keyword yang bisa digunakan untuk mendeklarasikan sebuah variabel ialah sebagai berikut, tentunya masing-masing mempunyai tujuan tertentu:
- Dim
- Static
- Public
- Private
Dari keempat keyword tersebut, Statement DIM ialah 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, jadi bila Anda merasa kebingungan untuk memahaminya saya rasa wajar. Hal ini lebih disebabkan keterbatasan kemampuan saya dalam menjelaskan dan bukan lantaran tingkat kecerdasan Anda. Soo, silahkan ambil nafas panjang terlebih dahulu.
Perbedaan utama antara variabel VBA yang dideklarasikan memakai Statement Dim dan Static ialah kapan variabel tersebut direset atau dibuang dari memori. Hal ini menyangkut wacana lifetime menyerupai yang sudah saya singgung di belahan atas.
Sebagai aturan umum ketika sebuah variabel dideklarasikan dengan keyword Dim, semua variabel tingkat-prosedur direset ulang ketika mekanisme 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 ialah belahan mana dari sebuah project VBA sanggup memakai atau mengakses variabel tersebut. Apakah hanya pada mekanisme tertentu, semua mekanisme dalam sebuah module atau juga sanggup digunakan oleh mekanisme lain meskipun berbeda module.
Tentang scope ini sudah sedikit saya singgung pada seri tutorial VBA Dasar sebelumnya, silahkan dibaca terlebih dahulu bila Anda belum sempat membacanya:Gambaran Umum Scope.
Jika sudah anda baca, saya kira belahan ini akan lebih gampang dijelaskan dengan menciptakan sebuah file latihan. Makara silahkan buat sebuah file gres kemudian simpan dengan nama file "-Latihan VBA 3.xlsm" pada folder yang sudah kita siapkan sebelumnya. Jangan lupa pilih ekstensi .xlsm yang mendukung format macro VBA Excel.
Bentar, saya tak nyeduh kopi dulu.
Menentukan Scoope Variable VBA
Pada belahan sebelumnya sudah dijelaskan bahwa Scope variabel VBA ialah mengacu pada istilah wacana modul dan mekanisme mana yang sanggup memakai sebuah variabel. Dengan kata lain, Scope menentukan di mana variabel itu sanggup digunakan pada sebuah project VBA.
Pada seri yang kemudian sudah dijelaskan sebuah workbook Excel sanggup mempunyai beberapa modul dan pada setiap modul sanggup diisi dengan beberapa mekanisme VBA.
Pada sebuah aplikasi VBA yang sederhana, Anda mungkin cukup memakai satu modul dengan beberapa prosedur. Namun, dengan bertambahnya waktu bisa jadi pekerjaan Anda dengan VBA mulai menjadi lebih kompleks dan membutuhkan banyak module serta prosedure VBA.
Pada kasus yang lebih kompleks, barangkali Anda tidak ingin semua variabel VBA sanggup diakses oleh setiap modul dan prosedur. Makara 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 sempurna akan memungkinkan Anda untuk melaksanakan hal semacam ini.
Jika pada bahasan prosedure dan module saya 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 memakai istilahnya. Jika 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 sanggup digunakan dalam mekanisme di mana sebuah variable dideklarasikan. Hal ini berlaku untuk mekanisme jenis Sub atau Function.
Cara melaksanakan deklarasi variabel untuk scope level mekanisme ini umumnya ialah sempurna dibawah deklarasi atau statement prosedur. Dengan cara semacam ini anda sanggup memakai nama yang sama untuk beberapa variabel pada mekanisme yang berbeda.
File "-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 aba-aba 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 adalah: " & int_Angka1 & Chr(10) & _ "Nilai Variabel int_Angka2 adalah: " & 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 adalah: " & int_Angka1 & Chr(10) & _ "Nilai Variabel int_Angka2 adalah: " & int_Angka2 End Sub
- Jalankan masing-masing mekanisme di atas.
* Pastikan seebelum dan sehabis 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 mekanisme kedua menampilkan kotak pesan yang berbeda sebagai berikut:
Hal ini memperlihatkan bahwa masing-masing variabel berjalan secara lokal pada prosedure 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 adalah: " & int_Angka1 & Chr(10) & _ "Nilai Variabel int_Angka2 adalah: " & int_Angka2 End Sub
Selanjutnya, silahkan jalankan mekanisme Latihan_Lokal_Variabel3. Apa yang terjadi?
Gambar di atas menujukkan bahwa Latihan_Lokal_Variabel3 tidak mengenal Variabel int_Angka1 dan int_Angka2, lantaran 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 belahan atas Module1, kemudian jalankan masing-masing prosedure pada module tersebut secara bergantian.
Meskipun aba-aba 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 ialah Variant. Selain itu nilai kedua Variabel pada mekanisme ini masih kosong, lantaran kita memng belum memasukkan nilai apapun pada kedua Variabel VBA ini.
Dari sini Anda sudah sanggup 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 Prosedur lainnya.
Lalu bagaimana bila Anda menghendaki VBA sanggup mengakses sebuah Variabel dari prosedure 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 mekanisme lain asal masih dalam modul yang sama di mana variabel VBA tersebut dideklarasikan.
Untuk lebih memahaminya silahkan buat sebuah module gres dengan nama "Module2" pada file yang sama. Pada module tersebut tuliskan aba-aba 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 adalah: " & str_Teks & Chr(10) & _ "Nilai Variabel int_Angka adalah: " & 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 adalah: " & str_Teks & Chr(10) & _ "Nilai Variabel int_Angka adalah: " & int_Angka End Sub
Jika sudah, selanjutnya silahkan jalankan masing-masing prosedure 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 dapatkan bahwa dengan melaksanakan deklarasi Variabel pada awal baris deklarasi atau sebelum mendeklarasikan prosedur, tepatnya 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 menyerupai pada contoh latihan sebelumnya pada belahan Scope Procedure-Level atau Local VBA.
Pada contoh deklarasi diatas, untuk mendapat scope level module selain mendeklarasikan dengan keyword Dim Anda juga sanggup mendeklarasikan Variabel tersebut dengan statement Private. Sehingga kode:
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 bisa memahami variabel scope modul ya?
Sekarang buat 1 Modul lagi dengan nama "Module3". Kemudian tuliskan aba-aba 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 adalah: " & str_Teks & Chr(10) & _ "Nilai Variabel int_Angka adalah: " & int_Angka End Sub
Kemudian coba jalankan mekanisme Latihan_LevelPublic_Variabel ini.
Error ya? Soo bagaimana cara supaya kita bisa memakai sebuah Variabel lintas Modul? Kita lanjutkan pembahasan pada belahan selanjutnya.
Scope Project-Level atau Public VBA
Sampai tahap ini Anda sudah bisa memakai Variabel pada level mekanisme 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 menyerupai 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 mekanisme 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 bila 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 sekarang, coba buka Module3 kemudian jalankan prosedur Latihan_LevelPublic_Variabel.
Sekarang tidak error lagi bukan? Hanya saja nilai masing-masing variabel masih kosong, lantaran kita memang belum memasukkan nilai pada masing-masing variabel tersebut.
Selanjutnya coba jalankan mekanisme Latihan_LevelModule_Variabel1 atau Latihan_LevelModule_Variabel2 pada Module2 untuk memperlihatkan 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, bila hanya butuh untuk level Prosedure maka atur variabel untuk level prosedure saja. Jika sebuah variabel juga dibutuhkan pada level Module saja, maka jangan di atur untuk lebih luas hingga 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. Jika 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 kuat terhadap dimana variabel tersebut sanggup di saluran atau digunakan, namun juga mempengaruhi 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 mekanisme 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 kegiatan berikut:
- Buat sebuah modul gres dengan nama "Module4" pada file yang telah kita buat sebelumnya tadi.
- Buat sebuah mekanisme public dengan nama "TestVarabelStatic".
- Didalam prosedure 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 aba-aba berikut:
MsgBox "Nilai Variabel int_Var1 adalah: " & int_Var1 & Chr(10) & _ "Nilai Variabel int_Var2 adalah: " & int_Var2
- Akhiri prosedure tersebut dengan statement epilog "End Sub"
Apabila langkah-langkah yang anda lakukan benar maka aba-aba yang Anda buat pada Module1 akan terlihat menyerupai 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 adalah: " & int_Var2 End Sub
Setelah selesai silahkan coba jalankan mekanisme tersebut.
Pada dikala dijalankan pertama kali terlihat bahwa nilai dari Variabel int_Var1 dan int_Var2 ialah 5. Seperti terlihat pada kotak pesan berikut:
Selanjutnya, silahkan jalankan lagi prosedure tersebut dan lihat hasilnya.
Pada dikala dijalankan kedua kali ternyata nilai Variabel int_Var1 tetap 5 sedangkan nilai int_Var2 menjadi 10 dan terus berubah bertambah 5 dikala dijalankan ulang. Kenapa demikian?
Hal ini disebabkan Variabel int_Var2 kita deklarasikan sebagai Static, sehingga pada simpulan prosedure nilai 5 dari Variabel int_Var2 tetap tersimpan di dalam memori. Saat 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 kasus ini gunakan tombol hidangan reset pada VBE menyerupai yang sudah dijelaskan sebelumnya.
Dari contoh kasus sederhana di atas, saya yakin anda sudah mendapat citra wacana maksud dari lifetime yang saya singgung di atas.
Selain digunakan pada Variabel. Keyword atau statement Static bisa juga digunakan pada level prosedur, hal ini akan mengakibatkan semua Variabel didalam prosedure tersebut mempunyai lifetime yang lebih usang atau tidak segera di hapus dikala simpulan prosedur.
Pada module4 di bawah simpulan prosedure tadi tambahkan script atau aba-aba 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 adalah: " & int_Var2 End Sub
Kemudian silahkan coba jalankan prosedure "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 saya 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 berguru VBA Anda. Jangan lupa di Share bila ada manfaatnya, sehingga kawan-kawan lain juga ikut mencicipi manfaatnya. Sampai jumpa pada seri berikutnya. Salam .
Post a Comment for "Mengenal Konstanta Dan Variabel Pada Vba Excel #05"