Mengenal Konstanta dan Variabel Pada VBA Excel #05

Tutorial Tentang Konstanta & Variabel pada VBA Excel Mengenal Konstanta & Variabel Pada VBA Excel #05

Seperti yg sdh saya sampaikan pada tutorial sebelumnya, setlah membahas tentang Tipe data (Data Type) pada VBA kita akan melanjutkan seri tutorial VBA Dasar ini dengan membahas istilah Konstanta & Variabel pada VBA dan bagaimana menggunakannya dlm sebuah kode VBA Excel.

Jika anda sdh terbiasa menggunakan rumus excel saya Yakin Anda akan cepat memahami maksud dari kedua istilah ini (Konstanta & Variabel). Sebab, barangkali secara tidak sadar sebenarnya anda juga tlah menggunakan Konstanta atau Variabel sbgai bagian 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 tentang Konstanta & Variabel VBA ini saya sarankan terlebih dahulu untuk membaca halaman yg menjelaskan tentang fungsi & formula excel brkut: Pengenalan Rumus & Fungsi Pada Microsoft Excel.

Selein itu Anda akan kmi ajak juga untuk lebih memahami tentang Istilah Scope atau runga lingkup VBA & istilah lifetime VBA.

Baca-pelan-pelan & jangan lupa siapkan dulu kopi & cemilannya.


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

Konstanta VBA Excel


Bagaimanakah pengertian Konstanta pada VBA Excel?

Pada pembahasan sebelumnya sdh saya sampaikan bahwa pada dasarnya VBA Excel ada kalanya menyimpan data sbgai sebuah objek & ada kalanya menyimpan data sbgai sebuah Variabel. Penyimpanan data dlm bentuk variabel yg tetap & tidak berubah biasa disebut sbgai konstanta.

Jadi Konstanta pada VBA Excel adalah tempat penyimpanan bagi sebuah nilai tertentu yg mana nilai ini tetap & tidak dapat berubah. Hal ini berarti bahwa saat digunakan Konstanta bersifat read only yg mana Nilai dlm konstanta ditetapkan saat melakukan deklarasi konstanta.

Jika Anda menulis sebuah rumus excel, misal:

=A1*2

Maka angka 2 pada rumus tersebut adalah sebuah konstanta yg tetap, berbeda dengan nilai A1, yg mana dinilainya dpat kita ubah sesuai dengan nilai yg kita inputkan pada sel A1.

Loh bang, kan kita bisa ubah angka 2 dengan angka yg lainnya? Ya benar, namun maksud tidak dapat kita ubah disini bukan sprti itu. Jadi setlah kita menetapkan nilai 2 pada rumus tersebut maka nilai 2 itulah yg digunakan dlm rumus excel. Se&gkan tanpa merubah rumusnya kita dapat mengubah nilai A1. Saya yakin anda cukup cerdas untuk menangkap pesan yg ingin saya sampaikan.

Pada VBA Excel, untuk mendeklarasikan sebuah konstanta mengikuti sebuah sintaksis atau cara penulisan tertentu. Berikut penjelasan lebih lanjutnya.

Cara Mendeklarasikan Konstanta


Konstanta pada VBA Excel ini ada 2 jenis:
  1. Konstanta Intrinsik, adalah konstanta yg tlah disediakan oleh VBA (Visual Basic For Application). Cirinya diawali dengan kata vb atau xl dibagian awal konstanta, misal: vbYesNo & xlDialogOpen. Mengenai konstanta default (Intrinsik) ini akan kita bahas pada halaman lain saat sdh diperlukan.
  2. Konstanta Simbolik adalah konstanta yg nilainya ditentukan oleh user (Anda) dengan menggunakan keyword atau kata kunci "Const". Jenis konstanta VBA inilah yg dimaksudkan dlm pembahasan dihalaman ini.

Konstanta dibentuk atau di deklarasikan dengan keyword Const dengan scope level minimal adalah pada scope level Module. Tentang scope ini akan kita bahas lebih detail nanti dibagian bawah.

Syntax deklarasi konstanta adalah sbgai brkut:

scope CONST Nama_Konstanta AS DataType = Nilai_Konstanta

