Saturday, June 29, 2013

BelajarVBA 001 - VBE (Visual Basic Editor)

Coretan Mr. Kid

Ilmu itu pemberian Tuhan, maka mintalah ilmu sebelum mempelajari ilmu dan banyaklah berbuat kebaikan agar dekat dengan Tuhan, sehingga Tuhan lebih pemurah lagi kepada Anda dan menyegerakan untuk mencurahkan ilmu yang Anda minta kepada-Nya.


Pada coretan yang lalu kita sudah berusaha untuk membuat suatu lingkungan belajar yang nyaman. Bahasan terakhirnya sudah berada disuatu area yang disebut Visual Basic Editor (VBE).

Visual Basic Editor (VBE) adalah area untuk menyusun hampir 90% dari program. VBE identik dengan lokasi penulisan script dan pembuatan bentuk-bentuk tampilan GUI. Sebenarnya dalam VBE ada lebih banyak hal dari sekedar script.


Kita mulai saja. Coba buka aplikasi Excel dari desktop, kemudian menuju VBE dengan cara yang telah dibahas tempo lalu, yang salah satunya dengan menekan ALT F11. Pada VBE yang tampak tersebut ada 6 (enam) area utama yang sebaiknya dipahami. Area selainnya meski tidak dimasukkan dalam area utama, akan memiliki banyak manfaat jika dipahami.


  1. VB Window : window berisi VBE
  2. Menu : berisi jejeran menu untuk kegiatan dalam VBE
  3. Toolbar : berisi icon-icon kegiatan tertentu yang tekah dikelompokkan
  4. Project Explorer : berisi seluruh project yang terbuka di-instansi aplikasi Excel tersebut
  5. Properties Window : berisi properti dari object yang sedang aktif terpilih
  6. Code Window : lokasi penulisan script atau penyusunan GUI Form. Kontrol terhadap window ada di 6A (kotak merah)

Kita bahas satu per satu yang relatif penting :
1. Menu (nomor 2)
Berisi jejeran menu dari File sampai Help. Isi setiap menu dan apa kegunaannya dapat dipelajari di-Help (tekan F1). Beberapa item dari menu akan sering digunakan, antara lain :

A. menu Edit
-> Find, Find Next, Replace
*** yang penggunaannya mirip dengan fitur Find and Replace dalam Workbook.

B. menu View
-> Code dan Object
  • kedua item ini digunakan untuk berpindah dari Code Window berisi script (View -> Code) dari atau ke Code Window berisi GUI Form jika object berupa UserForm dan akan ke worksheet jika object berupa Worksheet atau Workbook (View -> Object)

-> Object Browser
  • untuk menampilkan Object Browser Window yang dapat digunakan untuk mencari informasi detil dari sebuah object.
  • window ini tidak dimasukkan dalam 6 area utama

-> Immediate Window, Watch Window, Locals Window
  • untuk menampilkan window-window tersebut
  • window-window ini tidak dimasukkan dalam 6 area utama

-> Project Explorer dan Properties Window
  • untuk menampilkan Project Explorer (nomor 4) dan Properties Window (nomor 5)

-> Toolbar
  • untuk mengatur toolbar yang akan ditampilkan dalam area Toolbar (nomor 3)

-> Microsoft Excel
  • untuk kembali ke Workbook, yang bisa dilakukan dengan menekan ALT F11 juga seperti saat menuju ke VBE dari Workbook.

C. menu Insert
-> Procedure
  • untuk membuat blok prosedur baru melalui suatu dialog window
  • biasanya pembuatan blok prosedur lebih nyaman jika ditulis langsung atau melalui pemilihan event (jangan terlalu dipikirkan saat ini, sebentar lagi Insya Allah sampai hal ini)

-> UserForm, Module, Class Module
  • untuk membuat object class baru kedalam VBProject terpilih

-> File
  • untuk menyalin script dari suatu text file berisi script ke lembar script yang sedang aktif dalam Code Window
  • menambahkan object dari suatu file berformat .bas, .frm, .cls ke class object terpilih (ditelan dulu bunyi class object-nya ya, ndak usah dirasa-rasa)

D. menu Format
  • khusus ketika bekerja dengan object UserForm yang tampak pada Code Window (nomor 6) yang aktif.
  • hal ini akan dibahas saat sudah beraktifitas dengan userform

E. menu Debug
-> Compile VBAProject
  • untuk mengeksekusi script agar bisa diketahui error-error penulisannya.
  • dengan pengaturan Options pada tab Editor di item Auto syntax check yang dicentang, maka penggunaan item Compile VBAProject bisa dikurangi dan bisa lebih fokus pada alur aplikasi yang sedang dibuat.

-> Step Into
  • untuk mengeksekusi baris per baris script dalam sebuah prosedur.
  • hal ini sangat berguna ketika akan mencari penyebab error dari suatu script atau saat muncul dialog window debugging saat aplikasi dijalankan.
  • shortcut key item ini sebaikanya diingat-ingat selalu, yaitu F8

F. menu Run
-> Run Sub/UserForm
  • untuk menjalankan suatu prosedur atau menjalankan userform melalui VBE

G. menu Tools
-> References
  • untuk menata daftar library yang akan digunakan oleh aplikasi yang sedang dibangun

-> Additional Controls
  • untuk menata daftar library controls yang akan digunakan dalam UserForm
  • item ini aktif ketika sedang menata UserForm

-> Options
  • untuk menata lingkungan VBE

-> VBAProject Properties
  • untuk mengganti nama VBProject, menyertakan deskripsi, merujukkan help file aplikasi yang dibangun (pada tab General)
  • juga untuk memproteksi VBProject (pada tab Protection)

Menu-menu ataupun item menu yang tidak dijabarkan di atas bukan berarti tidak digunakan atau tidak perlu dipelajari, tetapi pada umumnya relatif jarang digunakan. Jadi, silakan dibaca lebih detil tentang menu tersebut di-Help.

2. Project Explorer (nomor 4)
Area ini sangat aktif digunakan. Window ini berisi seluruh project yang sedang terbuka di instansi aplikasi Excel tersebut. Tampilannya seperti treeview dalam Windows Explorer. Tingkat tertinggi (root) adalah VBProject.

