Anda di halaman 1dari 63

Bahasa

Pemrograman
Materi – 5
Mengenal Tipe Data
pada VBA Excel

Hendramawat AS, ST,MT


Pengertian dan Fungsi Tipe Data VBA Excel
 Tanpa mengenal data tipe akan sangat sulit sekali untuk untuk melakukan menejemen Variable dan
konstanta secara efektif dan efisien.
 Secara umum Data tersimpan di memori komputer. Jika Anda memiliki pemahaman dasar tentang
komputer, saya yakin Anda sudah familiar dengan cara kerjanya.
 Pada pembahasan VBA, Penyimpanan data di bagi dalam 2 jenis. Beberapa data di simpan dalam
bentuk bentuk object dan beberapa data lainnya disimpan dalam bentuk variabel.
 Objek adalah apa yang dimanipulasi oleh Visual Basic for Applications. Contoh objek adalah Workbook,
Worksheet , rentang sel (range) dan sel pada excel .
 Sedangkan Variabel merupakan sebuah nama tertentu sebagai lokasi penyimpanan data. Variabel
umumnya digunakan untuk mewakili nilai tertentu. Dengan kata lain, variabel merupakan wadah untuk
sebuah nilai tertentu.
 Variabel pada Visual Basic for Applications dibuat dengan melakukan sebuah deklarasi
statement tertentu dengan menentukan nama dan karakteristik dari setiap variabel tersebut.
 Salah satu karakteristik yang bisa Anda tentukan adalah tipe data-nya.
 Tipe data merupakan sebuah cara yang digunakan untuk menentukan dan mengelompokkan
jenis dari suatu data tersebut. Aktifitas ini biasa di sebut sebagai "deklarasi variabel".
 Dalam bahasa pemrograman terdapat banyak jenis-jenis tipe data yang bisa digunakan.
 Namun setiap bahasa pemrograman mempunyai tipe data yang mungkin tidak ada di
Bahasa pemrograman lain.
 Alasan utama mengapa memahami tipe data VBA itu penting adalah untuk menentukan
karakteristik dari variabel yang dibuat di VBA.
 Semakin kecil jumlah byte yang digunakan maka eksekusi VBA akan semakin cepat dan
sebaliknya semakin banyak byte yang digunakan, semakin lambat aplikasi VBA berjalan.
Tipe Data VBA Excel
 Data type (tipe data) pada VBA dapat dikelompokkan dalam dua bagian. Yakni, Numeric Data Types
atau tipe data angka/numerik dan non-numeric data types atau tipe data selain angka/numerik.
 Tipe data numerik (Numeric Data Types) adalah jenis data yang terdiri dari angka, yang dapat dihitung
secara matematis dengan berbagai operator standar seperti penambahan, pengurangan, perkalian,
pembagian dan banyak lagi.
 Contoh variabel yang biasanya menggunakan data tipe data numerik ini adalah adalah nomor urut,
tinggi badan, berat badan, jumlah siswa di kelas, harga barang, tagihan bulanan, dan lain sebagainya.
 Tipe data non-numerik (non-Numeric Data Types) adalah tipe data yang tidak dapat dimanipulasi
secara matematis dengan menggunakan operator aritmatika standar
Numeric Data Types (Tipe Data Numerik)
pada VBA Excel
 Tipe data VBA yang termasuk
ke dalam tipe data numerik ini
adalah: Byte, Integer, Long,
Single, Double, Currency,
Decimal.
 Tipe data Byte
 Tipe data Byte di VBA merupakan tipe data yang hanya membutuhkan 1 byte
kapasitas memori. Variabel dengan tipe data VBA-nya Byte dapat digunakan untuk
menyimpan angka antara 0 dan 255.
 Tipe Data Integer
 tipe data Integer untuk menyimpan bilangan bulat antara -32.768 sampai dengan
32.767. Variabel integer hanya membutuhkan kapasitas 2 byte memori komputer.
Karena kebutuhan memori yang rendah, tipe data Integer di VBA bisa anda jadikan
pilihan yang paling efisien dan lebih baik untuk tujuan menyimpan bilangan bulat
yang termasuk dalam jangkauannya.
 Tipe data Long
 Tipe data Long biasa juga disebut sebagai "Long Integer". Seperti yang tersirat namanya, Anda
