Macro
Sebenarnya adalah sebuah script pada sebuah aplikasi (tidak hanya excel/office tapi juga
aplikasi-aplikasi lainnya) untuk membuat otomatisasi. Script tersebut, akan memerintahkan
aplikasi untuk melakukan pekerjaan yang sama secara berulang-ulang.
Selanjutnya, macro tak hanya menjalankan script, tapi juga dapat merekam kegiatan keyboard
dan mouse. Alhasil, pengguna aplikasi tersebut, cukup melakukan pekerjaan satu kali saja,
merekamnya dan aplikasi akan menuliskan scriptnya. Selanjutnya, pengguna cukup
menjalankan script tersebut untuk melakukan pekerjaan yang sama.
VBA
Visual Basic for Application adalah turunan dari bahasa pemrograman Visual Basic milik
Microsoft. Namun berbeda dengan Visual Basic yang digunakan untuk membuat sebuah
aplikasi stand alone (berdiri sendiri), maka VBA didesain untuk bekerja diatas sebuah aplikasi.
Gampangnya, VBA memang didesain untuk menumpang pada sebuah inang. VBA tidak
membuat EXE. VBA hanya bisa dijalankan diatas inang tersebut.
Lalu, apa inangnya?
Inangnya adalah aplikasi-aplikasi yang membeli VBA dari Microsoft. Dan contoh inang dari VBA
adalah MS Office yang salah satu aplikasinya adalah MS Excel.
Macro + VBA pada MS Office
Jadi, MS Office yang salah satu produknya adalah Excel, memiliki Macro untuk proses
otomatisasi.
Dan Macro pada MS Office, menggunakan VBA. Alhasil, sintaks dan routin script macro pada
Excel, sama persis dengan VB.
Karenanya, jika anda pengguna bahasa pemrograman VB, maka anda tak akan kesulitan
dengan Macro Excel.
Dan jika anda sudah familiar dengan Macro Excel, akan mudah untuk belajar VB.
Variable
Variable itu seperti sebuah wadah. Sebut aja Baskom. Nah, baskom ini bisa kita isi benda,
misalkan beras. Setiap saat, kita bisa mengisi sejumlah beras ke dalam baskom, dan setiap saat,
kita juga bisa mengambilnya lagi.
Dan ketika kita sudah memberi label pada sebuah variabel (melakukan deklarasi) dengan
menentukan jenis data type yang boleh masuk ke variable tersebut, maka data type lainnya
tidak boleh dimasukkan ke variable tersebut.
Kenapa jenis data harus dibeda-bedakan antara satu variable dengan variable yang lain?
Seperti pengandaian tadi, misal tepung digabung sama air, bisa jadi bakwan kan? Nah, begitu
pula alasan kenapa ada data type. Selain meminimalisasi error, juga untuk efisiensi penggunaan
penyimpanan.
Misal begini, kita punya benda duren. Kalo bendanya itu duren, maka baskom yang dibutuhkan
adalah baskom besar. Karena wujud duren itu emang besar. Tapi untuk baskom beras, gak perlu
besar-besar.
Dan tentu gak akan efisien kalo kita menggunakan baskom duren untuk menyimpan beras.
Jadi, kita butuh Data Type yang berbeda-beda sesuai kebutuhan.
Data Type
Range
Byte
0 s/d 255
Besar
Penyimpanan
1 byte
Data type ini berupa angka dari0 s/d 255. Tiapangka, akandikodekan dalam
binary sebesar1 byte (8 bit). Misal, angka 1 yang kita beri labelData Type Byte, akan
dikodekandalam 8 bit menjadi 00000001.
Sedangkan255 dikodekan menjadi11111111.
Boolan
True or False
2 byte
Data type ini hanya memiliki 2 datayaitu "True" dan "False". Disimpan sebagai Integer 16bit (2
byte).
"True" = 1 dalam binerInteger, dan "false" = -1 dalambiner Integer. Bagaimana Integer
disimpan dalambiner dapat dilihat pada bagianData Type Integer dibawah.
Integer
2 byte
Data type ini dikodekan dalam biner dengan meggunakan sistem "Two's Complement".
Klik disini untuk penjelasan lengkapnya.
Long
(long integer)
4 byte
Seperti pada data type Integer, namun 2 kali lebih besar kapasitasnya.
Single
(single
precision
4 byte
floating-point)
Jika Integer hanya menampung bilangan bulat, maka Data Type Single dapat menampung
bilangan pecahan. Data Type Single dikodekan dalam biner dengan menggunakan Standar
IEEE 754 Binary32.
Silahkan klik disini untuk penjelasan lengkapnya.
Double
(double
nilai negatif;
precision
floating-point)
8 byte
Sama dengan Data Type single namun 2 kali lebih besar. Pengkodeannya
menggunakan Standar IEEE 754 Binary64.
Klik disini untuk penjelasan lengkap.
Currency
(scaled
integer)
8 bytes
Jika ada tertulis 24002500, maka untuk Data Type Currency akan dianggap sebagai
2400.2500. Jadi, 4 angka terakhir akan otomatis dianggap angka dibelakang koma. Currency
disimpan ke dalam binary dalam format integer seperti pada data type integer.
+/-79,228,162,514,264, 337,593,543,950,335
tanpa titik desimal;
Decimal
+/-7.9228162514264337593543950335
14 bytes
8 bytes
Any Objectreference
String
(variable-
0 to approximately 2 billion
length)
String
(fixed-length)
1 to approximately 65,400
4 bytes
10 bytes +
string length
Length of
string
String di kodekan dalam biner dengan menggunakan kode ASCI dan UTF-16.
Variant
16 bytes
(with
numbers)
Variant
(with
characters)
22 bytes +
string length
Data Type Variant adalah data type yang menampung semua jenis data type.
User-defined
(usingType)
Number
required by
elements
Jika anda tidak menemukan Tab Developer, maka anda harus memunculkannya terlebih dahulu. Dan
jika belum tahu caranya, berarti anda belum baca tutorial pada link "Baca dulu" di atas. Ayo! Baca dulu..
Jika anda sudah meng-klik Menu Visual Basic, maka akan muncul Window VB Editor seperti gambar
berikut:
Nah, anggap saja, kita akan menulis Program VBA untuk pertama kali. Karena itu, kita harus
membuka code editor yang akan menjadi tempat menuliskan baris program kita.
Code Editor, bisa berada di Object Sheet, Object Workbook, Object Form atau juga Object Module.
Apa itu semua???
Waduh, berarti belum pernah denger OOP ya? Kalo belum, baca penjelasan singkat berikut ya..
VBA berasal dari Visual Basic (VB) yang merupakan bahasa pemrograman berbasis OOP (Object Oriented
Programming).
Gampangnya, cara memahami VBA adalah seperti memahami suatu object sehari-hari. Contoh yang
paling mudah misalkan Kucing. Ya, Kucing adalah object seperti halnya meja, pohon, bahkan kita
(manusia) juga object.
Kembali ke contoh object Kucing.
Ada banyak spesies Kucing, salah satunya adalah kucing anggora. Nah anggap aja, sekarang ada kucing
anggora bernama MANISE.
Seperti pada umumnya, kucing MANISE ini bisa bersuara "Meong" atau kita sebut mengeong. Selain itu,
kucing MANISE juga bisa tidur, makan, dan sebagainya.
Kucing MANISE juga memiliki warna yang bermacam-macam. Bentuk tubuh, panjang ekor yang juga
bermacam-macam.
Selain itu, saat kita elus kepalanya, kucing tersebut juga akan menjadi manja.
Jadi.. Kalo kita hubungkan Kucing dengan VBA, maka Kucing adalah Object.
Kucing bisa mengeong, tidur, makan dan aktifitas lainnya maka pada Object VBA aktifitas itu disebut
METHOD.
Kucing memiliki warna yang bermacam-macam, panjang ekor yang bermacam dan lain-lain, maka pada
Object VBA karakteristik itu disebut PROPERTIES.
Kucing juga jadi bersikap manja saat kita elus, maka pada Object VBA perilaku itu disebut BEHAVIOR
(EVENT).
Jadi, sebuah Object pada VBA akan memiliki Method, Properties dan Event.
Oke, itu dulu tentang OOP. Sekarang kita lanjut ke Object Module..
Apa itu Module?
Module adalah salah satu object VBA. Berbeda dengan Object Worksheet yang nampak di MS Excel,
Module hanya berisi Code Editor saja. Dan di Code Editor pada Module inilah kita akan menulis baris
program.
Secara Default, Module belum muncul. Untuk memunculkannya, pada VB Editor lakukan, klik kanan -> pilih Insert --> Pilih Module.
Maka akan muncul Module. Ingat, Module adalah Object yang hanya berisi Code Editor saja. Lihat
gambar dibawah.
Selain itu, dari Excel, kita juga bisa membuka Code Editor dengan Klik Kanan pada Tab Sheet --> Pilih
View Code.
3. Menulis Program
Untuk permulaan, kita akan mencoba menulis program yang sangat sederhana. Kita akan memunculkan
sebuah window pop-up!
Lihat gambar dibawah:
Semua baris program, harus berada di dalam antara Sub "nama" () dan End Sub. Dan ini kita sebut
sebagai prosedur.
Setiap prosedur harus kita beri nama. Pada gambar diatas, nama prosedur adalah: Pesan. Jadi baris
programnya adalah sebegai berikut:
Sub Pesan ()
MsgBox "Halo, ini VBA Code pertama saya!"
End Sub
MsgBox adalah fungsi untuk memunculkan window pop-up.
Dah, selesai baris program kita.
4. Menjalankan Baris Program dengan Button Controls Form
Setelah kita membuat prosedur, maka langkah berikutnya adalah memanggilnya.
Sekarang, coba buat sebuah Button Controls Form. Silahkan baca tutorial tentang ini pada link
"Baca dulu".
Setelah membuat Button Controls Form (ingat, gunakan Button yang Controls Form), maka akan
muncul window yang meminta kita untuk menyematkan sebuah macro pada Button yang telah kita
buat. Yang dimaksud dengan macro ini adalah prosedur yang sebelumnya telah kita buat.
Dan.. Ternyata, prosedur yang tadi telah kita buat ada disana. Kita cukup pilih Prosedur (Macro) Pesan
dan klik OK.
5. Inilah hasilnya
Kalau semua sudah OK, sekarang coba klik di cell sembarang agar Button yang baru saja kita buat tidak
ter-pilih.
Ciri-ciri Button sedang ter-pilih adalah, muncul titik-titik disekeliling Button. Dan saat kita tidak sedang
memilihnya, titik-titik itu hilang. Lihat gambar dibawah:
Dan, jika button tidak sedang terpilih, saat kursor kita berada di atas button, maka kursor kita akan
berubah menjadi gambar Jari. Lihat gambar dibawah.
Mengenal Statement
Sip..! Kita mulai dari pertanyaan, apa itu Statement di VBA Excel?
Statement di VBA adalah rangkaian kata-kata yang bisa dipahami oleh VBA agar VBA melakukan sesuatu
sesuai keinginan kita. Agar bisa dipahami oleh VBA, kata-kata itu harus mengikuti aturan.
Anggap aja kita sedang bermain kode dengan teman kita. Sebelumnya, kita sudah punya kesepakatan
urutan-urutan cara menulis kode. Agar bisa dipahami teman kita, maka kode yang kita tulis harus sesuai
aturan yang kita sepakati. Dan kali ini, teman kita adalah VBA.
So, say hi to VBA.. Hi...!
1. Declaration Statement
Sesuai namanya, Declaration (Deklarasi), statement ini digunakan untuk mendeklarasikan procedure,
variable, array dan constant.
Woi, apaan semua itu?
Tenang, kita akan mempelajarinya di tutorial lainnya. Jadi, untuk saat ini, kita cukup tahu namanya dulu.
Oke..
Kita coba pahami maksud kata, mendeklarasikan. Maksudnya mendeklarasikan disini adalah,
mengumumkan kepada VBA, bahwa kita telah membuat procedure, variable, array dan constant.
Artinya, VBA tidak boleh mengijinkan, jika ada yang menggunakan nama yang sama.
Di dalam deklarasi inilah kita menentukan jenis dan scope item yang kita deklarasikan.
Analoginya seperti ini:
Saya punya usaha yang saya beri nama Bebek Ngarasan. Agar orang-orang tidak menggunakan nama
yang sama untuk usaha mereka, maka saya mendeklarasikan ini ke pemerintah.
Dalam deklarasi saya ini, saya menyebutkan jenis usaha saya yaitu rumah makan. Sehingga, orang yang
akan datang ke tempat usaha saya, bukan orang-orang yang mau menjahitkan pakaian, atau cabut gigi,
tapi orang yang lapar dan ingin makan.
Selain jenis usaha, saya juga harus menyebutkan scope (cakupan) usaha saya. Apakah nama saya ini
berlaku untuk di kota ini saja, ataukan se provinsi saja, atau dalam negara ini saja, atau bahkan seluruh
dunia? Jika saya cuma pilih di kota ini saja, maka orang lain boleh membuat nama yang sama di kota
lain.
Kita liat contohnya ya..
Sub ContohProc()
Const Jumlahmobil As Integer
Dim Namakaryawan As String
' Statement-statement lainnya
End Sub
2. Assignment Statement
Statement ini, digunakan untuk menugaskan sebuah nilai
ataupun expresions pada Variable dan Constant.
Analogi lagi yah:
Saya sudah mendeklarasikan usaha rumah makan Bebek Ngarasan. Nah, selanjutnya yang harus saya
lakukan adalah mengisi rumah makan saya dengan kelengkapan. Baik barang-barang, karyawan juga
peraturan.
Disini juga sama. Variabel dan Constant yang telah kita deklarasikan harus kita beri tugas (diisi).
Statement untuk mengisi/menugaskannya disebut Assignment Statement.
Contoh yah:
Sub ContohProc()
Dim Namakaryawan As string
Const Jumlahmobil as integer
Namakaryawan = "ngarasan"
Jumlahmobil = 1
End Sub
Contoh di atas, saya memasukkan nilai string: ngarasan pada variable Namakaryawan. Dan selanjutnya
memasukkan nilai integer: 1 pada constantJumlahmobil.
3. Executeable Statement
Kalo statement yang ini, statement yang digunakan agar VBA melakukan suatu aksi. Statement golongan
ini, dapat mengeksekusi sebuah method atau functiondan juga melakukan loop
(pengulangan) dan branch (percabangan) misal menggunakan If.
Oke, cara nelaahnya, kalo stement-stement sebelumnya bersifat pasif, hanya untuk persiapan, maka di
statement inilah hasil-hasil persiapan sebelumnya di eksekusi. Statement ini sangat banyak dan
bervariasi. Mulai dari Loop menggunakan berbagai macam jenis, misal For .. Next, While, dll.
Percabangan menggunakan If,Case of, dsb. Dan, di statement inilah sebuah method dan function di
exsekusi.
Apa itu method dan function, lihat tutorial berikutnya.
Ini adalah contoh Executable Statement , hmm sebenernya semua statement ada disini:
Sub ApplyFormat()
Const limit As Integer = 33
For Each c In Worksheets("Sheet1").Range("MyRange").Cells
If c.Value > limit Then
With c.Font
.Bold = True
.Italic = True
End With
End If
Next c
MsgBox "All done!"
End Sub
Contoh di atas, ada Deklarasi statement --> Sub() .. end sub, dan const.
Sub ApplyFormat()
Const limit As Integer = 33
End Sub
Selain itu juga ada assignment statement --> digabung dengan deklarasi constant.
Oke, kita mulai dengan tahu dulu, baru tempe eh, maksudku, kita mulai dari tahu
dulu apa itu Procedure.
Pake analogi aja yah, biar gampang. Bayangin sebuah Pabrik Motor. Mereknya
terserah, mo honda, yamaha, toyota eh gak ada dink merek toyota. Pokoknya
mereknya apa aja.
Sebuah pabrik motor, gak semua bagian motor itu dibuat sendiri dipabrik
tersebut. Sering kali, beberapa bagiannya di -sub kan ke pabrik lain. Misalkan
bagian ban. Ban tidak dibuat dipabrik motor, tapi di buat oleh pabrik Ban. Bisa
juga bagian softbraker. Bagian ini juga dikerjakan oleh pabrik lainnya lagi.
Jadi, ternyata sebuah motor yang kita beli itu, gak semua bagiannya di buat di
pabrik pembuat motor. Tapi banyak yang di -sub kan ke pabrik lainnya.
Nah, Procedure itu persis seperti pabrik yang ngerjain Ban, pabrik yang ngerjain
softbraker dan seterusnya.
Jadi, sebuah procedure akan menunggu perintah dan juga inputan dari procedure
lain, kemudian mengerjakan perintah tersebut sesuai dengan inputan yang
diberikan. Dan kalau sudah selesai dikerjakan, hasilnya dikembalikan ke
procedure yang memerintahkannya.
(Sebenernya ada 1 lagi jenis procedure yaitu Properties Procedure. Ta pi yang ini
ntar-ntar aja deh..)
Apa bedanya?
Sub Procedure
Sub procedure itu berisi baris program untuk mengolah sesuatu. Bila baris
program selesai dilakukan, maka procedure ini akan berhenti dan menutup. Dan
Program dikembalikan ke program utama.
Oke, sekarang kita pakai analogi pabrik tempe yah. Kan sering tuh makan tempe.
Proses pembuatan tempe itu disederhanakan sebagai berikut:
1. Mulai pengerjaan
2. Kedelai dicuci bersih.
3. Kedelai dikupas kulitnya.
4. Kedelai direbus.
5. Kedelai diragi
6. Kedelai dibungkus.
7. Selesai
Jadi...
Function Procedure
8. Selesai
No.1 sampai No.4 masih sama seperti sebelumnya. Tapi setelah sub
procedure: perebusan selesai , dan program dikembalikan ke program utama,
maka program utama akan memanggil function procedure: penghitungan ragi .
Inputan-nya adalah: kedelai 10 kg dan plastiknya 1/4 kg-an .
Function procedure kemudian akan menghitung dan memberikan hasil ke
program utama. Misalkan hasilnya adalah 10 gram ragi. Hasil dari function ini
bisa digunakan oleh procedure-procedure lainnya.
Kemudian, program utama akan memanggil sub procedure berikutn ya hingga
selesai.
Oke, sekarang kita coba buat sebuah sub procedure ya. Semakin banyak latihan,
semakin cepet pinter kan..
Pada gambar di atas, kita buat 2 sub procedure. (programutama dan testsubproc).
Sub programutama()
'didalam program utama, kita akan pang gil sub procedure testsubproc
testsubproc
End Sub
Sekedar info, tanda petik satu ('), menunjukkan kalimat setelah tanda ini adalah sekedar
keterangan saja. Dan VBA tidak akan memprosesnya sebagai baris program.
Sub testsubproc()
'sub procedure ini berisi sebuah perintah untuk menampikkan pesan.
MsgBox "halo..! saya lagi belajar VBA"
End Sub
Sekedar info lagi yah, perintah MsgBox sebenarnya adalah sebuah function loh. Tapi ini
internal function, atau function yang udah built-in (dibuat) oleh Excel. Kita tinggal manggil aja.
Sekarang kita coba RUN program utama kita. Letakkan cursor pada programutama dan
klik RUN seperti pada gambar dibawah.
Pada program utama, function dipanggil bersamaan dengan perintah memunculkan pesan (perintah
MsgBox). Data yang kita input adalah 2 dan 5.
Nah, jika kita RUN program utama kita (ingat, letakkan cursor pada program utama), maka akan muncul
pesan seperti gambar dibawah. Hasil dari inputan 2 dan 5 adalah 7!
SUKSES LAGI!!!