Setiap workbook akan membentuk sebuah VBAProject yang menjadi anggota dari VBProject. Setiap VBAProject akan memiliki minimal sebuah grup (folder) berjuluk Object Class Collections. Dalam folder object class collections ini bisa berisi minimal sebuah Object Class. Isi setiap object class yang didefinisikan oleh user akan dijabarkan dalam Code Window (nomor 6).

Untuk lebih jelasnya, coba perhatikan gambar dibawah ini.


root :
- Pada gambar diatas, yang kita diberi nama panggilan VBP adalah root-nya.
- VBP memiliki beberapa anak VBAProject (minimal 1).
- Jadi si VBP ini tidak tampak secara nyata dalam Project Explorer window.

VBAProject :
- Salah satu anak VBP kita beri nama panggilan VBAProj1, yang nama aslinya adalah VBAProject (Book1) atau VBAProject yang menempel di Book1.
- Pada gambar diatas, sebenarnya ada anak ke-2 dari VBP yang tersembunyi karena tinggi frame window Project Explorer kurang tinggi. Hal ini dapat dilihat dari hadirnya garis tipis terkiri dalam Project Explorer.

Class Object Collections :
  • Pada gambar diatas, VBAProj1 memiliki sebuah kamar anak yang bernama class object collections, yang kita beri nama panggilan sebagai ColCObj1.
  • Nama kamar asli dari ColCObj1 adalah Microsoft Excel Objects.
  • Kamar bernama Microsoft Excel Objects dihuni oleh anak-anak kandung dari VBAProject alias dihuni oleh workbook beserta seluruh sheet (bisa worksheet, chart, dsb)
  • Kamar selainnya (Forms, Modules, Class Modules) dihuni oleh object-object class tambahan (anggap saja anak asuh) dan diberi nama berdasar karakteristik dasarnya.
  • Kamar Forms berisi object-object class UserForm yang karakteristiknya sebagai alat komunikasi dengan user menggunakan GUI Form.
  • Kamar Modules berisi object-object class module VBA yang karakteristiknya sebagai pekerja dibalik layar yang bisa dimanfaatkan oleh semua pihak
  • Kamar Class Modules berisi object-object class pembentuk object (blueprint object) baru yang akan digunakan dalam VBAProject tersebut.

Class Object :
- Saat ini, si ColCObj1 dihuni oleh 2 anak, yaitu :
  1. CObj1 yang memiliki nama asli Sheet1 (Sheet1), dimana kata Sheet1 tanpa kurung adalah nama pada akta kelahiran yang didaftarkan dalam VBA sedangkan kata Sheet1 yang ada dalam kurung adalah nama yang diberikan oleh user ketika dinas ke workbook yang dapat dilihat di tab sheet-nya workbook.
  2. CObj2 yang memiliki nama asli ThisWorkbook
- Seluruh object class yang ada dalam kamar anak bernama Microsoft Excel Objects adalah object class utama yang bisa disebut sebagai anak kandung dari VBAProject (Book1)
- ThisWorkbook adalah object class yang merespon kegiatan terhadap workbook.
- Sheet1 dalam kamar Microsoft Excel Objects adalah object class yang merespon kegiatan terhadap sheet jenis worksheet bernama Sheet1.
- Komposisi anak kandung dalam kamar Microsoft Excel Objects selalu berupa :
  • 1 (satu) ThisWorkbook
  • minimal 1 (satu) object class sheet (bisa berupa worksheet, chart, dsb) seperti Sheet1 (Sheet1), dan sheet lainnya


Jadi, ThisWorkbook adalah anak kandung dari VBAProject (Book1) yang tidurnya di kamar bernama Microsoft Excel Objects, yang hidup di lingkungan kecamatan VBP, yang entah ada dimana kantor kecamatannya (jangan tanya ada di jalan apa si kantor kecamatannya, apalagi nama camatnya).

Yang perlu diingat, Kecamatan dengan kantor kecamatan apalagi Pak Camat dalam ilustrasi diatas adalah hal yang berbeda. Begitu pula istilah kamar anak dengan si anak adalah dua hal yang berbeda. Nanti akan lebih jelas ketika sudah berbicara tentang Object. Sekarang jadi bahan tebakan saja, apa beda antara Kecamatan, kantor kecamatan, dan Pak Camat.

Meng-collapse-ken/meng-expand
Setiap node (seperti VBAProject atau Microsoft Excel Objects) yang memiliki anggota dapat digulung (collapse) ataupun didetilkan (expand) dengan cara double-click. Jika VBAProject (Book1) di double-click berulang-ulang, maka akan tampak bahwa VBAProject (Book1) akan tergulung dan terdetilkan bergantian (silakan coba).

Menambah object class
VBAProject, misal VBAProject (Book1), bisa ditambah anaknya sesuai kebutuhan (lakukan dengan bijak, apalagi ketika didunia nyata).

Untuk menambah anak berupa object class yang tergolong anak kandung alias yang tidur dikamar Microsoft Excel Objects, hanya dapat menambah object class sheet dengan cara menambah worksheet atau chart dari window workbook (ALT F11 untuk ke window workbook), seperti dengan menambah sheet melalui tab sheet.

Contoh : (silakan dicoba)
  1. ke window workbook (tekan ALT F11)
  2. insert 3 buah worksheet (seperti gambar di atas yang hanya ada 1 sheet, akan menjadi ada 4 sheet)
  3. kembali ke VBE (tekan ALT F11)
  4. lihat Project Explorer
  5. ke window workbook lagi (tekan ALT F11)
  6. insert sebuah chart sheet
  7. kembali ke VBE (tekan ALT F11)
  8. lihat Project Explorer
Hasilnya akan seperti gambar : (jumlah sheet awal adalah 1 buah worksheet)


Sedangkan untuk menambah object class lainnya dapat dilakukan setidaknya dengan 2 cara, yaitu :
  1. klik kanan VBAProject, misal VBAProject (Book1), atau siapa saja yang menjadi anggotanya -> Insert -> pilih salah satu dari UserForm, Module, atau Class Module.
  2. klik VBAProject, misal VBAProject (Book1), atau siapa saja yang menjadi anggotanya -> menu Insert -> pilih salah satu dari UserForm, Module, atau Class Module.

