BEKERJA DENGAN
Hampir
semua kode VBA melibatkan variabel. Walaupun VBA memungkinkan fleksibilitas
dalam menyatakan variabel, fleksibilitas tersebut dapat menyebabkan praktek
coding yang buruk. Bab ini akan menjelaskan paktek-praktek baik yanh harus anda
kuasai tentang pernyataan variabel.
Ketika
mengadopsi praktik-praktik ini, ada kemungkinan penulisan kode menjadi lebih
banyak, namun dengan praktik tersebut akan membuat kode anda berjalan lebih
cepat dan lebih mudah untuk diatur dan debug di masa depan.
o
Menyatakan/Mendeklarasikan Variabel
Variabel
adalah tempat untuk menyimpan data di memori, yang dapat dipanggil kembali,
diubah ,atau tetap sama selama fungsi, prosedur,atau modul tersebut dieksekudi.
Variant
(dengan nomor)
|
Nilai numerik apapun
sampai dengan range Double
|
x = 10
|
Variant
(dengan karakter)
|
Rentang sama untuk
variabel string
|
x=”10”
|
Type (User-defined)
|
Rentang setiap elemen
adalah sama dengan range tipe datanya.
Type struSiswa
Nama As String*35: NIK As
String*7
Jurusan As String:TglDaftar As
Date
End Type
|
|
Object
|
Variabel Object digunakan untuk menggantikan ojek
(kontrol).
Dim Tombol As CommandButton,
LatarBlkg As Form
Set Tombol = Command1
Set LatarBlkg = Form1
Tombol.Caption = “Mulai”
LatarBlkg.Caption = “Selamat Datang”
|
o
Ketentuan Dalam Pernyataan Variabel
Menentukan
variabel biasanya dilakukan pada awal kode program dan merupakn bagian dalam
satu prosedur. Variabel yang dinyatakan pada sebuah form atau prosedur hanya
dikenal pada frm atau prosedur tersebut.
a)
Harus diawali dengan huruf dan tidak boleh menggunkan angka.
Dim 1 As
Integer ‘salah
Dim 3dimensi
As Srting ‘salah
b)
Panjang nama variabel dibatasi sampaip 255 karakter
c)
Tidak boleh menggunkan karakter berikut ( %, &, !, #,@, $,spasi)
meskipun karakter tersebut terletak ditengah atau dibelakang.
Menikah&Pria = True ‘salah karena ada &
Diskon%bln = 0.1 ‘salah karena ada %
Total biaya = 100 ‘salah karena ada spasi
d)
Tidak boleh menggunakan kata kunci (keyword) bahasa VB.
Print = 10
‘salah karena Print itu kata kunci VB
e)
Pada umunya nama variabel diawali dengan huruf besar. Namun, bahasa VB
tidak bersifat case-sensitive sehingga nama variabel yang diawali dengan huruf
besar ataupun kecil akan dianggap sama.
f)
Inisialisasi variabel berarti variabel tersebut diberi nilai awal.
Dim Jumlah As Integer, Tgl As Date, Nama As
String
Jumlah = 10
Tgl = #1/2/2009#
Nama =
“Evelyn”
g)
Menetukan variabel dengan cara eksplisit
Dim Jumlah
As Integer
h)
Menentukan variabel dengan cara implisit.
Jumlah% = 100
Nama$ = “Evelyn”
i)
Anda dapat menetapkan variabel dengan cara implisit dan menggunakan
singkatan seperti berikut.
x% =
100 ‘% - Integer
x& = 1000000 ‘& - Long
x! = 10000 ‘!
– Single
x# = 100,000 ‘# - Double
x@ = 100 ‘@
- Currency
x$ = “Macro” ‘$ - String
j)
Variabel yang digunakan tanpa pernyataan akan langsung dianggap sebagai
tipe variant(angka atau teks).
Dim Jumlah, Harga, Tgl
Jumlah=”10” : Harga = Jumlah*10.35 : Tgl=#08/17/2009#
k)
Untuk memaksa agar semua variabel
harus dinyatakan terlebih dahulu sebelum dapat digunakan, krtik perintah Option
Explicit pada bagian nawal kode program.
o
Pernyataan Eksplisit
Sebuah variabel dinyatakan/ditetapkan
secara eksplisit jika anda menetapkan variabel tersebut menjadi tipe data
tertentu. Jika anda tidak menentukan tipe data, maka tipe data variabel
ditetapkan secara default.
Contoh
:
Baris kedua “Dim x As Integer” menyatakan
sebuah variabel dengan nama x dengan tipe data integer dan kemudian diberi
nilai awal (inisialisasi) sebesar 6 (dibaris ketiga). Pada baris keempat,
sel,A1 diberikan nilai variabel x.
Contoh :
Variabel bertipe double lebih akurat dari pada variabel bertipe integer, selain itu variabel Double dapat menyimpan nomor setelah koma. Dalam kode berikut, MsgBox menampilkan nilai 6 (bukan 5.5) karena data disimpan sebagai integer.
Untuk menampilkan nilai 5.5. dalam kode x, anda perlu menyatakan variabel tersebut sebagai tipe Double seperti berikut .
Contoh :
Posisi pernyataan deklarasi sangat penting karena akan menetukan apakah variabel itu tersedia untuk digunakan diseluruh modul atau hanya dalam prosedur saat ini. Contoh berikut menyatakan variabel LembarKerjaSaya beripe String dalam subroutine, DeclareString.
Namun, apanila anda menjalankan makro ini, error akan
muncul karena DataSaya=ActiveWorkbook.Name tidak valid karena nilai dalam
ActiveWorkbook.Name tidak berupa tipe integer tetapi berupa tipe string.
Ketika anda klik pada tombol debug, excel akan menyoroti
kode yang salah dalam Vusial Basic Editor (VBE)
Jika anda
menetapkan DataSaya sebagai String maka dataSaya = ActiveWorkbook.Name akan
menjadi valid.
Contoh
:
Anda
dapat menggunakan variable Boolean untuk menampung nilai True/False.
Jika variable, Lulus =True,
pernyataan MsgBox akan menampilkan pesan “Saya Lulus UAS”.
Contoh
:
Anda
dapat membuat tipe data user-defined yang dapat mengandung satu atau lebih
elemen dari tipe data,array,atau tipe data yang ditetapkan sebelumnya. Dalam
contoh berikut, variable struSiswa terdiri dari variabel Nama,NIK,Jurusan,
dan TglDaftar.
o Menggunakan OPTION Explicit
Secara default, VBA
tidak mengharuskan anda untuk menyatakan variabel dengan menggunakan pernyataan
Dim. Apabila compiler bertemu dengan variabel dengan nama (misalnya BoKTP) yang
belum ditetapkan debagai variabel, atau sebagai salah satu kata kunci (keyword)
VBA, atau property/metode dari typelib yang direferensikan, maka compiler
secara otomatis akan membuat variabel baru dengan nama tersebut.
Walaupun ini dapat
dilakukan secra otomatis, namun dapat menimbulkan kesalahan dalam kode yang
sulit untuk ditemukan. Misalnya, jika anda menyatakan sebuah variabel jumlah
dan kemudian menulis variabel itu sebagai jumlah (karena kesalahan dalam
ejaan), VBA tidak akan menandai itu sebagai kesalahan.
Sebaliknya,VBA akan
membuat variabel baru dengan nama Jmlah tersebut.
Ini berarti variabel Jmlah dan jika program itu
panjang, anda mungkin akan mengalami kesulitan menemukan kesalahan tersebut.
Anda dapat mencegah
kesalahan ini dengan megharuskan semua variabel dideklarasikan dengan pernyataan
Dim dan menulis Explicit Option pada baris pertama dari kode anda.
Explicit Option
Jika anda menulis
Explicit Option dibagian atas macro anda berarti anda harus menyatakan semua
variabel dan konstanta yang akan digunakan.
Jika anda tidak menyatakan variabel/konstanta, anda
akan mendapatkan pesan kesalahn seperti berikut.
Anda dapat menambahkan pernyataan Option Explicit
secara otomatis di semua kode baru anda (tetapi ridak untuk kode yang ada
akerena harus dilakukan secara manual) dengan memilih menu Tools > Options
> tab Editor > centang/ceklis Require Variable Declaration.
Ketika anda membuat
macro baru, pernyataan Option Explicit secara otomatis akan disisipkan pada
baris pertama macro anda.
o Hindari menggunakan Tipe data
variant !
VBA mendukung tipe data
variant yang dapat menyimpan semua jenis data. Jika anda mengakibatkan klusul
As[tipe] dalam deklarasi/pernyataan variabel. Variant akan menjadi tipe
delfault. Namun cara penulis ini dapat meningkatkan waktu proses karena
compiler tersebutu harus menambahkan kode tambahan untuk menguji jenis data
yang disimpan dalam variabel tersebut.
Hal ini dilakukan
dengan cara memberikan “Return Value” yang berbeda untuk tiap jenis data dalam
variabel tersebut.
Hal ini dilakukan
dengan cara memberikan “Return Value” yang berbeda untuk tiap jenis data dalam
variabel tersebut.
Tipe Data
|
Return Value
|
Empty
|
0
|
Null
|
1
|
Integer
|
2
|
Long
|
3
|
Single
|
4
|
Double
|
5
|
Currency
|
6
|
Data/Time
|
7
|
String
|
8
|
Untuk mengecek nilai “Return Value” dari suatu
variabel variant, anda dapat menggunakan perintah VarType seperti berikut.
Hasil :
Selain itu, variabel bertipe variant membutuhkan lebih banyak
memori. Oleh karena itu, aplikasi anda akan lebih efisien jika anda menetapkan
variabel secara eksplisit dengan menentukan tipe data untuk masing-masing
variabel yang digunakan. Deklarasi atau pernyataan secara eksplisit akan
mengurangi timbulnya konflik penggunaan nama variabel yang sama atau kesalahan
ejaan.
o Menggunakan
Sau Dim Untuk Pernyataan Variabel
Anda dapt menyatakan lebih dari satu
variabel dengan satu pernyataan Dim. Namun, anda harus memahami bagaimana
variabel tersebut akan ditentukan jenis tipenya. Perhatikan kode berikut.
tipe
delfault. Namun cara penulis ini dapat meningkatkan waktu proses karena
compiler tersebutu harus menambahkan kode tambahan untuk menguji jenis data
yang disimpan dalam variabel tersebut.
Hal ini dilakukan
dengan cara memberikan “Return Value” yang berbeda untuk tiap jenis data dalam
variabel tersebut.
Hal ini dilakukan
dengan cara memberikan “Return Value” yang berbeda untuk tiap jenis data dalam
variabel tersebut.
Anda
mungkin berpikir bahwa ketiga variabel akan ditetapkan sebagai tipe integer.
Hanya variabel L yang dinyatakan sebagai tipe Integer. Variabel J dan K
dinyatakan sebagai tipe Variant. Pernyataan ini secara fungsional akan sama
dengan berikut.
Anda harus menggunakan klausa As [tipe] untuk setiap variabel yang ditetapkan apabila menggunakan satu pernyataan Dim sebagai berikut.
o Menetukan
Batas Array
Ketika anda mentukan array statis (dengan batas dalam pernyataan Dim) atau menggunakan REDim untuk menetapkan batas, maka VBA memungkinkan anda untuk menentukan hanya batas atas saja dan bukan bats atas dan batas bawah. Secara default, batas bawah array adalah 0, sehingga peentuan array pada kode berikut akan membuat array dengan dua elemen, yaitu harga(0) dan Harga (1).
Dim Harga(1) As Double
Namun,
anda dapat menetapkan default batas bawah untuk semua array dalam modl sengan
direktif compiler sebagai berikut yang menetapkan bahwa semua array akan
menggunakan 1 sebagai batas bawah.
Jika
kemudian anda menetapkan array seperti diatas, Dim Harga(1) As Double, anda
telah membuat sebuah array hanya dengan satu
elemen, yaitu Harga(1). Ini dapat menyebabkan masalah saat anda menyalin
kode dari satu modul ke modul yang lain.
Untuk
menghindari masalah ini, anda harus sealu menentukan batas bawah dari Array yang anda buat dan anda
harus selalu menggunakan fungsi LBound untuk mendapatkan batas bawah array.
Lalu,
bagaimana mengatur pengulangan melalui array?
Anda harus selalu menggunakan fungsi LBound dan UBound untuk memulai dan
mengakhiri pengulangan pada nilai indeks yang benar sebagai berikut.
Contoh :
Jika array ditentukan dengan pernyataan Option Base 1, maka
elemen pertama yaitu harga (0) akan dilewatkan. Maka anda sebaliknya
menggunakan fungsi LBound dan UBound untuk mendapatkan batas array.
Dengan
menggunakan pedoman yang ditetapkan di atas, kode yang anda buat akan lebih
efisien, lebih cepat, dan lebih mudah untuk debug dan diatur.
o
Notasi
Hungarian
Banyak programmer lebih
suka menggunakan Notasi Hungarian dimana
setiap nama variabel dimulai dengan huruf yang mengidentifikasi jenis data.
Misalnya, variabel bertipe integer akan diberi nama intCounter, dimana awalan
int menunjukkan bahwa variabel ini bertipe integer. Tabel berikut menunjukkan
awalan (prefix) yang umum digunakan untuk setiap tipe data.
|
|
Jenis Data
|
Awalan
|
Contoh
|
Boolean
|
bln
|
blnLanjut
|
|
Byte
|
byt
|
bytNilaiWeekday
|
|
Collection Object
|
col
|
colWidgets
|
|
Currency
|
cur
|
curBiaya
|
|
Date (Time)
|
dtm
|
dtmTglPesan
|
|
Double
|
dbl
|
dblSales
|
|
Error
|
rtt
|
errNoFaktur
|
|
Integer
|
int
|
intKuantitas
|
|
Long
|
lng
|
lngJarak
|
|
Object
|
obj
|
objWordDoc
|
|
Single
|
sng
|
sngNilaiPpn
|
|
String
|
str
|
strNamaCostomer
|
|
Variant
|
vnt
|
vntColumnData atau varColumnData
|
o
Konstanta
Konstanta merupakan
sebuah variabel yang tidak dapat diubah nilainya ketika program berjalan. Ada
dua jenis konstanta.
Konstanta intrinsic,
yaitu konstanta yang disediakan oleh VBA yang sealu disertai kata vb pada
bagian awal konstanta (misalnya, VYesNo)
atau yang disediakan
Oleh Excel yang selalu
disertai kata xl pada bagian awal konstanta (misalnya, xlDialogOpen), dan
konstanta user yang dapat anda buat sendiri dengan kata kunci Conts.
Sintaks deklarasi/pernyataan sebuah konstanta kurang
lebih seperti berikut .
Contoh :
Contoh berikut menetapkan konstanta JUDULBUKU dan diberi nilai “Pintar Macro Excel 2007/10”. Oleh karena itu, dimana pun konstanta JUDULBUKU digunakan, nilai yang akan dikembalikan adalah “Pintar Makro Excel 2007/10”.
Proses :
Hasil :






















Comments
Post a Comment