Keterangan:
  • Elemen Scope bisa anda isi dengan Public atau Private sesuai scope yg anda butuhkan. Jika Elemen ini tidak anda dankan maka VBA akan menganggap Konstanta dideklarasikan sbgai scope Public.
  • CONST adalah keyword yg menunjukkan bahwa anda se&g mendeklarasikan konstanta pada module atau prosedure VBA yg se&g anda buat
  • Nama_Konstanta adalah nama yg ingin anda gunakan untuk konstanta dimaksud untuk membedakan konstanta satu dengan yg lainnya.
  • DataType adalah jenis atau tipe data yg ingin anda gunakan dlm konstanta tersebut sbgaimana yg sdh dijelaskan pada tutorial sebelumnya.
  • Nilai_Konstanta adalah nilai yg ingin anda berikan untuk konstanta tersebut, tentunya harus sesuai dengan tipe data yg 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 saat ini saya kira tidak perlu memperpanjang pembahasan mengenai Konstanta pada VBA. Pada bagian selanjutnya Anda akan saya ajak untuk mengenal & belajar lebih jauh mengenai Variabel VBA.

Pembahasan mengenai tipe Data VBA bisa anda temukan disini:Mengenal Tipe Data Pada VBA Excel

Variable VBA Excel


Variabel pada VBA Excel adalah bagian yg saya anggap sangat penting untuk Anda kuasai. Sebab.... sebab apa ya? pokoknya penting lah. Hahahaha. Silahkan anda definisikan sendiri pentingnya mempelajari pengertian & cara menggunakan Variabel VBA ini setlah anda selesai membaca & mempraktekkan tutorial dasar VBA ini.

Apa sih Variabel VBA itu?

Variabel adalah nama lokasi memori yg digunakan untuk menyimpan atau mewakili nilai tertentu yg dapat diubah selama eksekusi kode VBA.

Pada dasarnya Variabel sama sprti konstanta yg memiliki nama & tipe data tertentu, be&ya saat kode berjalan nilai konstanta tidak dapat diubah se&gkan variabel nilainya dapat diubah untuk memanipulasi data.

Jadi jika konstanta hanya mampu untuk dibaca atau diambil nilainya (Read), Variabel selain mampu untuk diambil nilainya juga bisa di tulis atau diubah nilai yg tersimpan didlmnya (Read and Write).

Dari pengertian di atas dapat kita sederhanakan bahwa variabel memiliki 3 karakteristik brkut:
  1. Memiliki nama tertentu.
  2. Marupakan lokasi penyimpanan nilai atau data di dlm memori komputer.
  3. Digunakan oleh sebuah program.

Dari ketiga karakteristik utama dari variabel di atas saya kira dapat anda jadikan acuan tentang apa yg perlu Anda pahami setlah selesai membaca panduan mengenai Variabel VBA pada bagian ini supaya Anda mampu mendeklarasikan variabel dengan tepat pada saat menuliskan kode-kode Macro VBA Excel, yakni:
  1. Bagaimana Anda menentukan cara penyimpanan nilai atau data. Pembahasan mengenai hal ini terkait erat tentang bagaimana Anda menentukan VBA datatype (Tipe data) yg anda gunakan dan bagaimana cara mendefinisikan atau mendeklarasikan sebuah variabel.
  2. Bagaimana Anda memberi nama variabel VBA.
  3. Bagaimana Anda menentukan dimana sebuah Variabel dapat digunakan atau diakses. Pembahasan hal ini terkait erat dengan Scope (Ruanglingkup) & Lifetime of Variables (Umur Variabel).

Sebelum membahas tentang Konstanta & Variabel Pada VBA Excel ini, saya terlebih dahulu memilih 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 kode program VBA tanpa melakukan deklarasi Variabel. Hanya saja sprti yg sdh kita ulas pada seri sebelumnya bahwa dengan Mendeklarasikan variabel secara explicit maka kode macro VBA yg kita buat akan berjalan lebih cepat dan lebih efisien dlm penggunaan memori.