Contoh : (silakan dicoba)
  1. klik kanan VBAProject (Book1) -> Insert -> pilih UserForm -> lihat Project Explorer
  2. klik VBAProject (Book1) -> menu Insert -> pilih Module -> lihat Project Explorer
  3. klik kanan VBAProject (Book1) -> Insert -> pilih ClassModule -> lihat Project Explorer
  4. klik kanan VBAProject (Book1) -> Insert -> pilih Module -> lihat Project Explorer
Hasilnya seperti gambar berikut : (bertambah 1 UserForm, 2 Modules, 1 Class Module)



Membuang object class
VBAProject, misal VBAProject (Book1), bisa dikurangi anaknya sesuai kebutuhan (JANGAN LAKUKAN di dunia nyata. Hanya berlaku di VBE saja).

Untuk mengurangi anak berupa object class yang tergolong anak kandung, hanya bisa dilakukan mengurangi jenis sheet melalui window workbook (ALT F11 untuk ke window workbook), seperti dengan membuang sheet melalui tab sheet.

Contoh : (silakan dicoba)
  1. ke window workbook (tekan ALT F11)
  2. hapus worksheet bernama sheet1 
  3. kembali ke VBE (tekan ALT F11)
  4. lihat Project Explorer
  5. ke window workbook lagi (tekan ALT F11)
  6. hapus chart sheet yang ada
  7. kembali ke VBE (tekan ALT F11)
  8. lihat Project Explorer
Hasilnya akan seperti gambar berikut ini : (Sheet1 dan Chart5 sudah hilang)


Sedangkan untuk menambah object class lainnya dapat dilakukan setidaknya dengan 2 cara, yaitu :
  1. klik kanan object class yang akan dihapus -> Remove 'nama object classnya'
  2. klik object class yang akan dihapus -> menu File -> pilih Remove 'nama object classnya'
Contoh : (silakan dicoba)
  1. klik kanan Class1 -> Remove Class1 -> jika muncul pertanyaan, pilih NO -> lihat Project Explorer
  2. klik Module1 -> menu File -> Remove Module1 -> jika muncul pertanyaan, pilih NO -> lihat Project Explorer
Hasilnya akan seperti gambar : (kamar Class Modules hilang, Module1 juga hilang)


Jika ingin mengulanginya, sebaiknya tutup seluruh workbook tanpa di-save, kemudian ulangi langkah-langkah contoh yang ada. Untuk kegiatan belajar ini nanti akan didominasi dengan penggunaan Module dan UserForm.


3. Properties Window (nomor 5)
Window ini berisi beberapa properti yang dimiliki sebuah object yang sedang aktif ditunjuk, yaitu properti-properti yang memiliki sifat read/write atau bisa diubah nilainya dan yang bisa diubah saat design atau saat pembuatan aplikasi. Window ini dapat di-hide atau di-tampilkan kembali dengan menekan tombol F4.

Misalnya, jika Sheet3 (Sheet3) diklik, properties window akan berisi beberapa properti milik object class bernama Sheet3 (Sheet3) seperti gambar berikut ini :


Bagian pokok dalam Properties Window adalah :
1. Daftar Object
  • Berisi nama-nama object (nama di akta kelahirannya) beserta class-nya beserta seluruh object yang ada atau menjadi anggota dari object tersebut.
  • Jika pada Sheet3 tersebut ada sebuah ActiveX control seperti TextBox misalnya, maka ketika segitiga kecil milik daftar object diklik, akan tampak keberadaan object ActiveX Control TextBox yang ada di sheet tersebut.

  • Pada gambar di atas, dilakukan Insert ActiveX Control TextBox (sisi A) kedalam worksheet (sisi B nomor 1) yang membuat daftar objects pada properties window di VBE pada Sheet3 (sisi B nomor 2) tampak berisi 2 (dua) buah object seperti yang ditunjukkan oleh panah merah.

2. Tab Daftar Properti
Properties Window menampilkan beberapa properti dalam 2 cara penyusunan yang diletakkan dalam tab Alphabetic (terurut abjad secara Ascending) dan tab Categorized (tersusun per kategori). Tidak semua object memiliki banyak kategori properti. Contoh kategori properti seperti kategori Font yang berisi tentang properti untuk menata Font object terpilih.

3. Grid Properti
Berupa tabel kecil yang terdiri dari 2 kolom, yaitu :
  1. kolom nama properti sebagai kolom pertama atau kolom sisi kiri yang berisi nama-nama properti object terpilih.
  2. kolom nilai properti sebagai kolom kedua atau kolom sisi kanan yang berisi nilai dari setiap properti yang tertulis namanya di sisi kiri.
Mengganti nilai properti
Properti yang paling pokok bernama (Name) yang berisi nama sesungguhnya dari object terpilih dan bisa dikatakan bahwa nilai ini adalah nama akta kelahiran sebuah object. Nilai ini tidak bisa diubah kecuali dari properties window. Maka penggunaan nilai properti ini akan jauh lebih aman dibandingkan properti seperti Name (tanpa kurung).

Nilai properti diganti dengan mengubah nilai kolom kedua dalam grid properti pada nama properti tertentu. Beberapa properti memberikan opsi nilai yang bisa diisikan untuk properti tersebut melalui sebuah combobox. Contohnya adalah properti bernama Visible milik object Sheet3 yang bisa diisi :
  • -1 - xlSheetVisible
  • 0 - xlSheetHidden
  • 2 - xlSheetVeryHidden
Contoh 1 : (silakan coba)
  1. klik Sheet3 (Sheet3) di Project Explorer -> klik Properties Window
  2. klik properti bernama (Name) -> ganti nilai di kolom kanan menjadi sht03
  3. lihat Project Explorer dan nama sheet3 berubah menjadi sht03 (Sheet3)
  4. klik Properties Window -> klik properti bernama Name -> ganti nilai di kolom kanan menjadi KETIGA
  5. lihat Project Explorer dan sht03 sekarang tertulis menjadi sht03 (KETIGA)