dapat menggunakan tipe data Long pada VBA untuk menyimpan nilai integer yang berada
dalam rentang yang lebih panjang daripada rentang tipe data Integer. Dengan menggunakan tipe
data Long VBA, Anda bisa menyimpan angka antara -2.147.483.648 dan 2.147.483.647. Jika
angka ini belum cukup anda bisa menggunakan tipe data Double.
 Tipe data Single
 Tipe data Single mengacu pada "single-precision floating-point", sebuah format angka yang
menentukan bagaimana komputer menangani nomor tersebut. Anda dapat menggunakan tipe
data Single untuk menyimpan nomor dalam rentang berikut:
Nilai negatif: -3,402823E38 sampai -1,401298E-45.
Nilai positif: 1,401298E-45 sampai 3,402823E38.
 Variabel yang menggunakan tipe data single membutuhkan 4 byte kapasitas memory komputer.
 Tipe data Double
 Tipe data Double bisa digunakan untuk menampung bilangan bulat dan pecahan. Double
berarti "Double-precision Floating-point". Tipe Double untuk menyimpan nomor
floating-point dalam rentang berikut:
 Bilangan negatif: -1,79769313486231E308 sampai -4,94065645841247E-324.
 Bilangan positif: 4,94065645841247E-324 sampai 1,79769313486232E308.
 Variabel yang menggunakan tipe data ini membutuhkan 8 byte memori, yang artinya 2
kali lipat kebutuhan tipe data Single dan Long Integer.
 Tipe Data Currency
 Seperti namanya tipe data Currency biasa digunakan untuk menyimpan data yang
berhubungan dengan nominal uang (moneter). Tentu saja pada dasarnya tidak harus
nominaluang saja sih.
 Tipe data Mata Currency menghasilkan nilai skala dengan akurasi hingga 15 digit di
sebelah kiri titik desimal dan 4 digit ke kanan.
 Gunakan tipe data ini untuk menghindari kesalahan pembulatan saat presisi sangat
penting.Variabel mata uang dapat digunakan untuk menyimpan bilangan positif dan
negatif.
 Tipe data ini disimpan sebagai angka dalam format integer yang diskalakan 10.000.
Sebagai konsekuensinya, tipe data ini memungkinkan untuk rentang nilai antara-
922.337.203.685.477,5808 dan 922.337.203.685.477,5807.
 Karena fakta bahwa tipe data VBA Mata Uang tepat dan variabel-variabel ini
memberi angka fixed-point, Mata Uang sangat berguna untuk perhitungan moneter
atau perhitungan fixedpoint dimana akurasi sangat penting.
 Tipe data Currency membutuhkan 8 byte memori.
 Tipe data Decimal
 Tipe data Decimal dapat digunakan untuk menyimpan bilangan bulat yang diukur dengan
kekuatan 10. Faktor penskalaan ini bervariasi tergantung pada berapa digit yang ada di sisi
kanan titik desimal. Jumlah maksimum digit yang dapat ditahan oleh variabel Desimal adalah
28.
 Berapa nilai yang dapat di tampung oleh tipe data ini? Tipe data VBA Decimal memberikan
jumlah digit terbesar untuk mewakili nomor tertentu. Oleh karena itu, tipe ini lebih sesuai untuk
kasus di mana Anda melakukan perhitungan dengan jumlah besar yang membutuhkan presisi
dan tidak dapat menghindari kesalahan pembulatan.
 Ketepatan tipe data Desimal, datang dengan biaya dalam bentuk kebutuhan memori yang besar.
Tipe data VBA Desimal membutuhkan 12 byte, yang lebih besar dari tipe data numerik lainnya.
Seperti yang dijelaskan oleh Microsoft , Anda tidak dapat mendeklarasikan tipe data Decimal
secara langsung. Sebenarnya, tipe Decimal merupakan sub tipe Variant. Karena itu, untuk
menggunakan Desimal, Anda harus fungsi konversi CDec.
Tipe Data Non-numerik (Non-numeric Data
Types)
 Yang termasuk kedalam tipe