Beberapa alasan atau manfaat lain kenapa Anda harus melakukan deklarasi variabel adalah sbgai brkut:
  1. Memungkinkan anda untuk menggunakan fitur AutoComplete untuk menghindari kesalahan penulisan nama variabel saat melakukan pemanggilan atau bermaksud menggunakan variabel tertentu.
  2. Membuat VBA melakukan pemeriksaan error atau kesalahan tambahan. Misal anda mendeklarasikan sebuah variabel sbgai integer karena 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 memberikan informasi kesalahan bahwa anda memasukkan nilai yg tidak sesuai pada variabel tersebut.
  3. Mendeklarasikan variabel akan meningkatkan Readability atau tingkat keterbacaan sebuah kode. Hal ini menjadikan proses Debug menjadi lebih mudah & mengurangi resiko kesalahan atau error tertentu.

Inilah alasan kenapa Anda harus mengaktifkan opsi "Option Explicit" sprti yg sdh disampaikan pada seri pertama tutorial VBA ini. Statemen Option Explicit yg Anda gunakan pada setiap awal sebuah modul akan memaksa anda untuk selalu mendefinisikan atau melakukan deklarasi Variabel.

Hal lain yg saya kira cukup bermanfaat adalah bahwa dengan menggunakan statemen Option Explicit ini, Visual Basic Editor secara otomatis mengoreksi ejaan nama variabel VBA yg anda buat.

Cara Mendeklarasikan Variabel VBA


Sekarang, bagaimana cara melakukan deklarasi variabel? Syntax untuk mendeklarasikan Variabel VBA adalah sbgai brkut:

Keyword Nama_Variabel As Tipe_Data

Keterangan:
  • "Keyword" adalah salah satu dari statemen brkut: Dim, Public, Private atau Static.
  • "Nama_Variabel" adalah nama yg ingin Anda gunakan sbgai pengenal variabel.
  • "Tipe_Data" adalah referensi ke tipe data dari variabel. Meskipun Elemen ini opsional atau boleh tidak digunakan, saya sarankan Anda untuk selalau menggunakannya, kecuali Anda benar-benar bingung Tipe Data apa yg harus anda gunakan pada variable yg anda deklarasikan.

Contoh deklarasi Variabel VBA adalah sbgai brkut:

Dim nomor_urut As Long Dim nomor_kode As String

Kode di atas bermaksud mendeklarasikan 2 buah Variabel dengan nama nomor_urut & nomor_kode. Variabel nomor_urut kita tentukan menggunakan tipe data Long, se&gkan nomor_kode kita tentukan sbgai String atau teks.

Agar baris penulisan kode lebih ringkas, Anda dapat juga menggunakan 1 keyword Dim untuk mendeklarasikan beberapa variabel sekaligus dengan memisahkan antar variabel mengunakan koma(,). Contohnya adlaah sbgai brkut:

Dim nomor_urut As Long, nomor_kode As String

Dulu (bahkan sampai sekarang juga sih) saya sering meringkas penulisan kode deklarasi variabel semisal brkut:

Dim nomor_A, nomor_B As Integer

Dengan maksud mendeklarasikan vaiabel nomor_A & nomor_B sbgai nilai Integer.

Perlu Anda ketahui bahwa pada penulisan statement deklarasi variable semacam ini, VBA hanya menentukan Variabel nomor_B sbgai Integer, se&gkan untuk variabel nomor_A karena tipe data tidak disebutkan maka akan dianggap sbgai Variant sbgai tipe data devault pada VBA.

Jadi, penulisan kode deklarasi yg tepat seharusnya adalah sbgai brkut:

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 singkatan tipe data kemudian disambung dengan Nama yg menggambarkan nilai variabel tersebut.

Berikut beberapa singkatan yg umum dipakai sbgai prefix atau awalan nama Variabel:

Data TypePrefixAlternatif
Stringstr-
Booleanblnb
Doubledbld
Integerinti
Longlngl
Singlesngs
Date/Timedt-
Currencycurc
Objectobj-
Variantvarv
Type (User-Defined)typu