Contoh 2 : (silakan coba)
  1. klik Sheet2 (Sheet2) di Project Explorer -> klik Properties Window
  2. klik properti bernama Visible -> ganti nilai di kolom kanan dengan memilih item 0 - xlSheetHidden
  3. ke workbook window (tekan ALT F11) -> tidak ada sheet bernama Sheet2
  4. klik kanan tab sheet -> pilih Unhide -> pilih Sheet2 -> tekan OK
  5. Sheet bernama Sheet2 kembali muncul
  6. ke VBE (tekan ALT F11) -> klik Sheet2 (Sheet2) di Project Explorer
  7. klik Properties Window -> lihat nilai properti bernama Visible -> sudah menjadi -1 - xlSheetVisible
Jadi, nilai properti visible 0 - xlSheetHidden akan membuat sheet tersembunyi, tetapi masih bisa di-unhide melalui tab sheet di workbook window.

Contoh 3 : (silakan coba)
  1. klik Sheet4 (Sheet4) di Project Explorer -> klik Properties Window
  2. klik properti bernama Visible -> ganti nilai di kolom kanan dengan memilih item 2 - xlSheetVeryHidden
  3. ke workbook window (tekan ALT F11) -> tidak ada sheet bernama Sheet4
  4. klik kanan tab sheet -> pilih Unhide (kalau bisa) -> pilih Sheet4 (kalau ada) -> OK
  5. ke VBE (tekan ALT F11) -> klik Sheet4 (Sheet4) di Project Explorer
  6. klik Properties Window -> lihat nilai properti bernama Visible -> tetap 2 - xlSheetVeryHidden
Jadi, nilai properti 2 - xlSheetVeryHidden akan membuat sheet tersembunyi dan tidak bisa di-unhide melalui tab sheet di workbook window.

4. Code Window (nomor 6)
Code Window adalah area penulisan script. Sebagian besar yang akan membuat bingung bagi pemula ada di area ini. Code window memiliki window control di bagian 6A (yang dikotak merah). Code Window selalu terletak di ruang pemrograman (programming workspace).

Code Window diaktifkan dengan cara double click object yang ada di Project Explorer, yang akan diaktifkan. Misal, pada Project Explorer, jika object Sheet2 (Sheet2) di double click, maka kursor akan aktif di Code Window. Jadi Code Window yang aktif selalu milik object dalam Project Explorer yang sedang aktif.

Code Window memiliki 6 titik yang harus diketahui, yaitu :
A. Area script : lokasi penulisan script
B. Object Class aktif : nama workbook dan object class yang sedang aktif dikerjakan




C. Object Combobox : berisi daftar object yang dimiliki oleh Object Class aktif
D. Procedure Combobox : berisi daftar prosedur yang dimiliki oleh object terpilih


  • Jika Object Combobox berisi General, maka Procedure Combobox akan berisi daftar prosedur selain event yang ada di code window tersebut.
  • Jika Object Combobox berisi sebuah Object (misal Worksheet), maka Procedure Combobox akan berisi daftar Event Procedure yang dimiliki si object terpilih (misal object Worksheet akan menampilkan event milik worksheet seperti Activate, Change, dan sebagainya).
  • Kedua combobox ini dapat digunakan untuk menuju prosedur tertentu atau membuat prosedur event tertentu.
  • Pada pemilihan pertama kali sebuah object dalam Object Combobox yang memiliki Event Procedure, maka secara otomatis Procedure Combobox akan terisi event procedure yang pertama kali didefinisikan dalam class tersebut, sekaligus membuatkan blok prosedur event terpilih ini di area script.
  • Pada pemilihan kedua dan selanjutnya, maka kursor akan diletakkan didalam blok prosedur event milik si object yang namanya teratas ada dalam Procedure Combobox meskipun letak blok prosedur dalam area script sudah tidak terurut lagi. 
Contoh : (silakan coba)
  1. double click Sheet2 (Sheet2) di Project Explorer untuk mengaktifkan code windownya
  2. pada Object Combobox -> pilih Worksheet
  3. otomatis Procedure Combobox akan terisi SelectionChange
  4. dalam area script terbentuk blok prosedur event SelectionChange

Melanjutkan kondisi yang diperoleh contoh, ketika Procedure Combobox langsung dipilih item yang lain, misal Change, maka blok prosedur event Change akan dibuatkan dan diletakkan dalam area script dengan urutan ascending alias ada di atas prosedur event SelectionChange. Begitu pula jika telah memilih beberapa event lainnya seperti Activate, Calculate, BeforeRightClick, FollowHyperlink, dsb. Gambar dibawah ini adalah wujud area script setelah dilakukan pemilihan item lain dari Procedure Combobox.


Susunan blok prosedur tidak harus terurut ascending seperti gambar di atas, tetapi VBE akan membuatkan blok prosedur event berusaha terurut relatif dari keadaan yang sudah ada dalam area script.


E. Margin Indicator Bar : area penempatan node


Sebuah area kecil dikiri area script sebagai lokasi penempatan node breakpoints saat debugging ataupun meletakkan bookmark sign. Area ini dapat disembunyikan ataupun ditampilkan melalui menu Tools -> Options -> tab Editor Format -> hilangkan centang atau centang item Margin Indicator Bar.

F. Script Views : tombol pengatur cara menampilkan blok prosedur
Tombol-tombol untuk memilih cara menampilkan blok prosedur yang ada di script area, yang terdiri dari 2 buah tombol, yaitu :
1. Full Module View


Menampilkan seluruh blok prosedur yang ada dalam class object terpilih. Seperti pada gambar diatas, ketika class object Sheet2 berisi 2 prosedur event, yaitu event Activate dan Deactivate. Full Module view dapat diatur sebagai default view melalui menu Tools -> Options -> tab Editor -> area Window Settings -> item Default to Full Module View

2. Procedure View


Menampilkan blok prosedur dilokasi kursor. Seperti gambar diatas, yang ketika dalam Full Module View berisi 2 event, kemudian kursor diletakkan pada event Deactivate dan tombol Procedure view ditekan, maka yang tampak pada area script hanya event Deactivate saja. Untuk beralih ke prosedur lain ketika menggunakan view ini adalah melalui Object Combobox (titik C) dan dilanjutkan dengan memilih item prosedur yang ada dalam Procedure Combobox (titik D).