data ini adalah tipe data string
atau teks, tipe data Date, tipe
data Boolean, tipe data Object
dan tipe data Variant.
 Tipe data String
 Pada VBA(Visual Basic for Applications), tipe data String umumnya digunakan
untuk menyimpan teks. Namun, ini tidak berarti bahwa Anda hanya boleh
menggunakan huruf dalam variabel String. Selain huruf, variabel String dapat berisi
angka, spasi, tanda baca dan karakter tertentu.
 Ada 2 jenis tipe data String yang bisa digunakan. Jumlah karakter dan memori yang
dibutuhkan bervariasi tergantung jenisnya.
1.String-fixed length
2.String-variable length
Variabel yang menggunakan tipe Fixed-
Tipe String- length String dapat berisi antara 1 dan
sekitar 64.000 karakter.
fixed
Data length Variabel String ini membutuhkan jumlah
memori sejumlah yang dibutuhkan oleh

Strin string atau teks itu sendiri.

g String-
Variabel yang menggunakan tipe
Variable-length String dapat berisi
apapun dari 0 sampai sekitar 2 miliar
variabl karakter.

e Tipe ini membutuhkan 10 byte memori


ditambah memori yang dibutuhkan untuk
string itu sendiri.
length
 Tipe Data Date
 Tipe atau jenis data Date bisa digunakan untuk menyimpan nilai tanggal, waktu atau keduanya sekaligus
(Tanggal dan waktu). Tipe ini dapat menyimpan nilai yang merepresentasikan tanggal antara 1 Januari 100
sampai 31 Desember 9999 dan atau waktu antara 00:00:00 (tengah malam) sampai 23:59:59.
 Kapasitas memory yang dibutuhkan oleh tipe Date ini adalah 8 Byte.
 Tipe Data Boolean
 Tipe data Boolean hanya digunakan untuk menyimpan salah satu dari 2 nilai logika TRUE atau FALSE.
Data ini membuthkan 2 byte memori.
 Secara umum data Boolean, TRUE dilambangkan dengan 1 dan FALSE dilambangkan dengan 0. Namun,
dalam VBA, konversi antara Boolean dan tipe data VBA numerik bekerja sedikit berbeda:
1. Saat mengubah variabel dengan tipe Boolean menjadi tipe data numerik, TRUE menjadi -1 dan
FALSE menjadi 0.
2. Saat mengubah tipe data VBA numerik menjadi Boolean, 0 menjadi FALSE dan semua nilai lainnya
(terlepas dari apakah itu negatif atau positif) menjadi TRUE.
 Tipe Data Object
 Anda dapat menggunakan tipe data Object untuk tujuan menyimpan alamat yang mengacu pada object VBA tertentu.
Tipe data ini membutuhkan 4 byte memori. Secara umum jika anda membuat sebuah variable yang merujuk pada object
VBA Excel tertentu, gunakanlah tipe data ini. Object pada VBA excel ini misalnya Workbook, worksheet, sel, Range,
dan lain sebagainya.
 Tipe Data Variant
 Varian merupakan tipe data VBA default. Dengan kata lain, ini adalah jenis data yang digunakan oleh VBA(Visual Basic
for Applications) saat Anda tidak menentukan jenis datanya pada saat mendeklarasikan sebuah variabel. Dengan kata lain
saat anda tidak menyebutkan tipe data saat melakukan deklarasi variabel maka Excel akan menggunakan tipe data yang
membutuhkan 16 atau 22 kapasitas memori ini.
 Ya tipe data ini memang membutuhkan kapasitas memori lebih besar dibanding lainnya, lebih tepatnya:
Variant untuk data numeric membutuhkan 16 byte memori.
Variant untuk data teks membutuhkan 22 byte memori ditambah memori yang dibutuhkan oleh string.
 Inilah salah satu alasan kenapa pada halaman panduan VBA bagian pertama saya menyarankan untuk menggunakan
option explicit pada setiap awal modul yang anda buat. Yakni agar Anda berlatih menentukan tipe data apa yang paling
tepat digunakan untuk alasan efektifitas eksekusi VBA yang anda buat.
Memilih Tipe Data Yang Tepat
 Aturan umum yang saya sarankan untuk Anda gunakan saat menentukan jenis data