Contoh Nama Variabel:
  1. Untuk menamai variabel nomor urut dengan tipe Integer pakailah nama: intNoUrut, int_No_Urut atau int_NoUrut.
  2. Untuk Variabel yg menyimpan nama orang misalnya gunakan nama str_Nama atau s_Nama yg mana str atau sadalah singkatan dari tipe data String.

Selain itu ada beberapa aturan khusus yg harus Anda patuhi saat menentukan nama sebuah Variabel:
  1. Menggunakan huruf sbgai karakter pertama. Karakter selanjutnya bisa berupa huruf, angka, & beberapa karakter tanda baca misalnya underscore (_).
  2. Nama variabel tidak boleh melebihi 255 karakter.
  3. Nama variabel VBA tidak boleh mengandung spasi (), periode/titik (.), Operator matematika (misalnya +, -, /, ^ atau *), operator perbandingan (sprti =, < atau >) atau karakter tanda baca tertentu (sprti jenis-deklarasi karakter @, #, $,%, & & !).
  4. Nama variabel VBA tidak dapat sama dengan keyword atau istilah apa pun sdh ada atau digunakan secara default oleh sistem VBA Excel. Misalnya: Sub, Dim, With, End, Next, For & lain sbgainya.
  5. Visual Basic for Applications tidak membedakan antara huruf besar & huruf kecil. Misalnya, "A" sama dengan "a".
  6. Nama setiap variabel VBA yg digunakan harus unik dlm scope yg relevan. Artinya nama variabel tingkat prosedur harus unik dlm prosedur yg relevan, nama variabel level modul harus unik dlm modulnya, & seterusnya.

Cara Memasukkan Nilai ke Dalam Variabel VBA


Setlah mendeklarasikan Variabel, bagaimana cara memasukkan nilai ke dlm variebel tersebut?

Jika Anda membaca tutorial ini secara urut dari seri pertama, saya yakin anda sdh faham bahwa pada dasarnya tipe variabel itu ada 2 macam. Yakni variabel ber-datatype object & non object. Untuk masing-masing tipe ini cara memasukkan nilainya berbeda:

Variabel ber-datatype selain object caranya adalah dengan menuliskan nama variabel kemudian diikuti tanda sama dengan (=) & 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 adalah dengan menggunakan keyword "Set" diikuti nama variabel, lalu diikuti tanda sama dengan (=) & 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 dlm sebuah variabel. Contoh-contoh lainnya akan dijelaskan pada bagian-bagian penjelasan lain. Yang perlu Anda catat, Tambahkan keyword/statement SET jika data pada variabel tersebut adalah berupa object VBA.

Keyword Dim, Static, Public & Private Pada Deklarasi Variabel VBA


Seperti yg sdh dijelaskan di atas, Statemen atau keyword yg bisa digunakan untuk mendeklarasikan sebuah variabel adalah sbgai brkut, tentunya masing-masing memiliki tujuan tertentu:
  1. Dim
  2. Static
  3. Public
  4. Private

Dari keempat keyword tersebut, Statement DIM adalah yg paling umum digunakan. Se&gkan 3 keyword brkutnya digunakan untuk mendeklarasikan variabel dengan karakteristik khusus yg menygkut 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 jika Anda merasa kebingungan untuk memahaminya saya rasa wajar. Hal ini lebih disebabkan keterbatasan kemampuan saya dlm menjelaskan & bukan karena tingkat kecerdasan Anda. Soo, slahkan ambil nafas panjang terlebih dahulu.

Perbedaan utama antara variabel VBA yg dideklarasikan menggunakan Statement Dim & Static adalah kapan variabel tersebut direset atau dibuang dari memori. Hal ini menygkut tentang lifetime sprti yg sdh saya singgung di bagian atas.

Sebagai aturan umum ketika sebuah variabel dideklarasikan dengan keyword Dim, semua variabel tingkat-prosedur direset ulang ketika prosedur yg relevan berakhir. Se&gkan Variabel static tidak demikain (tidak direset/dibuang).

Adapun Statement Public & Private lebih berpengaruh terhadap scoope atau ruang lingkup dari sebuah variabel. Scoope disini maksudnya adalah bagian mana dari sebuah project VBA dapat menggunakan atau mengakses variabel tersebut. Apakah hanya pada prosedur tertentu, semua prosedur dlm sebuah module atau juga dapat digunakan oleh prosedur lain meskipun berbeda module.

Tentang scope ini sdh sedikit saya singgung pada seri tutorial VBA Dasar sebelumnya, slahkan dibaca terlebih dahulu jika Anda belum sempat membacanya:Gambaran Umum Scope.

Jika sdh anda baca, saya kira bagian ini akan lebih mudah dijelaskan dengan membuat sebuah file latihan. Jadi slahkan buat sebuah file baru kemudian simpan dengan nama file "-Latihan VBA 3.xlsm" pada folder yg sdh kita siapkan sebelumnya. Jangan lupa pilih ekstensi .xlsm yg mendukung format macro VBA Excel.

Bentar, saya tak nyeduh kopi dulu.

Menentukan Scoope Variable VBA


Pada bagian sebelumnya sdh dijelaskan bahwa Scope variabel VBA adalah mengacu pada istilah tentang modul & prosedur mana yg dapat menggunakan sebuah variabel. Dengan kata lain, Scope menentukan di mana variabel itu dapat digunakan pada sebuah project VBA.

Pada seri yg lalu sdh dijelaskan sebuah workbook Excel dapat memiliki beberapa modul & pada setiap modul dapat diisi dengan beberapa prosedur VBA.

Pada sebuah aplikasi VBA yg sederhana, Anda mungkin cukup menggunakan satu modul dengan beberapa prosedur. Namun, dengan bertambahnya waktu bisa jadi pekerjaan Anda dengan VBA mulai menjadi lebih kompleks & membutuhkan banyak module dan prosedure VBA.

Pada kasus yg lebih kompleks, barangkali Anda tidak ingin semua variabel VBA dapat diakses oleh setiap modul & prosedur. Jadi beberapa variabel tertentu hanya boleh digunakan oleh prosedure tertentu baik pada module yg sama atau prosedure pada modul yg lain.

Penentuan ruang lingkup atau scope variabel VBA secara tepat akan memungkinkan Anda untuk melakukan hal semacam ini.

Jika pada bahasan prosedure & module saya menyinggung ada 4 level scope, untuk bahasan kali ini akan dicontohkan 3 saja yakni:
  1. Procedure-Level atau Local VBA Variable
  2. Module-Level atau Private VBA Variable
  3. Project-Level atau Public VBA Variable

*Semoga saya tidak salah menggunakan istilahnya. Jika memang kurang tepat Silahkan dikoreksi dengan membandingkannya dengan tutorial sejenis pada web atau buku tentang VBA.

Scope Procedure-Level atau Local VBA


Seperti yg ditunjukkan oleh namanya, variabel tingkat prosedur atau variabel lokal hanya dapat digunakan dlm prosedur di mana sebuah variable dideklarasikan. Hal ini berlaku untuk prosedur jenis Sub atau Function.

Cara melakukan deklarasi variabel untuk scope level prosedur ini umumnya adalah tepat dibawah deklarasi atau statement prosedur. Dengan cara semacam ini anda dapat menggunakan nama yg sama untuk beberapa variabel pada prosedur yg berbeda.

File "-Latihan VBA 3.xlsm" tadi sdh dibuat kan? Okey, selanjutnya slahkan dinikmati kopi & cemmilannya.

Berikutnya slahkan lakukan latihan brkut:
  1. Pada file yg tlah kita buat tadi buatlah sebuah module dengan nama "Module1".
  2. Pada Module1 ini tuliskan kode VBA brkut 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
  3. Jalankan masing-masing prosedur di atas.

* Pastikan seebelum & setlah penulisan karakter & ada spasinya.

  • Kode "MsgBox" pada VBA digunakan untuk menampilkan kotak pesan dengan isi tertentu.
  • Kode "&" digunakan untuk menggabungkan nilai satu dengan nilai lainnya sprti pada rumus excel.
  • Kode "Chr(10)" digunakan untuk membuat Enter atau ganti baris pada message box, cara lain Anda bisa menggunakan "vbCrLf".

Pada Module1 tersebut kita membuat 2 buah Prosedur dengan nama Latihan_Lokal_Variabel1 & Latihan_Lokal_Variabel2. Pada masing-masing prosedur ini kita mendeklarasikan 2 buah Variabel dengan nama int_Angka1 & int_Angka2.

Saat dijalankan prosedur pertama menghasilkan kotak pesan sbgai brkut:

Tutorial Tentang Konstanta & Variabel pada VBA Excel Mengenal Konstanta & Variabel Pada VBA Excel #05

Se&gkan prosedur kedua menampilkan kotak pesan yg berbeda sbgai brkut:

Tutorial Tentang Konstanta & Variabel pada VBA Excel Mengenal Konstanta & Variabel Pada VBA Excel #05

Hal ini menunjukkan bahwa masing-masing variabel berjalan secara lokal pada prosedure terkait & segera dihapus nilainya saat prosedur berakhir.

Selanjutnya slahkan tambahkan sebuah prosedure lain brkut ini pada Module1 dibawah kedua prosedur 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, slahkan jalankan prosedur Latihan_Lokal_Variabel3. Apa yg terjadi?

Tutorial Tentang Konstanta & Variabel pada VBA Excel Mengenal Konstanta & Variabel Pada VBA Excel #05

Gambar di atas menujukkan bahwa Latihan_Lokal_Variabel3 tidak mengenal Variabel int_Angka1 & int_Angka2, sebab Variabel int_Angka1 & int_Angka1 yg sdh anda deklarasikan sebelumnya hanya tersedia untuk prosedure terkait dimana Variabel tersebut dideklarasikan.

Selanjutnya slahkan hapus statement "Option Explicit" Pada bagian atas Module1, kemudian jalankan masing-masing prosedure pada module tersebut secara bergantian.

Meskipun kode tidak error pada dasarnya, VBA mendeklarasikan int_Angka1 & int_Angka2 secara Implicit. Yang berarti bahwa tipe data yg digunakan untuk kedua variabel pada prosedur Latihan_Lokal_Variabel3 adalah Variant. Selain itu nilai kedua Variabel pada prosedur ini masih kosong, sebab kita memng belum memasukkan nilai apapun pada kedua Variabel VBA ini.

Dari sini Anda sdh dapat mengambil pemahaman tentang Variabel dlm Scope Level Procedur atau Local VBA kan? Intinya Sebuah Variabel yg hanya bisa digunakan pada Prosedur terkait & tidak bisa dipanggil untuk Prosedur lainnya.

Lalu bagaimana jika Anda menghendaki VBA dapat mengakses sebuah Variabel dari prosedure lain?

Scope Module-Level atau Private VBA


Jika pada Scope level Prosedure sebuah Variabel hanya bisa digunakan oleh prosedur terkait, pada variabel scope level-modul, sebuah Variabel tersedia juga untuk digunakan dlm prosedur lain asal masih dlm modul yg sama di mana variabel VBA tersebut dideklarasikan.

Untuk lebih memahaminya slahkan buat sebuah module baru dengan nama "Module2" pada file yg sama. Pada module tersebut tuliskan kode VBA brkut:

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 sdh, selanjutnya slahkan jalankan masing-masing prosedure di atas secara bergantian dengan urutan sbgai brkut. Sebelumnya tekan tombol reset pada menu VBE untuk memastikan semua Variabel tlah di reset ulang:
  1. Latihan_LevelModule_Variabel3

    Tutorial Tentang Konstanta & Variabel pada VBA Excel Mengenal Konstanta & Variabel Pada VBA Excel #05
  2. Latihan_LevelModule_Variabel1 kemudian Latihan_LevelModule_Variabel3

    Tutorial Tentang Konstanta & Variabel pada VBA Excel Mengenal Konstanta & Variabel Pada VBA Excel #05
  3. Latihan_LevelModule_Variabel2 kemudian Latihan_LevelModule_Variabel3

    Tutorial Tentang Konstanta & Variabel pada VBA Excel Mengenal Konstanta & Variabel Pada VBA Excel #05

Tutorial Tentang Konstanta & Variabel pada VBA Excel Mengenal Konstanta & Variabel Pada VBA Excel #05

Dari latihan ini anda bisa dapatkan bahwa dengan melakukan 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 prosedur dlm module yg sama & tidak terjadi error sprti pada contoh latihan sebelumnya pada bagian Scope Procedure-Level atau Local VBA.

Pada contoh deklarasi diatas, untuk mendapatkan scope level module selain mendeklarasikan dengan keyword Dim Anda juga dapat 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

Menggunakan keyword Private pada kasus ini akan memberikan efek yg sama dengan statemnet Dim. Untuk alasan inilah, agar sebuah kode lebih mudah dibaca saya menyarankan Anda menggunakan Statement Private. Sebab secara umum kita akan mendeklarasikan sebuah variabel dengan Dim sehingga saat anda menggunakan Keyword Private maka akan menjadi pembeda, sehingga lain waktu anda membaca ulang kode tersebut pesan yg disampaikan oleh kode tersebut akan leih mudah untuk kita baca.

Oke, sdh bisa memahami variabel scope modul ya?

Sekarang buat 1 Modul lagi dengan nama "Module3". Kemudian tuliskan kode Macro VBA Excel brkut 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 prosedur Latihan_LevelPublic_Variabel ini.

Error ya? Soo bagaimana cara agar kita bisa menggunakan sebuah Variabel lintas Modul? Kita lanjutkan pembahasan pada bagian selanjutnya.

Scope Project-Level atau Public VBA


Sampai tahap ini Anda sdh bisa menggunakan Variabel pada level prosedur & Modul. Sekarang kita akan lanjutkan untuk membuat sebuah Variabel Level Project dimana scope levelnya lebih luas jika dibandingkan 2 scope sebelumnya.

Untuk mendeklarasikan variabel VBA pada scope Public, deklarasinya harus memenuhi persyaratan brkut:
  1. Deklarasikan variabel tersebut sprti deklarasi tingkat modul yg dituliskan pada awal modul diluar semua prosedur.
  2. Gunakan Statement Public sbgai pengganti Statament Dim.
  3. Deklarasi variabel harus dibuat dlm modul VBA standar.

Variabel VBA yg deklarasinya memenuhi ketentuan di atas tersedia untuk prosedur apa pun, bahkan dlm modul berbeda dlm Workbook Excel yg sama.

Oke sekarang kita praktekkan ya?

Silahkan buka Module2 kemudian ubah keyword Dim atau Private jika sdh Anda ubah pada deklarasi variabel str_Teks & 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, sebab 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 sdh memahami tentang bagaimana mengatur scope atau ruang lingkup sebuah variabel.

Yang perlu Anda catat sebaiknya gunakan scope yg sesempit mungkin, jika 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 sampai pada scope Public/Project.

Barangkali anda bertanya, loch kog setlah prosedure berakhir nilai variabel tadi masih tersimpan & tidak hilang dari memori?

Pertanyaan ini ada kaitannya dengan istilah Lifetime pada VBA. Jika sdh, mari kita lanjutkan pembahasan.

Memmahami Lifetime Variable VBA


Istilah "lifetime" atau terka&g disebut "life" saja mengacu pada berapa lama sebuah variabel disimpan dlm memori komputer.

Pada dasarnya Scope sebuah variabel, selain berpengaruh terhadap dimana variabel tersebut dapat di akses 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 prosedur yg dinyatakan dengan pernyataan Dim dihapus atau direset dari memori ketika prosedur tersebut selesai (End Sub).
  • Tingkat prosedur Variabel static, variabel tingkat modul, & variabel public mempertahankan nilainya antara panggilan prosedur (Tidak dihapus/direset).

Agar lebih jelas Lakukan kegiatan brkut:
  1. Buat sebuah modul baru dengan nama "Module4" pada file yg tlah kita buat sebelumnya tadi.
  2. Buat sebuah prosedur public dengan nama "TestVarabelStatic".
  3. Didlm prosedure tadi deklarasikan 2 buah variabel, masing-masing dengan nama int_Var1 & int_Var2. Gunakan keyword Dim untuk int_Var1 & keyword static untuk int_Var2.
  4. Setlah mendeklarasikan kedua variabel tadi, isi nilai masing-masing nilai dengan menjumlahkan variabel tersebut dengan angka 5.
  5. Selanjutnya kita tes nilai masing-masing variabel dengan memanggilnya pada sebuah message box dengan kode brkut:

    MsgBox "Nilai Variabel int_Var1 adalah: " & int_Var1 & Chr(10) & _ "Nilai Variabel int_Var2 adalah: " & int_Var2
  6. Akhiri prosedure tersebut dengan statement penutup "End Sub"

Apabila langkah-langkah yg anda lakukan benar maka kode yg Anda buat pada Module1 akan terlihat sprti 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

Setlah selesai slahkan coba jalankan prosedur tersebut.

Pada saat dijalankan pertama kali terlihat bahwa nilai dari Variabel int_Var1 & int_Var2 adalah 5. Seperti terlihat pada kotak pesan brkut:

Tutorial Tentang Konstanta & Variabel pada VBA Excel Mengenal Konstanta & Variabel Pada VBA Excel #05

Selanjutnya, slahkan jalankan lagi prosedure tersebut & lihat hasilnya.

Pada saat dijalankan kedua kali ternyata nilai Variabel int_Var1 tetap 5 se&gkan nilai int_Var2 menjadi 10 & terus berubah bertambah 5 saat dijalankan ulang. Kenapa demikian?

Tutorial Tentang Konstanta & Variabel pada VBA Excel Mengenal Konstanta & Variabel Pada VBA Excel #05

Hal ini disebabkan Variabel int_Var2 kita deklarasikan sbgai Static, sehingga pada akhir prosedure nilai 5 dari Variabel int_Var2 tetap tersimpan di dlm memori. Saat Anda menjalankan prosedure tersebut untuk kedua kalinya maka nilai tersebut ditambahkan dengan angka 5 sesuai nilai yg diberikan pada int_Var2 tersebut (int_Var2 = int_Var2 + 5).

Silahkan coba menjalankan prosedur TestVarabelStatic beberapa kali & perhatikan nilai yg dihasilkan.

Lalu bagaimana untuk mereset nilai Static tadi? Untuk contoh kasus ini gunakan tombol menu reset pada VBE sprti yg sdh dijelaskan sebelumnya.

Dari contoh kasus sederhana di atas, saya yakin anda sdh mendapatkan gambaran tentang maksud dari lifetime yg saya singgung di atas.

Istilah "lifetime" pada VBA mengacu pada berapa lama suatu variabel disimpan dlm memori komputer."

Selain digunakan pada Variabel. Keyword atau statement Static bisa juga digunakan pada level prosedur, hal ini akan menjadikan semua Variabel didlm prosedure tersebut memiliki lifetime yg lebih lama atau tidak segera di hapus saat akhir prosedur.

Pada module4 di bawah akhir prosedure tadi tambahkan script atau kode VBA brkut:

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 slahkan coba jalankan prosedure "TestProsedureStatic" ini beberapa kali. Apa yg terjadi? Ternyata meskipun tidak kita deklarasikan sbgai Static, Variabel int_Var1 & int_Var2 pada prosedur ini diperlakukan layaknya sebuah variabel static bukan?

Baiklah, pembahasan mengenai Konstanta & Variabel VBA pada seri tutorial VBA ini saya kira sdh cukup panjang & melelahkan. Untuk itu saya sdhi dulu.

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

Dropbox
GDrive

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

LINK DOWNLOAD TERKUNCI.
Silahkan SHARE untuk membuka kunci!


Semoga bermanfaat & menambah semangat belajar VBA Anda. Jangan lupa di Share jika ada manfaatnya, sehingga kawan-kawan lain juga ikut merasakan manfaatnya. Sampai jumpa pada seri brkutnya. Salam .


Sumber https://www.kelasexcel.id

Berlangganan update artikel terbaru via email:

Belum ada Komentar untuk "Mengenal Konstanta dan Variabel Pada VBA Excel #05"

Posting Komentar

Iklan Atas Artikel

Iklan Tengah Artikel 1

Iklan Tengah Artikel 2

Iklan Bawah Artikel