Menata posisi window
Letak Project Explorer dan Properties Window pada gambar-gambar di atas adalah dilluar programming workspace. Hal ini disebabkan karena setting options pada menu Tools -> Options -> tab Docking diatur seluruh window-nya dalam keadaan dockable karena seluruh item dalam optons tersebut dicentang. Dengan opsi yang demikian, maka semua window selain code window tidak dapat memasuki programming workspace yang berisi code window.

Selain itu, setiap window juga tidak memiliki control untuk me-maximize atau me-minimize. Keuntungannya, letak setiap window tersebut bisa dipondah ke sisi manapun dari programming workspace dengan cara men-drag window tersebut ke sisi tertentu dari programming workspace. Misal, project explorer di drag (klik terus menerus sambil digeser kursor mousenya) ke area dikanan programming workspace, maka akan tampak garis maya yang menunjukkan letak yang dapat ditempati oleh project explorer.

Andai proses drag tadi berhenti atau dilepas saat berada di programming workspace atau di atas code window, maka project explorer akan mengambang di atas code window. Untuk mengmbalikannya adalah dengan double click window project explorer.

Ketika setting options pada tab docking tidak dicentang, maka window tersebut akan diletakkan didalam programming workspace seperti code window yang ada disana. Window yang diletakkan dalam programming workspace akan memiliki control maximize maupun minimize.

Jika window seperti project explorer atau properties window tertutup, maka untuk menampilkan kembali adalah melalui menu View dan memilih salah satu window yang ingin ditampilkan.

Menyimpan workbook berisi VBA
Pada Excel 2007 ke atas, workbook yang didalamnya berisi VBA harus disimpan dengan format Excel Macro-Enabled Workbook (.xlsm) atau Excel Binary Workbook (.xlsb) melalui Save As di workbook window.

Dongengan di atas sana tadi sudah ada beberapa contoh yang workbook-nya bisa disimpan untuk kenang-kenangan. Karena ada beberapa prosedur dan juga object class selain Microsoft Excel Objects, maka workbook akan tergolong dalam workbook yang memiliki VBA atau Macro. Jadi, proses menyimpan workbook pertama kali adalah dengan :
  1. pastikan sudah berada di workbook window. Jika masih di VBE, tekan ALT F11
  2. jalankan fitur Save As dengan menekan ALT  F  A
  3. pada File name, tulis nama workbook-nya
  4. pada Save as type, pilih yang berbunyi Excel Macro-Enabled Workbook (.xlsm)
  5. tekan tombol Save
  6. ingat-ingat terus cara save ini ya


Oke guys, sekian dulu bahasan tentang VBE-nya. Silakan dicoba untuk mengubah-ubah letak window dan sebagainya, sehingga bisa lebih terasa nyaman dalam melihat dan menggunakannya.

Insya Allah obrolan berikutnya tentang prosedur, scope, variabel dan konstanta, datatypes.



Thursday, June 27, 2013

BelajarVBA 000 - Kenalan

Coretan Mr. Kid

Semoga coretan VBA ini bisa menjadi awal coretan yang runut tentang VBA.


Microsoft Excel menyediakan alat otomasi yang dikenal dengan nama Macro. Sampai saat ini, bahasa pemrograman yang digunakan untuk membuat macro, yang ditempelkan secara langsung bersama MS Office adalah bahasa pemrograman Visual Basic for Application (VBA). Bahasa dasar dari VBA adalah bahasa pemrograman Visual Basic. Adanya VBA dalam paket MS Ofiice membuat setiap aplikasi MS Office, termasuk Excel, mampu membangun suatu program dalam aplikasi tersebut. Tujuan utama adalah mengotomasi kegiatan penggunaan aplikasi tersebut. Jadi, jika pada aplikasi Excel dibangun sebuah program, maka tujuan utama dari program tersebut adalah mengotomasi kegiatan penggunaan Excel. Kegiatan penggunaan Excel sangatlah luas, dari sekedar Copy Paste data dalam worksheet hingga interaksi dengan aplikasi lain, termasuk diluar kelompok sistem MS Office.



Sebelum melangkah lebih jauh tentang hal-hal yang tampak abstrak diatas, mari kita mulai dengan hal sederhana saja, yaitu berkenalan dengan VBA.

Untuk kepentingan belajar, mari kita bangun lingkungan belajar yang nyaman.

Tahap 1. Membuat folder khusus untuk belajar VBA.
Cobalah untuk membuat sebuah folder selain di drive yang berisi Operating System (OS). Misal di drive E, F, atau seadanya. Misal kita beri nama folder tersebut adalah BelajarVBA.



Tahap 2. Menampilkan ribbon Developer dalam Excel.
Mari kita buka aplikasi Excel. Biasanya akan terbentuk sebuah workbook baru dengan nama Book1. Tutup Book1 tersebut. Nanti akan tampak seperti gambar dibawah ini. Perhatikan juga tentang ada atau tidaknya menu (ribbon) Developer dijajaran menu. Jika tidak ada, maka ikuti terus tahap ini. Jika sudah ada, bisa ke tahap 3.


Khusus bagi yang tidak tampak ribbon Developer-nya (si kotak merah), ikuti langkah ini :
xl2007 : Office Button (bunder pojok kiri atas) -> Excel Options -> lihat gambar -> OK




xl2013 : menu File -> Options -> lihat gambar -> OK



Tahap 3. Security Macro.
Penggunaan VBA pada umumnya dibatasi alias membutuhkan ijin security macro. Setting ini akan tetap dipasang pada kondisi yang aman. Pengaturan ini masih melalui Excel Options. Silakan lihat tahap 2 untuk bisa menampilkan Excel Options. Berikut tahapannya :
> pada Options -> klik page (frame kiri) Trust Center -> klik tombol Trust Center Settings
> pada dialog window baru -> lihat gambar dan pilih nomor 2 -> jangan tekan OK dulu ya


Pada gambar di atas ada 4 nomor dan 1 abjad.Dari keempat opsi yang ada, umumnya digunakan opsi 2. Kisahnya sebagai berikut :

Opsi 1
-> menolak seluruh VBA. Jadi Macro tidak akan boleh dijalankan sama sekali.