yang akan digunakan adalah pilih tipe data yang menggunakan jumlah byte
terkecil. Tentu saja jenis data tersebut tetap harus mampu menangani rentang data
yang ingin anda pakai.
 Alasan untuk ini adalah seperti yang disampaikan di awal bahwa semakin kecil
byte memori yang digunakan maka eksekusi Program VBA Anda akan relatif lebih
cepat dan tentunya anda tidak ingin kode VBA anda berjalan sangat lambat bukan?.
 Beberapa saran lain saat memilih jenis data atau tipe data apa yang tepat adalah sebagai berikut:
 Gunakan tipe BOOLEAN jika Variable yang anda buat digunakan untuk menyimpan nilai logika
benar/salah atau TRUE dan FALSE.
 Untuk menyimpan teks gunakan tipe String dengan ketentuan:
1. Apabila jumlah karakter tidak tetap maka gunakan String dengan deklarasi biasa
2. Apabila jumlah karakter harus dijaga tetap N karakter maka gunakan String dengan deklarasi
String * Jumlah_karakter
 Apabila variable yang anda buat akan digunakan untuk menyimpan angka bulat gunakan:
1. Tipe data Byte untuk angka antara 0 sampai 255
2. Tipe data Integer untuk angka antara -32,768 sampai 32,767 atau maksimal 4 digit
3. Tipe data Long untuk angka antara -2,147,483,648 sampai 2,147,483,647 atau maksimal 9
digit
 Angka tidak harus dijaga ketepatan jumlah digitnya dan bisa berupa pecahan (fractions) gunakan Single atau
Double karena keduanya memiliki rentang yang sangat luas.
 Apabila digit angka yang disimpan harus dijaga tepat apa adanya dan dapat berupa angka pecahan (fractions)
gunakan:
1. Tipe data Currency bila berupa nilai uang dengan ketepatan 4 digit dibelakang koma atau maksimal 14
digit.
2. Tipe data Variant bila nilai tidak boleh berubah (apa adanya) yang bisa mencapai 28 digit agar bisa diisi
nilai bertipe Decimal.
 Gunakan Tipe data Date untuk menyimpan data Tanggal, Waktu, atau Tanggal dan waktu sekaligus.
 Untuk tipe data Object:
1. Apabila Anda tahu nama objectnya, gunakan nama objectnya (misal range, worksheet, pivottable , dsb)
2. Apabila tidak tahu nama objectnya, gunakan Tipe Object
 Jika tidak pasti datatype-nya (sebisa mungkin dihindari), gunakan tipe data Variant karena bisa berubah
menjadi datatype sesuai dengan nilai datanya.
 Selain saran pemilihan data type diatas ada beberapa hal lain yang perlu anda perhatikan:
1. Jika nilai data yang akan disimpan melebihi batas datatype yang ditentukan atau malah
berbeda datatype-nya, maka akan menghasilkan error.
2. Penulisan angka atau number pada VBA selalu menggunakan format English atau
menggunakan karakter titik (.) sebagai tanda desimal
3. Penulisan date dalam VBA sebaiknya menggunakan format universal YYYY-MM-DD
untuk tanggal dan HH:mm:ss. untuk waktu
4. VBA akan berusaha mengkonversi datatype yang diinputkan menjadi sesuai dengan
yang dideklarasikan
5. Untuk dapat menggunakan datatype Decimal, maka variabel atau prosedur jenis function
harus menggunakan datatype Variant yang diisi dengan menggunakan fungsi CDec
seperti yang sduah dijelaskan sebelumnya.
Bahasa
Pemrograman
Materi – 5
Konstanta dan Variabel
pada VBA Excel

Hendramawat AS, ST,MT


Konstanta pada VBA Excel
 Penyimpanan data dalam bentuk variabel yang tetap dan tidak berubah biasa disebut
sebagai konstanta. Jadi Konstanta pada VBA Excel adalah tempat penyimpanan bagi
sebuah nilai tertentu yang mana nilai ini tetap dan tidak dapat berubah.
 Hal ini berarti bahwa saat digunakan Konstanta bersifat read only yang mana Nilai
