Code program ditulis dan disimpan di sebuah Module VBA.
Module VBA bersama-sama dengan Worksheet dan object lain disimpan dalam
Workbook Excel.
Module VBA
dapat dilihat, ditulis, disunting melalui Visual
Basic Editor (VBE). VBE dapat diakses dari layar Excel melalui
Menu Tools > Macro > VBE. Dengan kata lain VBE (serta hasil
programmingnya) hanya dapat dijalankan di dalam Excel, pada saat Excel aktif.
Selain
ditulis secara manual, code program dapat pula diciptakan dengan cara perekaman, yaitu merekam tindakan-tindakan
(actions) di Excel. Mode merekam dapat dimulai dengan instruksi menu Tools
> Macro > RecordMacro.. dan diakhiri dengan instruksi menu Tools
> Macro > Stop Recording.
Mode
perekaman ada keterbatasannya yaitu kita tidak dapat membuat prosedur Fungsi,
juga tidak dapat membuat prosedur Sub yang memerlukan Proses Pengulangan,
Proses Pencabangan. Walaupun demikian dengan mode recording ini dapat kita
buat program-program yang cukup berguna untuk membuat otomasi-otomasiyg
berguna untuk pekerjaan rutin kita sehari hari.
Didalam
VBA, paling tidak ada 3 jenis Module.
Setiap object
Sheet (Worksheet dan ChartSheet), Workbook maupun UserForm mempunyai
Module masing-masing, disebut Object Module.
Selain itu
kita dapat membuat Module lain (dengan menu: Insert > Module) sebagai Module Umum / Module
Utama. Disamping dua jenis module yg sudah disebutkan, masih dapat
dibuat Class Module.
Module
Umum adalah tempat menuliskan Deklarasi dan Prosedur yang berlaku umum, tidak
harus mengacu ke suatu object. Module yg menyertai Object (Sheet, Workbook,
UserForm) adalah wadah untuk menuliskan prosedur-prosedur yang spesifik untuk
keperluan mengurus Objects tersebut. Sedangkan Module Class adalah tempat
khusus ditulisnya prosedur untuk menciptakan Class Baru. Keistimewaan
Module Class adalah dapat dibuatnya Prosedur Property. Yang akan
menjadi property bagi Class yg akan tercipta. (Module
Class dan Prosedur Property belum perlu dibicarakan lebih lanjut dalam
kesempatan sekilas ini).
Class
adalah
bentuk formal dari sebuah object. Class belum merupakan sebuah object
TERTENTU. Barangkali dapat dikatakan bahwa Class adalah cetakan / templete
dari sebuah object. Object tercipta berkat instansiasi dari sebuah kelas.
USERFORM DAN OBJECT CONTROLS
UserForm dapat kita anggap sebuah “kanvas” tempat kita
melukiskan object-object Controls.
UserForm
setelah dibuat sedemikian rupa akan dapat ditampilkan sebagai DialogBox atau Window
tempat dikontrolnya sebuah Aplikasi.
Object
Controls adalah
sebuah bentuk yang berguna untuk mengarahkan jalannya program / aplikasi.
Misalnya TextBox untuk menampung data, ComboBox atau ListBox untuk memilih
data, checkBox dan Option Button untuk menentukan pilihan, Tombol
(CommandButton) untuk menjalankan suatu tindakan / kegiatan, dsb.
PROCEDURE, MACRO, CODE
Module VBA
terdiri dari Prosedur-Prosedur, atau
dapat dikatakan bahwa : Module adalah wadah untuk menyimpan
Prosedur-Prosedur / Macro.
Prosedur (Procedure) terdiri dari sekumpulan Code yang dapat
melakukan tindakan-tindakan (actions) tertentu dan atau menghasilkan nilai
tertentu. Istilah lain dari Procedure adalah Macro,
Rutin, Sub Rutin. Sekelompok Code dapat disebut sebagai sebuah
prosedur bila memenuhi syarat tertentu, antara lain dibuka dan ditutup dengan
Code tertentu.
Code adalah instruksi atau serangkaian instruksi dalam
bahasa pemrograman yang dapat dilakukan oleh komputer.
Di dalam
VBA dikenal ada tiga jenis prosedur, yaitu Prosedur Sub, Prosedur Fungsi dan
Prosedur Property.
PROCEDUR SUB
Prosedur
Sub adalah sekumpulan code instruksi
yang dapat melaksanakan tindakan/aksi aksi tertentu, misal memformat sebuah
range, menghapus isi range, membuat sebuah tabel, dsb. Pada contoh sederhana
di bawah ini, 2 prosedur Sub dapat menampilkan kotak pesan berisi informasi,
dan menebalkan huruf pada range di worksheet yg sedang diblok (terSelected).
Sub CobaMakro()
NmDep = “Munah”
NmBel = “Sari”
MsgBox “Nama Lengkap: “
& NmDep & “ “ & NmBel
End Sub
Sub Menebalkan()
Selection.Font.Bold = False
End Sub
Agar
Prosedur Sub dapat melakukan aksinya, maka kita harus me-RUN /
menjalankannya. Cara lain ialah: memanggilnya dengan menuliskan
NamaProsedurnya di Prosedur lain.
PROCEDURE FUNCTION
Di dalam
Module VBA, selain dapat dibuat prosedur Sub juga dapat dibuat prosedur Fungsi (Function Procedures).
Prosedur jenis ini tidak dibuat untuk melaksanakan aksi, tetapi khusus untuk
menghasilkan / mengembalikan sebuah nilai. Sebuah Fungsi dapat dipanggil oleh
prosedur lain dalam Module, dapat pula dijadikan formula dalam Worksheet.
Contoh Fungsi untuk menjumlah (menghasilkan suatu jumlah).
Contoh
Prosedur Fungsi
Function Luas(Panjang, Lebar)
Luas = Panjang * Lebar
End Function
Pada contoh di atas, Fungsi Luas
mengembalikan hasil kali dari masukan Panjang dan Lebar.
Di dalam
Prosedur Sub maupun Prosedur Function bisa (tetapi tidak harus) terdapat Arguments.
Argument
adalah sebuah Variable atau Konstanta atau Ekspresi yang diumpankan kepada
sebuah prosedur.
Contoh:
Prosedur Function LUAS di atas, mempunyai dua buah Argument Formal
yang bernama Panjang dan Lebar.
Pada
pemakaiannya Fungsi tsb dapat dituliskan (pada prosedur lain, atau bisa juga
pada worksheet):
A1
= Luas(5,7)
Hasilnya
adalah Cell atau Variable A1 akan berisi data bilangan 35 yaitu hasil
kali dari 5 dan 7.
5 dan 7
itu disebut Argument Aktual.
Selain
Fungsi-Fungsi yg kita buat sendiri, VBA sudah menyediakan banyak Fungsi yang
mencakup berbagai keperluan kalkulasi dan pengolahan data.
OBJECT DAN HIERARKINYA
Excel
meyediakan banyak sekali (lebih dari seribu) object, misalnya workbook,
worksheet, range, chart, shapes, pivot table, commandbar, textbox, listbox,
checkbox, button, dsb. Dengan VBA kita dapat memanipulasikan
object-object yang ada dalam Excel.
Di dalam
Excel (maupun VBA) object-object tersusun secara hierarkis. Sebuah Object
dapat menampung object-object lain. Misal di dalam Object Application
terdapat object Workbook, VBE dsb. Di dalam object Workbook terdapat object
Worksheet, Chartsheet, CommandBars, WorksheetFunction dsb. Di dalam
object Worksheet ada object Range, Shapes, Comments. PivotTable
dsb. Object yg lebih tinggi hierarkinya, yaitu yg menampung object
object lain disebut object Penampung atau Container. Object yg berapa pada
hierarki dibwahnya disebut Member / Anggota.
OBJECT DAN COLLECTION
Collection adalah sekelompok object yang sejenis. Misalnya
bila saat itu kita membuka beberapa workbook, maka beberapa workbook tsb
membentuk koleksi Workbooks yg terdiri dari
beberapa Object Workbook.
Beberpa
Worksheet membentuk collection Worksheets. Beberpa Worksheet dan
Chartsheet membentuk sebuah collection bernama Sheets. Collection itu sendiri
(misal Workbooks, Worksheets, CommandBars, Sheets dsb) adalah juga
sebuah Object. Dengan kata lain, Worksheet adalah Member (anggota) dari object Workbook.
Worksheet juga menjadi anggota dari Worksheets collection, selain itu dia
juga menjadi anggota dari Sheets collection.
Untuk
menyatakan sebuah Member dari sebuah Object atau Collection, penulisan
codenya harus dipisahkan dengan sebuah Dot
Operator (berupa sebuah karakter titik (.) sesuai hierarki
dan keanggotaanya-nya. Semakin ke kanan, semakin rendah hierarkinya.
Misal :
untuk mengakses sebuah worksheet yang bernama “Data2” yg ada di dalam Book2.
XLS, codenya dapat ditulis :
Application.Workbooks(“Book1).Worksheets(“Data2”)
Cell F16
yang ada di Worksheet Data2 dapat diakses dengan menuliskan code:
Application.Workbooks(“Book1).Worksheets(“Data2”).Range(“F16”)
Dalam
Excel, object yang bernama Application itu adalah Excel itu sendiri, karena
saat VBA dijalankan Excel lah yang sedang menjadi Host Application-nya.
Didalam
Excel, bila ada beberapa workbook terbuka, maka pada saat yang sama hanya ada
satu workbook yg aktif. Demikian juga dengan Worksheet dan Range / Cell.
Penulisan
nama object di hierarki yang lebih tinggi dapat dihilangkan (tidak
dituliskan) bila object tersebut sedang aktif.
Misal
workbook Book1 sedang aktif, maka code
Application.Workbooks(“Book1).Worksheets(“Data2”).Range(“F16”)
Dapat
ditulis lebih singkat:
Worksheets(“Data2”).Range(“F16”)
Bila saat
itu Sheet “Data2” sedang aktif, maka code tsb dapat dipersingkat menjadi
Range(“F16”)
Dapat
disimpulkan bahwa bila kita menuliskan code suatu object tanpa menyebutkan
hierarki di atasnya, maka yang akan terakses adalah object senama yang
ada pada object yg sedang aktif. (Ingat bahwa nama workbook, nama sheet,
apalagi nama range /cell bisa sama dan ada di collection / object
lain).
OBJECT DAN PROPERTY
Selain
bisa mempunyai Anggota/Member, sebuah object juga memiliki
properti-properti (Properties).
Property
adalah attribut atau ciri-ciri
bagi sebuah Object. Setiap Property menjabarkan karakteristik sebuah object,
misalnya: Warna-nya. Lebar-nya, Lokasi-nya di layar, Statusnya (misal
Visible atau “tidak-Visible”, Enabled atau “tidak-Enabled”, dsb).
Sebuah
Cell (object Range) berisi data bilangan 50, Cell di sebelahnya berisi data
teks “Gaji”. Dapat kita katakan bahwa kedua cell tsb berbeda Property
VALUE nya.
Menuliskan
properti bagi sebuah object dengan cara menggabungkan {NamaObject} {DotOperator} {Propertynya},
Gampangnya: Penulisan Object dan Property harus
diAntarai oleh sebuah TITIK, yaitu cara yang sama seperti penulisan
object dengan Membernya. Misalnya:
Workook.Name
menghasilkan nama workbook tsb, misalnya “Book7.XLS”. Name adalah
sebuah property yg dimiliki oleh semua object, termasuk workbook.
Dengan VBA
kita dapat mengubah ciri suatu object, yaitu dengan mengubah /memberi nilai
kepada property atau (properties)-nya
Range(“A1”).Value =
1000
Cell A1
diubah property VALUE nya menjadi: 1000, mengakibatkan Cell tsb berisi data
bilangan 1000.
Worksheets(“Sheet1”).Name
= “Laporan 2007”
Property
NAME milik Worksheet “Sheet1” diubah / diisi menjadi “Laporan 2007”,
mengakibatkan Nama sheet tsb (yg tampak di TabSheet-nya) menjadi “Laporan
2007”
Nilai
suatu Property milik suatu Object dapat diakses dan diberikan kepada Property
lain milik Object lain. Contohnya:
Range(“A9”).Value =
Sheet5.Range(“A10”).Value
Nilai yang
ada di cell A10 pada Sheet5 (pada workbook
yg sedang aktif) diakses dan
diberikan/diisikan ke Cell
A9 pada sheet yg sedang aktif.
VarBilKu =
Sheet3.Range(“X231”).Value
Sebuah Variable yg bernama VarBilKu diisi dengan nilai
milik Cell X231 yg berada di Sheet3 pada workbook yg sedang aktif. (Mengenai
Variable, akan di jelaskan kemudian).
Property
dapat menghasilkan sebuah Object. Misalnya: Cells adalah salah satu Property
milik worksheet. Sheet1.Cells(3,6) adalah code yang merujuk ke Cell F3, atau istilah
dalam VBA : Range F3. Range(“F3”) ini adalah juga sebuah object, yang
kemudian bisa dimanipulasi dengan mengubah ubah nilai properties-nya.
Contoh
lain : Font adalah salah satu Property milik object Range.
Range(“F16:F18”).Font.Color
= vbRed,
Property
Font menghasilkan object Font. Dan kemudian Object Font itu
dengan Property Color di set menjadi bernilai vbRed, mengakibatkan Font yang
ada di Range F16:F18 menjadi berwarna merah.
Konsep ini
barangkali agak “tidak segera” dapat difahami tetapi dengan menyelam ke
VBA beberapa saat akan mempercepat pemahamannya.
Note:
vbRed adalah salah satu konstanta bawaan dari VBA.
OBJECT DAN METHODS (METODA)
Disamping
mempunyai Member dan Property, sebuah Object dapat memiliki Methods. Method adalah tindakan, aksi
atau kegiatan yang dapat dilaksanakan oleh sebuah object.
Contoh:
Sebuah
Worksheet yang semula tidak aktif dapat menjadi aktif. Dalam VBA untuk
menjadikan Worksheet menjadi aktif dengan cara memberlakukan METHOD Activate
Sheet17.Activate
Mirip
dengan metoda Activate bagi worksheet adalah metoda Select
Worksheet4.Select
(keluar
dari koridor sebentar: Bedanya: Metoda Select dapat diberlakukan terhadap
banyak Sheet secara sekaligus, sedangkan metoda activate hanya bisa
mengaktifkan SATU object pada saat yang sama. Metoda Select juga sekaligus
mengaktifkan salah satu Object yg diselected)
Isi suatu
Range dapat dikosongkan dengan METODA ClearContents
Range(“A1:Z60000”).ClearContents
METODA
lain, Clear milik object Range bekerja seperti METODA ClearContents
tetapi juga menghapus formattingnya.
Sebuah
Workbook (yg semula blum ada) dapat dibuat ada dengan metoda Add. Workbook juga dapat diSave dengan
metoda Save
Seperti
sudah terlanjur dicontohkan, sebuah METODA dicodekan setelah Object-nya
dengan operator perantaranya: tetap sebuah Dot Operator.
Kesimpulan:
object dengan anggotanya, object dengan propertinya, object dengan metodanya
semua dituliskan dengan diberi operator TITIK.
KONSEP PEMROGRAMAN
Seperti
layaknya sebuah bahasa pemrograman, VBA juga mengenal adanya struktur
pemrograman modern, dimana didalamnya melibatkan konsep-konsep pemrograman,
antara lain:
q Functions / Fungsi bawaan dari VBA.
VBA
membawa fungsi yg cukup banyak. Dengan fungsi kita mencari nilai berdasakan
nilai-nilai lain yg telah kita punyai. Semakin banyak kita mengenal Fungsi
yag ada, maka semakin luas kemampuan kita memecahkan masalah dalam
pemrograman.
Beberapa
contoh fungsi VBA
X
= Abs(N) mengembalikan nilai absolut
dari N
P
= Left(variableKu, 5)
Isi (text) vaiable yg bernama variableKU diambil 5 huruf dihitung dari kiri,
dan dimasukkan ke variable P
Y
= Cos(N) mengembalikan cosinus dari satu
Sudut N
Z =
Ubound(NamaArray,Dimensi)
mengembalikan Nomor Index terbesar dari Dimensi yg ditunjuk pada sebuah
Array. Bahkan dari VBA kita dapat menggunakan banyak Fungsi milik Excel
yaitu melalui object WorkshetFunction.
q Berbagai jenis Operator
Operator Aritmatik, Operator
Penggabungan, Operator Perbandingan (Comparison), Operator Penugasan (Assignment),
Operator Logika. Semuanya siap untuk membantu memanipulasi dan pengolahan
data-data Anda. Sifat dan cara penggunaan setiap operator harus dikenali
dengan baik, agar program menghasilkan output yang benar.
q Variable dan Konstanta (Constants)
Tanpa
adanya variable, pemrograman hampir tidak mungkin dilaksanakan, karena selama
program berjalan banyak data yg selalu berubah-ubah memerlukan tempat-tempat
di memori yg mudah dipanggil kembali, yaitu dengan cara memberi nama. Tempat
tertentu itu disebut Variable. Bila
ditentukan agar tidak berubah selama program berjalan disebut Konstanta.
Variable
dan Konstanta dapat diatur jangkauan / ruang-lingkupnya serta umur/waktu
hidupnya. Selain itu mereka juga sebaiknya ditentukan TypeData-nya sesuai keperluan.
Pengaturan ini bertujuan untuk keakuratan dan kestabilan program, serta untuk
mengefisienkan pemakaian memori selama program berjalan.
q Konstanta Bawaan (Defined Constants) dari VBA,
maupun dari Excel
Konstanta bawaan sangat membantu pemrogram, dengannya kita tidak perlu
mengingat ingat nilai-nilai yg sulit diingat. Beberapa contoh
VbCrlf = konstanta mewakili “ENTER”
memindahkan data berikutnyua ke Baris berikutnya.
VbBlue = mewakili nilai untuk menciptakan
warna biru
XlDown = mewakili pemilihan Range dari titik
tertentu keBawah hingga cell berdata berikutnya
q Type / Jenis Data
Numbers
(Byte, Integer, Long, Single, Double, Currency, Decimal, Date,) Object,
String, Variant. Selain itu kita dimungkinkan menciptakan type data sendiri
(User Defined Types).
Sebuah
data harus punya typeData tertentu agar dapat diolah dengan akurat dan benar.
Mengenal TypeData serta sifat-sifatnya adalah keharusan bagi pemrogram.
Pemilihan type data yang ngawur akan meng-InEfisienkan pemakaian memory
komputer dan sering mengakibatkan buruknya kinerja program.
q Array / Larik
Array
adalah data dengan keistimewaan, bahwa setiap array adalah SATU data, tetapi
mempunyai banyak dimensi dan setiap dimensi dapat berisi banyak element
yg berisi sub-sub data yg sejenis. Setiap sub-data dapat diakses secara
individual dengan menyebutkan nomor indexnya. Array dapat berdimensi satu
dapat berdimensi banyak. Diluar itu, dimensi maupun elemen Array dapat dibuat
fixed / tertentu, tetapi juga dapat dibuat dinamis artinya dimensi dan
elemennya bertambah maupun berkurang sesuai keperluan program. Data Array
dapat diperlakukan seperti halnya data yg terletak secara beraturan di Range,
sehingga dapat dengan mudah diproses (diurutkan, dicari nilai Max-nya, dicari
suatu nilainya yg memenuhi kriteria tertentu, dsb). Keunggulan array antara
lain dapat di akses dan diproses dengan waktu yag lebih cepat dari pada data
di Sheet.
Dengan
mengenal Array secara baik, seorang pemrogram akan dapat berbuat lebih banyak
dengan cara yang lebih mudah dan cepat.
q
Pengulangan / Looping
Pekerjaan atau aksi yg
mirip/mempunyai punya pola keteraturan, jika harus diulang-ulang, coding-nya
tidak perlu ditulis berulang-ulang pula, karena adanya struktur looping. Dengan struktur looping, kita hanya cukup menulis
code satu kali saja, dan program akan mengulang sebanyak yg kita kehendaki
sesuai keperluan. Bisa sekedar 3 atau 5 kali tetapi juga bisa jutaan kali
pengulangan. Contoh statement struktur looping:
Do-While-Loop,
For-Next,
While –
Wend
q Pencabangan / Branching
Pada suatu
titik tertentu, arah program bisa bercabang, dan pemmilihan: harus memilih
arah mana, ditentukan oleh sebuah nilai (yang pada saat diprogram belum
diketahui fixed-nya). Dalam kasus seperti ini, berapapun jumlah cabangnya
dapat diselesaian dengan teknik Branching. Ada beberapa teknik antara lain :
If-Then-Elseif-Else,
Select
Case
q Event Procedures
Dengan
adanya EVENT yg dapat dimiliki oleh (terjadi pada) Object, maka kita
dapat memanfatkan terjadinya Event tsb untuk memicu agar sebuah prosedur
berjalan dengan sendirinya. Prosedur yg ditulis dengan memanfaatkan suatu
Object_Event tsb disebut Event Procedures / Event Driven / Event Handler.
Mungkin prosedur Event itu dapat dikatakan sebagai “tukang mengotomatiskan”
jalannya program.
Pemrogram tidak
boleh : tidak mengenal Event dari berbagai Object.
q Controls
Berbagai
Alat Kontrol (Controls) dapat diberlakukan di Sheet maupun di UserForm
Di sheet,
Control dapat dipakai secara sederhana tanpa pemrograman. Dengan cara ini
sudah banyak hal yg dapat dimudahkan. Tetapi bila kita menguasai bahasa
pemrogramannya tentu kemampuan controls tsb akan menjadi lebih luas lagi.
Controls
dapat pula dibuat dan dipergunakan di suatu UserForm. Pemakaian Controls di
UserForm mutlak harus disertai pemrogramannya. Beberapa Control Standard yg
telah disediakan oleh Excel/VBA:
CommandButton,
TextBox, ListBox, ComboBox, CheckBox, OptionButton, ToggleButton, SpinButton,
Label, Image.
Diluar itu
kita masih dapat menambahkan control-control lain sesuai keperluan. Selama
filenya tersedia di komputer kita.
VBA adalah
bahasa pemrograman yang berorientasi object dan terstruktur. Antar
prosedur dapat saling minta bantuan prosedur lain. Prosedur-prosedur kecil
saling bekerja sama membentuk Module agar memiliki kemampuan besar, antar
module saling bekerja sama membentuk kemampuan yang lebih hebat lagi.
Sementara itu penulisan code di tiap prosedur juga ada aturan ada strukturnya.
Penyusunan secara modular ini banyak keuntungannya, misal kemudahan perawatan
dan pengembangannya.
“Sekilas Tentang
VBA” yg baru saja Anda baca itu saya
kira sudah hampir mencakup seluruh kerangka yang ada. Selanjutnya tinggal
mendalami tiap-tiap butirnya. Berhubung berExcel berarti berkutat di tiga hal
utama: Book, Sheet dan Range/Cells, maka barangkali kita dapat mendahulukan
mendalami pasal dan ayat yg mengatur workbuk, worksit dan cell. Bagaimana cara
mengakses, merujuk, mengisi, memindah, menyalin, menghapus, menSelect,
mengaktivate, membuka menutup tiga object utama Excel itu. Tentu saja
sambil mempelajari bagian/butir lain. Jangan segan membaca Help. Kalau perlu
file-file Help-nya itu dicopy saja ke folder khusus. Kita dapat membukanya tanpa
menjalankan Excel & VBA-nya.
Untuk
belajar VBA-Excel Anda perlu sedikit modal yaitu memahami O/S Windows secara
standar, memahami Excel paling tidak secara standar pula. Satu lagi hal
kecil: Anda harus mengetahui maksud dan keinginan Anda, serta dapat
menjabarkan keinginan tsb, paling tidak kerangkanya:
§
Sesuatu (yang jelas)
§
yang dulunya cuma begitu
(juga jelas)
§
ingin dijadikan begini
(juga jelas).
Bila salah
satu dari tiga urusan yang harusnya jelas itu ternyata belum jelas
bagi Anda, maka programnya pun, bila jadi, jangan jangan juga tidak begitu
jelas asupan maupun keluarannya.
|
0 Komentar