Opsi 2
-> Macro tidak boleh jalan sampai ada ijin boleh jalan oleh User.
-> Ketika membuka file berisi Macro (ada script VBA-nya), akan tampak seperti gambar.
-> Pertama kali akan muncul seperti gambar yang kiri dan ketika si tombol yang ditunjuk panah dipencet, maka akan muncul dialog window seperti yang kanan.
-> Ketika dialog window yang kanan dipilih Enable this content lalu menekan OK, maka Macro (VBA) boleh beroperasi.
-> Pastikan selalu untuk melihat notifikasi seperti Security Warning di gambar yang kiri ketika membuka workbook dimanapun Anda berada.


Opsi 3
-> Opsi ini hanya akan mengijinkan Macro (VBA) yang telah disertai kartu digital. Kartu digital ini biasanya dikeluarkan suatu lembaga sertifikasi atau oleh administrator jaringan setempat. Meskipun bisa membuat sendiri, dengan tidak diakuinya kartu digital tersebut ditempat lain, maka tidak akan bisa dijalankan di Office yang di-set dengan opsi 3 ini.
-> Untuk penjelasan lebih detil tentang Digital Signature, coba jalan-jalan kesini.

Opsi 4
-> Opsi ini akan mengijinkan seluruh Macro untuk beroperasi. Hal ini tidak direkomendasikan karena bisa jadi script VBA yang ada termasuk ke dalam golongan virus.

Item A-> Item ini khusus tentang ijin mengakses komponen VBProject.
-> Jika dicentang, maka akan diberikan ijin untuk mengakses komponen VBProject.
-> Artinya, dengan adanya ijin ini, maka terbuka kemungkinan membuat sebuah macro menggunakan script VBA. Syaratnya adalah adanya referensi ke library bernama Microsoft Visual Basic for Applications Extensibility 5.3 (nama librarynya VBE6EXT.olb).

xixixixixi.... 
biasanya akan ada banyak pembelajar VBA yang ngiler dengan pintu yang satu ini.
bisa buat workbook baru berisi VBA sesukanya gitu loh...
kita obrolin yang gak bikin ngiler saja dulu ya...


Tahap 4. Setting trusted locations.
Office menyediakan pintu lain, selain digital signature, untuk VBA yang terpercaya agar dapat melewati bagian security macro dan segera bisa bekerja. Pintu tersebut adalah trusted locations. Hal ini bisa diatur melalui dialog window Trust Center pada page Trusted Locations. Berikut ini adalah langkah pengaturan untuk membuat folder BelajarVBA termasuk folder yang dapat dipercaya :
A. menuju dialog window Trust Center
-> Excel Options (lihat tahap 2)
-> page Trust Center -> tombol Trust Center Settings (lihat tahap 3)
-> pada dialog window Trust Center -> page Trusted Locations -> lihat gambar


-> tekan tombol Add new location -> akan muncul dialog window baru (lihat gambar)


-> tekan tombol Browse -> tunjuk folder bernama BelajarVBA (yang akan ditambahkan)
-> centang opsi Subfolders of this location are also trusted jika seluruh isi terpercaya
-> bila perlu, isi keterangan tentang folder tersebut di bagian Description
-> tekan OK dan hasilnya akan seperti gambar di bawah ini : (lihat panah merah)


-> OK terus menerus sampai keluar dari Excel Options.

Sampai disini, lingkungan MS Office dan Excel Application sudah mulai terasa nyaman untuk belajar VBA. Langkah selanjutnya adalah mengetahui tempat untuk bisa berinteraksi menyusun script. Tempat tersebut bernama Visual Basic Editor (VBE). VBE bisa didatangi setidaknya melalui 3 cara berikut ini :
1. ribbon Developer -> grup Code -> tekan Visual Basic


2. menekan bersamaan tombol keyboard ALT dan F11 (seperti yang tertulis di tooltip yang dapat dilihat pada gambar di atas)

3. klik kanan nama sebuah sheet dalam sheets tab -> pilih View Code (khusus jika sudah ada workbook yang terbuka)


Sekarang, kita buat workbook baru, kemudian lakukan salah satu cara untuk ke VBE di atas, sehingga muncul window VBE seperti gambar.


Agar dalam belajar VBA nantinya bisa seragam, kita atur lingkungannya.
1. Pastikan properties window (frame kiri bawah pada gambar di atas) telah tampak. Jika belum tampak, tekan tombol F4.

2. Mengatur VBE Options dengan cara menu Tools -> Options


Pada dialog window VBE Options yang muncul, atur di setiap tab-nya seperti gambar
> tab Editor :


- Auto Syntax Check : aktif memeriksa setiap penulisan script agar segera diketahui kesalahan penulisan yang dilakukan ketika berpindah baris.
- Require Variable Declaration : menuntut adanya deklarasi dari setiap variabel yang digunakan, sehingga kita bisa sekaligus belajar disiplin dalam bermain variabel.
- Auto List Members : menampilkan daftar anggota sebuah object, baik berupa properties, methods, maupun konstanta yang dimilikinya.
- Auto Quick Info : menampilkan baris deklarasi methods terpilih, sehingga memudahkan dalam pengisian parameter-parameter input.
- Auto Data Tips : menampilkan informasi bagian yang ditunjuk mouse ketika debugging.

> tab Editor Format (beri centang pada item yang di kotak merah saja)


- Margin Indicator Bar : memberi jarak antara tepi Code Window dengan area penulisan script, sehingga memudahkan dalam meletakkan break-point.

> tab General :


> tab Docking :


3. tekan OK.

Oke guys, sekian dulu ya kenalannya. Kalau diteruskan sekarang, bisa-bisa nanti bosen.
Insya Allah pembahasan berikutnya adalah tentang jalan-jalan untuk mengetahui ruangan-ruangan yang ada di VBE.

:)

Wednesday, June 26, 2013

Membuat Daftar dan memilih Sheet

Oleh: Hendrik Karnadi

Dalam bekerja sering kali kita dihadapkan pada keharusan membuat atau menerima file (workbook) dengan jumlah sheet yang sangat banyak.