dalam konstanta ditetapkan saat melakukan deklarasi konstanta.
 Contoh = 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.
Cara Mendeklarasikan Konstanta
 Konstanta pada VBA Excel ini ada 2 jenis:
1. 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.
2. Konstanta Simbolik adalah konstanta yang nilainya ditentukan oleh user
(Anda) dengan menggunakan keyword atau kata kunci "Const".
 Konstanta dibentuk atau di deklarasikan dengan keyword Const dengan scope level
minimal adalah pada scope level Module.
 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. Jika
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 adalah 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 adalah nilai yang ingin anda berikan untuk konstanta tersebut, tentunya harus sesuai
dengan tipe data yang Anda tentukan.
Contoh Deklarasi Konstanta
 Public Const Penulis As String = "Kang IM"
Private Const NamaBlog As String = "Kelas Excel"
Variable VBA Excel
 Variabel adalah nama lokasi memori yang digunakan untuk menyimpan atau
mewakili nilai tertentu yang dapat diubah selama eksekusi kode VBA.
 Pada dasarnya Variabel sama seperti konstanta yang memiliki nama dan tipe data
tertentu, bedanya saat kode berjalan nilai konstanta tidak dapat diubah sedangkan
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
yang tersimpan didalamnya (Read and Write).
 Variabel memiliki 3 karakteristik berikut:
1. Memiliki nama tertentu.
2. Marupakan lokasi penyimpanan nilai atau data di dalam memori komputer.
3. Digunakan oleh sebuah program.
Perlu Dipahami
1. Bagaimana Anda menentukan cara penyimpanan nilai atau data. Pembahasan
mengenai hal ini terkait erat tentang bagaimana Anda menentukan VBA
datatype (Tipe data) yang anda gunakan serta 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) dan
Lifetime of Variables (Umur Variabel).
Manfaat Mendeklarasikan Variabel VBA
 Beberapa alasan atau manfaat melakukan deklarasi variabel adalah sebagai berikut:
 1. Memungkinkan 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 sebuah variabel
sebagai 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 yang tidak sesuai pada variabel
tersebut.
 3. Mendeklarasikan variabel akan meningkatkan Readability atau tingkat keterbacaan sebuah kode. Hal
ini menjadikan proses Debug menjadi lebih mudah dan mengurangi resiko kesalahan atau error tertentu.
 Dengan Mendeklarasikan variabel secara explicit maka kode macro VBA yang kita
buat akan berjalan lebih cepat serta lebih efisien dalam penggunaan memori.
 Statemen Option Explicit yang digunakan pada setiap awal sebuah modul akan
memaksa untuk selalu mendefinisikan atau melakukan deklarasi Variabel.
 Dengan menggunakan statemen Option Explicit ini, Visual Basic Editor secara
otomatis mengoreksi ejaan nama variabel VBA yang dibuat.
Cara Mendeklarasikan Variabel VBA
 Syntax untuk mendeklarasikan Variabel VBA adalah sebagai berikut:
Keyword Nama_Variabel As Tipe_Data

Keterangan:
 Keyword" adalah salah satu dari statemen berikut: Dim, Public, Private atau Static.
 "Nama_Variabel" adalah nama yang ingin Anda gunakan sebagai pengenal
variabel.
 "Tipe_Data" adalah referensi ke tipe data dari variabel.
Contoh deklarasi Variabel VBA
 Kode VBA
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 kode lebih ringkas, Anda dapat juga menggunakan 1 keyword
Dim untuk mendeklarasikan beberapa variabel sekaligus dengan memisahkan antar
variabel mengunakan koma(,). Contohnya adalah sebagai berikut:
 Dim nomor_urut As Long, nomor_kode As String
 Variabel nomor_urut kita tentukan menggunakan tipe data Long, sedangkan nomor
kode kita tentukan sebagai String atau teks.
 Contoh lainnya adalah sebgai berikut:
 Dim nomor_A, nomor_B As Integer

Jika 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 jika kita bermaksud mendeklarasikan vaiabel nomor_A dan nomor_B sebagai
nilai Integer penulisannya harus seperti 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
singkatan tipe data kemudian
disambung dengan Nama yang
menggambarkan nilai variable
tersebut.
 Berikut beberapa singkatan yang
umum dipakai sebagai prefix atau
awalan nama Variabel:
 Contoh Nama Variabel:
 1. Untuk menamai variabel nomor urut dengan tipe Integer pakailah nama:
intNoUrut, int_No_Urut atau int_NoUrut.
 2. Untuk Variabel yang menyimpan nama orang misalnya gunakan nama str_Nama
atau s_Nama yang mana str atau sadalah singkatan dari tipe data String.
Aturan Khusus Saat Menentukan Nama Sebuah Variabel:
1. Menggunakan huruf sebagai karakter pertama. Karakter selanjutnya bisa berupa huruf, angka, dan 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 (seperti =, < atau >) atau karakter tanda baca tertentu (seperti jenis-deklarasi karakter @,
#, $,%, & dan !).
4. Nama variabel VBA tidak dapat 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.
5. Visual Basic for Applications tidak membedakan antara huruf besar dan huruf kecil. Misalnya, "A" sama dengan
"a".
6. Nama setiap variabel VBA yang digunakan harus unik dalam scope yang relevan. Artinya nama variabel tingkat
prosedur harus unik dalam prosedur yang relevan, nama variable level modul harus unik dalam modulnya, dan
seterusnya.
Cara Memasukkan Nilai ke Dalam Variabel
VBA
 Setelah mendeklarasikan Variabel, bagaimana cara memasukkan nilai ke dalam
variabel tersebut?
 Pada dasarnya 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 object
 Untuk Variabel ber-datatype object caranya adalah dengan menuliskan nama variable
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"
Variabel ber-datatype nonobject
 Untuk Variabel ber-datatype selain object caranya adalah dengan menggunakan keyword
"Set“ diikuti nama variabel, lalu diikuti tanda sama dengan (=) dan nilai dari variabel tersebut

Set Nama_Variabel = Ekspresi_Nilai_
 Contoh:
 Dim range_Data As Range
Set range_Data = Sheets("Sheet1").Range("A1")

 CATATAN, Tambahkan keyword/statement SET jika data pada variabel tersebut adalah
berupa object VBA.
Keyword Dim, Static, Public dan Private
 Seperti yang sudah dijelaskan di atas, Statemen atau keyword yang bisa digunakan untuk
mendeklarasikan sebuah variabel adalah sebagai berikut, tentunya masing-masing memiliki
tujuan tertentu:
 1. Dim
 2. Static
 3. Public
 4. 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).
 Perbedaan utama antara variabel VBA yang dideklarasikan menggunakan
Statement Dim dan Static adalah kapan variabel tersebut direset atau dibuang dari
memori. Hal ini menyangkut tentang lifetime seperti yang sudah saya singgung di
bagian atas.
 Sebagai aturan 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 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 dalam sebuah module atau
juga dapat digunakan oleh prosedur lain meskipun berbeda module.
Scope Procedure-Level atau Local VBA
 Seperti yang ditunjukkan oleh namanya, variabel tingkat prosedur atau variabel lokal
hanya dapat digunakan dalam 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 yang sama untuk beberapa variabel pada prosedur yang berbeda.
 Sebelum melanjutkan silahkan buat sebuah file baru 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.
Kode VBA
Option Explicit
Sub Latihan_Lokal_Variabel1()
 Berikutnya silahkan lakukan latihan
berikut: Dim int_Angka1 As Integer
Dim int_Angka2 As Integer
 1. Pada file yang telah kita buat tadi int_Angka1 = 5
buatlah sebuah module dengan nama int_Angka2 = int_Angka1 + 10
"Module1". MsgBox "Nilai Variabel int_Angka1 adalah: " &
int_Angka1 & Chr(10) & _
 2. Pada Module1 ini tuliskan kode VBA di "Nilai Variabel int_Angka2 adalah: " &
samping int_Angka2
End Sub
 3. Jalankan masing-masing prosedur di atas