Baru-baru ini saya menerima satu file dengan jumlah sheet sebanyak 98 sheets dengan nama-nama yang hampir sama. Karena letak sheet yang tidak berurutan (mis. sesuai topik atau abjad) maka setiap kali saya mau mencari satu sheet saya harus mengingat-ingat letak sheet tersebut. Ketika saya coba membuka VBE Sheet untuk melihat letak sheet yang saya cari ternyata urutan nama sheet di VBE Sheet tidak sama dengan yang ada dalam workbook.

Saya coba membuat macro yang bisa membuat daftar sheets yang up to date pada sheet "Daftar" yang saya letakkan pada sheet paling kiri. Up to date berarti jika kita menambah, menghapus atau memindahkan sheet maka nama sheet akan langsung terdaftar dalam, terhapus dari sheet "Daftar" dan tersusun sesuai dengan urutan sheet terakhir. Jadi jika kita ingin mencari suatu sheet maka kita cukup mengklik sheet "Daftar" dan mendouble klik nama sheet yang kita inginkan.


Macronya adalah seperti ini (pada VBE Sheet1(Daftar):

Private Sub Worksheet_Activate()
    Dim Sh As Worksheet
    Application.EnableEvents = False
    Application.ScreenUpdating = False
    Application.Calculation = xlCalculationManual
    Sheets("Daftar").Activate
    Range("A1").Select
    Range("A1").CurrentRegion.ClearContents
    For Each Sh In Worksheets
        If Sh.Name <> "Daftar" Then
            ActiveCell.Value = Sh.Name
            ActiveCell.Offset(1, 0).Select
        End If
    Next
    Range("A1").Select
    Application.EnableEvents = True
    Application.ScreenUpdating = True
    Application.Calculation = xlCalculationAutomatic
End Sub

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
    Sheets(ActiveCell.Value).Select
End Sub

Untuk mentes macro ini, kita bisa melakukan langkah-langkah berikut ini:

Menambah sheet
- Tambahkan sheet.
- Klik Sheet Daftar
- Lihat apakah sheet yang ditambahkan tersebut telah terdaftar

Menghapus sheet
- Hapus nama sheet
- Klik Sheet Daftar
- Lihat apakah sheet yang dihapus telah hilang dari daftar

Memindahkan sheet
- Pindahkan sheet dengan mendragnya dengan mouse
- Klik Sheet Daftar
- Lihat apakah urutan sheet dalam daftar telah sesuai dengan urutan atau letak sheet yang terakhir

Memilih sheet yang diinginkan
- Klik Sheet Daftar (paling kiri)
- Pilih dan Double Click nama sheet yang diinginkan

Semoga macro sederhana ini bermanfaat untuk menghemat waktu kerja kita.

Hendrik Karnadi/27-06-13

Tuesday, June 25, 2013

Create Your Own Shortcut Key

Oleh: Ferry Setiawan

Awal mulanya muncul perasaan kurang efisien pada saat bekerja dengan excel yang terdiri dari beberapa worksheet, mengapa demikian ? karena pada saat akan pindah sheet, kita harus klik sheet yang dimaksud dengan menggunakan mouse, cara kedua adalah dengan menggunakan shortcut Ctrl + Page Up/Down.

Melihat posisi tombol Page Up/Down yang ada di pojok kanan atas keyboard (Laptop Dell) rasanya susah juga untuk menekan tombol dengan benar tanpa melihat (mungkin saya kurang ahli dalam ketik mengetik hehehe....).

Akhirnya sambil iseng iseng mulailah bikin macro untuk membuat shorcut key sendiri dengan memanfaatkan Personal.xlsb yang diload setiap aplikasi excel dibuka

Codenya adalah sebagai berikut :



'Pilih Sheet sebelah kanan
Sub SelectRightSheet()
  If ActiveSheet.Index < Worksheets.Count Then
    ActiveWorkbook.Sheets(ActiveSheet.Index + 1).Activate
  End If
End Sub

'Pilih Sheet sebelah kiri
Sub SelectLeftSheet()
  If ActiveSheet.Index > 1 Then
    ActiveWorkbook.Sheets(ActiveSheet.Index - 1).Activate
  End If
End Sub

Kedua procedure ini saya masukkan dalam module.

Kemudian tambahkan juga setup code nya :

Public Sub Workbook_Open()
  Application.OnKey "%{LEFT}", "PERSONAL.XLSB!SelectLeftSheet"
  Application.OnKey "%{RIGHT}", "PERSONAL.XLSB!SelectRightSheet"

End Sub  

Code ini saya masukkan dalam workbook dari personal.xlsb juga.  
Setelah selesai , maka saya bisa memanfaatkan tombol Alt + Left/Right Arrow yang tentunya lebih mudah dijangkau oleh jari dan tanpa melihatpun bisa dengan mudah di tekan.   Setelah itu beberapa shortcut juga saya tambahkan untuk mempermudah saya dalam menggunakan excel,  

'Untuk paste format painter
Sub SelectFormatPainter()
  Selection.PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _
  SkipBlanks:=False, Transpose:=False
End Sub

'Untuk membesarkan Font
Sub FontSizeUp()
  Selection.Font.Size = Selection.Font.Size + 1
End Sub

'Untuk mengecilkan Font
Sub FontSizeDown()
  Selection.Font.Size = Selection.Font.Size - 1
End Sub

'Untuk refresh pivot
Sub RefreshPivot()
  On Error GoTo last:
    ActiveCell.PivotTable.PivotCache.Refresh
  last:
End Sub

Sehingga code pada workbook menjadi :  

Public Sub Workbook_Open()   'Alt + Left Arrow
  Application.OnKey "%{LEFT}", "PERSONAL.XLSB!SelectLeftSheet"
  'Alt + Right Arrow
  Application.OnKey "%{RIGHT}", "PERSONAL.XLSB!SelectRightSheet"
  'Alt + `
  Application.OnKey "%{`}", "PERSONAL.XLSB!SelectFormatPainter"
  'Alt + [
  Application.OnKey "%{[}", "PERSONAL.XLSB!FontSizeUp"
  'Alt + ]
  Application.OnKey "%{]}", "PERSONAL.XLSB!FontSizeDown"
  'Alt + \
  Application.OnKey "%{\}", "PERSONAL.XLSB!RefreshPivot"
End Sub

Tentunya ada kekurangan mendasar dari cara ini, yaitu komputer/laptop lain yang tidak mempunyai code tersebut tidak bisa menggunakan, karena personel.xlsb hanya menempel pada komputer/laptop dimana code di masukkan (local code).

Monday, June 24, 2013

Video Kopdar Milis Belajar Excel Ke 1

Alhamdulillah, Kopdar ke 1 milis belajar-excel terasa banget keakrabannya. Saya mengucapkan terima kasih untuk Mr.Kid dan Pak Hendrik yang berkenan berbagi ilmunya, insya Allah bermanfaat untuk kita semua. Tidak lupa saya ucapkan terima kasih untuk seluruh rekan2 yang berkenan untuk hadir, biasanya yg sudah sekali ikut, akan ketagihan untuk ikut kopdar berikutnya :)
Mohon maaf untuk dokumentasi tidak bisa full seluruh acara, hanya sekedar untuk kenangan, bahwa kita pernah silaturahmi dan berbagi ilmu bersama. Saya pun tidak membawa file-file yang dapat dibagi, karena saya tidak copy file apa-apa. Mr.Kid dan Pak Hendrik langsung praktek di laptopnya, menjelaskan seluruhnya via proyektor yang tersedia. Walhasil, peserta kopdar yang bisa merasakan langsung manfaat dari ilmu yang dijelaskan oleh Mr.Kid dan Pak Hendrik. Luar biasa penjelasannya !
Untuk sesion quiz, sangat menarik pertanyaan2 yang diajukan Mr.Kid, ini menandakan Beliau memang sudah advance dan master dibidang Excel. Saya hanya bisa jawab satu, he..he... O ya, untuk hadiah quiz, 6 keping DVD Access Collections, dan 1 buku baru karya Bpk.Haer Thalib, yang berjudul "Membuat Sendiri Aplikasi Database Koperasi dengan Microsoft Access", yang dilengkapi 1 CD didalamnya. Semua sudah diberikan kepada seluruh peserta.
Hari Sabtu sepulang kopdar, langsung saya editing video dan foto2nya, Alhamdulillah sudah selesai dalam satu file movie. Silahkan rekan2 tonton videonya disini: http://youtu.be/0u1HZabZmZg . Jangan lupa speakernya dihidupkan ya. Bila koneksi internetnya kenceng, lebih mantap bila HD quality yang dipilih :)