Sub Latihan_Lokal_Variabel2()
Kode "MsgBox" pada VBA digunakan untuk Dim int_Angka1 As Integer
Dim int_Angka2 As Integer
menampilkan kotak pesan dengan isi tertentu.
Kode "&" digunakan untuk menggabungkan nilai int_Angka1 = 10
int_Angka2 = int_Angka1 * 2
satu dengan nilai lainnya seperti pada rumus excel.
Kode "Chr(10)" digunakan untuk membuat Enter MsgBox "Nilai Variabel int_Angka1 adalah: " &
int_Angka1 & Chr(10) & _
atau ganti baris pada message box, cara lain Anda "Nilai Variabel int_Angka2 adalah: " &
bisa menggunakan "vbCrLf". int_Angka2

End Sub
 Pada Module1 tersebut kita membuat 2 buah Prosedur dengan nama
Latihan_Lokal_Variabel1 dan Latihan_Lokal_Variabel2.
 Pada masing-masing prosedur ini kita mendeklarasikan 2 buah Variabel dengan
nama int_Angka1 dan int_Angka2.
 Saat dijalankan prosedur pertama menghasilkan kotak pesan sebagai berikut:

 Saat dijalankan prosedur kedua menghasilkan kotak pesan sebagai berikut:

 Hal ini menunjukkan bahwa masing-masing variabel berjalan secara lokal pada procedure terkait
dan segera dihapus nilainya saat prosedur berakhir.
 Selanjutnya silahkan tambahkan sebuah prosedure lain berikut ini pada Module1
dibawah kedua prosedur tadi:
 Kode VBA
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 prosedur Latihan_Lokal_Variabel3. Apa yang
terjadi?
 Latihan_Lokal_Variabel3 tidak mengenal Variabel int_Angka1 dan int_Angka2, sebab
Variabel int_Angka1 dan int_Angka 2 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 prosedure pada module tersebut secara bergantian.
 Meskipun kode tidak error pada dasarnya, VBA mendeklarasikan int_Angka1 dan
int_Angka2 secara Implicit. Yang berarti bahwa tipe data yang 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 sudah dapat mengambil pemahaman tentang 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 jika Anda menghendaki VBA dapat mengakses sebuah Variabel dari prosedure
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 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 seperti
pada halaman setelah ini
Kode VBA
Option Explicit Sub Latihan_LevelModule_Variabel2()
str_Teks = "www.kelasexcel.id"
int_Angka = 2018
Dim str_Teks As String
Dim int_Angka As Integer MsgBox "Latihan_LevelModule_Variabel2" & Chr(10) &
Chr(10) & _
"Nilai Variabel str_Teks adalah: " & str_Teks &
Sub Latihan_LevelModule_Variabel1() Chr(10) & _
str_Teks = "Belajar VBA Excel Dasar" "Nilai Variabel int_Angka adalah: " & int_Angka
int_Angka = 1439 End Sub

Sub Latihan_LevelModule_Variabel3()
MsgBox "Latihan_LevelModule_Variabel1" & Chr(10) & MsgBox "Latihan_LevelModule_Variabel3" & Chr(10) &
Chr(10) & _ Chr(10) & _
"Nilai Variabel str_Teks adalah: " & str_Teks & "Nilai Variabel str_Teks adalah: " & str_Teks &
Chr(10) & _ Chr(10) & _
"Nilai Variabel int_Angka adalah: " & int_Angka "Nilai Variabel int_Angka adalah: " & int_Angka
End Sub End Sub
 Jika sudah, selanjutnya silahkan jalankan masing-masing prosedure di atas secara
bergantian dengan urutan sebagai berikut. Sebelumnya tekan tombol reset pada
menu VBE untuk memastikan semua Variabel telah di reset ulang:
 1. Latihan_LevelModule_Variabel3

2. Latihan_LevelModule_Variabel1 kemudian Latihan_LevelModule_Variabel3


 3. Latihan_LevelModule_Variabel2 kemudian Latihan_LevelModule_Variabel3
 Dari latihan ini anda bisa dapatkan bahwa dengan Kode VBA
melakukan deklarasi Variabel pada awal baris Dim str_Teks As String
deklarasi atau sebelum mendeklarasikan prosedur, Dim int_Angka As Integer
tepatnya dibawah statement "Option Explicit",
maka Variabel tersebut memliki scope level Bisa juga anda tulis dengan
module.
Kode VBA
 Artinya Variabel VBA tersebut bisa dikenali oleh Private str_Teks As String
semua prosedur dalam module yang sama dan Private int_Angka As Integer
tidak terjadi error seperti pada contoh latihan
sebelumnya pada bagian Scope Procedure-Level Menggunakan keyword Private pada kasus ini akan
memberikan efek yang sama dengan statemnet Dim. Untuk
atau Local VBA.
alasan inilah, agar sebuah kode lebih mudah dibaca maka
 Pada contoh deklarasi diatas, untuk mendapatkan kita dapat menggunakan Statement Private. Sebab secara
scope level module selain mendeklarasikan dengan umum kita akan
mendeklarasikan sebuah variabel dengan Dim sehingga saat
keyword Dim Anda juga dapat mendeklarasikan anda menggunakan Keyword Private maka akan menjadi
Variabel tersebut dengan statement Private. pembeda, sehingga lain waktu anda membaca ulang kode
Sehingga kode: tersebut pesan yang disampaikan oleh kode tersebut akan
lebih mudah untuk kita baca.
 Sekarang buat 1 Modul lagi dengan nama "Module3". Kemudian tuliskan kode
Macro VBA Excel berikut pad modul tersebut:
 Kode VBA
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
 Untuk mendeklarasikan variabel VBA pada scope Public, deklarasinya harus
memenuhi persyaratan berikut:
1. Deklarasikan variabel tersebut seperti deklarasi tingkat modul yang dituliskan
pada awal modul diluar semua prosedur.
2. Gunakan Statement Public sebagai pengganti Statament Dim.
3. Deklarasi variable 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.
 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:
 Kode VBA
Public str_Teks As String
Public int_Angka As Integer

 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 variable kemudian jalankan lagi prosedur Latihan_LevelPublic_Variabel
pada module3.
 Sampai disini anda sudah memahami tentang bagaimana mengatur scope atau
ruang lingkup sebuah variabel.
 Yang perlu Anda catat sebaiknya gunakan scope yang 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.
Lifetime Variable VBA
 Istilah "lifetime" atau terkadang disebut "life" saja mengacu pada berapa lama sebuah variabel
disimpan dalam 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 yang dinyatakan dengan pernyataan Dim dihapus atau direset dari
memori ketika prosedur tersebut selesai (End Sub).
 Tingkat prosedur Variabel static, variabel tingkat modul, dan variabel public mempertahankan
nilainya antara panggilan prosedur (Tidak dihapus/direset).
 Agar lebih jelas Lakukan kegiatan berikut:
1. Buat sebuah modul baru dengan nama "Module4" pada file yang telah kita buat sebelumnya
tadi.
2. Buat sebuah prosedur public dengan nama "TestVarabelStatic".
3. 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.
4. Setelah 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 berikut:
Kode VBA
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 yang anda lakukan benar maka kode yang Anda buat pada Module1
akan terlihat seperti ini:
 Kode VBA
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 prosedur tersebut.


 Pada saat 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 prosedure tersebut dan lihat hasilnya.

 Pada saat dijalankan kedua kali ternyata nilai Variabel int_Var1 tetap 5 sedangkan nilai int_Var2
menjadi 10 dan terus berubah bertambah 5 saat dijalankan ulang. Kenapa demikian?
 Hal ini disebabkan Variabel int_Var2 kita deklarasikan sebagai Static, sehingga pada akhir
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 TestVariabelStatic beberapa kali dan perhatikan nilai
yang dihasilkan.
 Lalu bagaimana untuk mereset nilai Static tadi? Untuk contoh kasus ini gunakan tombol
menu reset pada VBE seperti yang sudah dijelaskan sebelumnya.

 Selain digunakan pada Variabel. Keyword atau statement Static bisa juga digunakan pada
level prosedur, hal ini akan menjadikan semua Variabel didalam prosedure tersebut memiliki
lifetime yang lebih lama atau tidak segera di hapus saat akhir prosedur
 Pada module4 di bawah akhir prosedure tadi tambahkan script atau kode VBA
berikut:
 Kode VBA
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 prosedur ini diperlakukan layaknya sebuah
variabel static bukan?

Anda mungkin juga menyukai