.:: because we are one big Excel family ::.

Wassalamu'alaikum Warahmatullahi Wabarakatuh,
Sofyan Efendi
http://imopi.wordpress.com/
http://trendmuslim.com/

Sunday, June 23, 2013

Video Kopdar #1 bExcel


Laporan Kopdar Excel 1

Kopdar (kopi darat) komunitas Excel di Indonesia yang pertama, Sabtu, 22 Juni 2013, telah berhasil terlaksana dengan sukses. Kopdar atau (offline meeting) komunitas yang biasa berinterkasi melalui milis (mailing list) belajar-excel@yahoogroups.com tersebut dilaksanakan di kampus Universitas Muhammadiyah Jakarta (UMJ) Fakultas Teknik, Cempaka Putih, Jakarta Pusat. Kopdar dimulai dari jam 08:00 dan berakhir jam 13:00.

Kopdar diisi dengan sharing ilmu oleh Mr. Kid (salah satu moderator milis belajar-excel) dan pak Hendrik (penulis buku Excel). Mr. Kid membawakan materi "Pengolahan Data dengan MS Excel" dan pak Hendrik membawakan materi "Pengenalan VBA". Acara ditutup dengan kuis dan pembagian hadiah, yaitu berupa DVD berisi materi belajar Excel dan Access dari bang Opi (Soffyan Efendi, pendiri dan moderator milis belajar-excel) dan buku berjudul "Membuat Sendiri Aplikasi Database Koperasi dengan Microsoft Access" dari bang Haer Talib (pendiri dan oderator milis belajar-excel, Access MVP).



Kopdar Excel pertama ini cukup hangat dan berbobot, terutama karena diisi dengan sharing ilmu dari Mr. Kid yang berkualitas dan dengan gaya khasnya yang penuh canda. Kesan secara keseluruhan adalah terbatasnya waktu yang disediakan panitia sehingga acara 'ramah-tamah' khas komunitas kurang mendapat waktu sehingga di antara peserta kurang sempat bersosialisasi. Di samping itu, terbatasnya waktu membuat penyampaian materi menjadi agak terburu-buru. Masih banyak pertanyaan yang dibawa peserta yang belum sempat diajukan di luar materi yang disampaikan terpaksa dibawa pulang kembali untuk ditanyakan di milis saja :)

Bravo komunitas Excel Indonesia! Lain kali kita ketemu lagi dalam suasana yang lebih akrab dan suasana yang lebih hangat!

Seluruh peserta (minus 3)

Haer Talib - Opik - Opi - Mr. Kid - Hendrik - Aliif

Mr. Kid in action

Hendrik in action

Peserta tekun mengikuti presentasi Mr. Kid

Mr. Kid menjelaskan VBA


Thursday, June 20, 2013

Kopdar Belajar Excel 1

Sabtu, 22 Juni 2013 adalah hari pertemuan (kopdar) pertama warga milis belajar-excel@yahoogroups.com
Sejumlah 30 orang telah terdaftar dan positif akan mengikuti acara komunitas pemakai dan pecinta MS Excel di Indonesia ini.

Untuk mengikuti kopdar ini peserta harus mendaftarkan diri dengan mengisi database yang disediakan panitia di website milis (yahoogroups.com), dan melakukan transfer 'urunan' Rp 75.000 ke rekening panitia. Hanya peserta yang sudah terdaftar yang bisa ikut.

Lokasi kopdar adalah di:
Fakultas Teknik / Universitas Muhammadiyah Jakarta / Ruang AB
Jl. Cempaka Putih Tengah 27 Cempaka Putih, Jakarta Pusat


Registrasi ulang akan dilaksanakan mulai pukul 07:30 pagi.

Berikut ini adalah peta lokasi kopdar: