Excel VBA Macro Tutorial in Indonesia Language

advertisement
MS. Excel Visual Basic for Application (VBA – Macro)
Daftar ISI
Microsoft® Excel VBA Macro
Contents
I.
Persiapan......................................................................................................................................... 4

Developer Ribbon ........................................................................................................................ 4

Macro Security ............................................................................................................................. 5

Macro Enabled Workbook (.xlsm) ................................................................................................ 5
II.
Recording Macro ............................................................................................................................. 7
Overview ......................................................................................................................................... 7

Record Macro .............................................................................................................................. 7

Manage Macro ............................................................................................................................ 8

Relative References ..................................................................................................................... 9

Edit Macro ................................................................................................................................... 9
III.
VBE, Module & Procedures ........................................................................................................ 11
Overview ....................................................................................................................................... 11

Mengakses VBE.......................................................................................................................... 11

Module ...................................................................................................................................... 12

Procedures ................................................................................................................................ 14
IV.
Object & Addressing .................................................................................................................. 15
Overview ....................................................................................................................................... 15

V.
Object Addressing ...................................................................................................................... 16
Property Format ............................................................................................................................ 19
Overview ....................................................................................................................................... 19

VI.
Format menggunakan .Address .................................................................................................. 19
With … End With ........................................................................................................................ 20
Overview ....................................................................................................................................... 20

Penggunaan With.. End With ..................................................................................................... 20
VII.
Formula R1C1 ............................................................................................................................ 22
Overview ....................................................................................................................................... 22

Penggunaan R1C1 ...................................................................................................................... 22
VIII.
Variable ..................................................................................................................................... 24
Copyright © Hery Purnama
Halaman 1
MS. Excel Visual Basic for Application (VBA – Macro)
Overview ....................................................................................................................................... 24

Fase Variable ............................................................................................................................. 24

Local Variable ............................................................................................................................ 24

Public Variable ........................................................................................................................... 26

Constant Variable ...................................................................................................................... 27

Object Variable .......................................................................................................................... 27
IX.
Inputbox .................................................................................................................................... 30
Overview ....................................................................................................................................... 30

X.
Penggunaan Inputbox ................................................................................................................ 30
Conditional If ................................................................................................................................. 32
Overview ....................................................................................................................................... 32

Penggunaan Conditional IF......................................................................................................... 32

UCASE Function ......................................................................................................................... 34
XI.
User Defined Function (UDF)...................................................................................................... 36
Overview ....................................................................................................................................... 36

Pembuatan UDF ......................................................................................................................... 36
XII.
Msgbox ...................................................................................................................................... 40
Overview ....................................................................................................................................... 40

Penggunaan Msgbox .................................................................................................................. 40
XIII.
Anatomi Script & Project Password ............................................................................................ 42
Overview ....................................................................................................................................... 42

Anatomi script ........................................................................................................................... 42

Project Password ....................................................................................................................... 45
XIV.
Subrutin & Error Handling .......................................................................................................... 47
Overview ....................................................................................................................................... 47

Penggunaan SUBRUTIN .............................................................................................................. 47

Penggunaan ERROR HANDLING .................................................................................................. 48
XV.
Looping ...................................................................................................................................... 50
Overview ....................................................................................................................................... 50

Jenis Looping ............................................................................................................................. 50

For .. Next .................................................................................................................................. 50

Do... Loop .................................................................................................................................. 51

isEmpty function ........................................................................................................................ 52
Copyright © Hery Purnama
Halaman 2
MS. Excel Visual Basic for Application (VBA – Macro)
XVI.
Object Form & Control ............................................................................................................... 53
Overview ....................................................................................................................................... 53

Form .......................................................................................................................................... 53

Toolbox...................................................................................................................................... 54

Lable .......................................................................................................................................... 55

Textbox ...................................................................................................................................... 56

Enabled = False .......................................................................................................................... 56

ComboBox ................................................................................................................................. 57

Command Button....................................................................................................................... 60

TabIndex Property ..................................................................................................................... 61

Text Property ............................................................................................................................. 61

Event & Private Sub ................................................................................................................... 62
XVII.
Run Macro from Excel ................................................................................................................ 66
Overview ....................................................................................................................................... 66

Menambahkan Control Button Form di Sheet ............................................................................ 66
Copyright © Hery Purnama
Halaman 3
MS. Excel Visual Basic for Application (VBA – Macro)
I. Persiapan
Overview
Saya Hery Purnama Certified IT Trainer dari Bandung yang akan mengajarkan Anda
secara step by step melalui buku ini terkait Excel VBA Macro. Macro adalah fasilitas yang
disediakan Microsoft untuk memaksimalkan kinerja fitur dan lembar kerja excel,
menggunakan macro bisa 2 cara yaitu dengan merekam (Recording) atau Scripting
Manual, pada umumnya baik recording dan scripting manual digunakan bersama sama
karena tidak semua aktifitas recording macro bisa menyelesaikan masalah automation
Sebelum Anda memulai belajar Excel VBA Macro , alangkah baiknya jika anda
mempersiapkan dahulu kelengkapan berikut ini

Developer Ribbon
Anda membutuhkan "Developer Ribbon" untuk membantu pekerjaan Macro Anda
Excel 2007 : Office Button - Options - Popular - [Check] Show Developer tab In the
ribbon
Excel 2010/2013 : File - Options - Customize Ribbon - [Check] Developer Tab
Copyright © Hery Purnama
Halaman 4
MS. Excel Visual Basic for Application (VBA – Macro)

Macro Security
Selama proses pengerjaan Macro , anda harus melemahkan security macro Anda
Tab Developer - Macro Security - Enabled all macros (not ....)

Macro Enabled Workbook (.xlsm)
Mulai Excel 2007 semua aktifitas macro harus disimpan dalam tipe macro enabled
workbook (.xlsm)
File - Save As - (Beri nama file) "topikvba" - (ganti type) Excel Macro - Enabled Workbook
(.xlsm)
Copyright © Hery Purnama
Halaman 5
MS. Excel Visual Basic for Application (VBA – Macro)
File tipe ini tidak berbeda dengan file xlsx lainnya hanya saja mendukung script macro
Copyright © Hery Purnama
Halaman 6
MS. Excel Visual Basic for Application (VBA – Macro)
II. Recording Macro
Overview
Anda harus paham dahulu tahapan rekaman yang akan anda lakukan , hati hati ! setiap
aktifitas akan direkam , maka pastikan aktifitas recording Anda dilakukan secara
sistematis dan efektif, tidak ada salahnya Anda membuat catatan di secarik kertas
mengenai langkah - langkah yang akan dilakukan atau simulasikan dahulu sebelum Anda
merekam macro. Untuk kasus topikial ini Anda akan merekam aktifitas membuat tabel
template berikut :
Langkah yang paling efektif dalam recording adalah didahului dengan mengetikkan
semua text/ content di setiap sel , setelahnya baru lakukan kegiatan formating (border,
shading, font, column width , format currency , dll )

Record Macro
Silahkan buka file topikvba.xlsm
Tab Developer - Record Macro
Pada kotak dialog record macro
Copyright © Hery Purnama
Halaman 7
MS. Excel Visual Basic for Application (VBA – Macro)
Keterangan :
Macro Name (tanpa spasi/ tanda baca/ angka didepan) ,
Shortcut (tekan keyboard SHIFT + Q , tanpa shortcut juga tidak apa apa ) ,
Store Macro in ( This workbook : Macro tersimpan dan hanya bisa dijalankan di file itu
saja ,Personal Macro .. : Macro di simpan di Aplikasi Excel sehingga bisa dijalankan di
semua file , New Workbook : Macro bisa dijalankan di sebuah file baru dengan syarat
file dimana macro dibuat dalam kondisi terbuka),
Description : (hanya keterangan, tidak harus diisi),
Begitu tombol OK anda tekan, maka semua aktifitas anda terhadap aplikasi/ file/ sheet/
cell/ menu bahkan scrollbar akan terekam karenanya lakukan dengan hati hati
Silahkan mulai merekam membuat table template seperti contoh kasus diatas
Setelah table selesai anda buat rekamannya dalam macro, jangan lupa tekan "STOP
Recording"

Manage Macro
Setelah merekam macro maka Anda bisa menjalankannya dengan menggunakan
shortcut Ctrl+Shift+Q , coba jalankan disetiap sheet baru, dan table template hasil
rekaman akan tampil
Copyright © Hery Purnama
Halaman 8
MS. Excel Visual Basic for Application (VBA – Macro)
Untuk Manajemen (Run, Edit , Delete) setiap macro yang Anda buat silahkan akses Tab
Developer - Macros
Setiap kali Anda mengedit macro , Anda akan masuk ke area VBE (Visual Basic Editor).
Anda akan memahami Script VBA yang terlihat pada next topikial

Relative References
Jika anda perhatikan, Setiap kali macro rekaman table template Anda jalankan , hasilnya
berupa table yang selalu berada dalam posisi yang absolute (sama lokasi), jika Anda
ingin hasil table yang tampil start pointnya tergatung anda menempatkan kursor , maka
sebelum Anda "Record Macro" aktifkan dulu "Use Relative References"

Edit Macro
Gunakan tab Developer - Macro - pilih Edit , Anda akan masuk ke VBE (Visual Basic
Editor), untuk bisa mengedit anda harus memahami VBA Script , Setiap macro yang
direkam hasilnya adalah sebuah procedure di VBA yang diawali dengan SUB
nama_prosedur .... diakhiri dengan END SUB .
Copyright © Hery Purnama
Halaman 9
MS. Excel Visual Basic for Application (VBA – Macro)
Anda bisa mencoba menyisipkan perintah kecil berikut di awal statement
msgbox "Template akan dibuat, OK untuk lanjut !"
Jalankan Script dengan F5 , Jika ingin kembali ke Excel klik icon Excel di kanan atas Editor
Copyright © Hery Purnama
Halaman 10
MS. Excel Visual Basic for Application (VBA – Macro)
III. VBE, Module & Procedures
Overview
VBE (Visual Basic Editor) adalah tool di Excel yang digunakan untuk mengetikan script
VBA Macro Anda,
Module adalah tempat dimana Anda mengetikkan Prosedur UMUM,
Procedures adalah sekumpulan perintah sequential/berurut yang ingin diproses untuk
mencapai target tertentu , procedure tidak harus memiliki nilai balikan, prosedur terdiri
2 kelompok (UMUM & KHUSUS)
 Mengakses VBE
Masuk ke area VBE banyak caranya, salah satunya melalui tab Developer - Visual Basic
Di dalam VBE ada 3 area utama yang telah muncul ,
1) Area Project Explorer setiap file excel akan dianggap sebagai 1 project, macro yang
anda rekam secara default dianggap sebagai Procedure Umum dimana akan diletakkan
didalam Module ,
2) Area Properties , setiap object akan memiliki properti termasuk juga module, anda
bisa merubah nama module dibagian properties ,
Copyright © Hery Purnama
Halaman 11
MS. Excel Visual Basic for Application (VBA – Macro)
3) Area Editor adalah area lembar kerja progremmer, dimana anda membuat/edit script
anda

Module
Module adalah tempat dimana Anda meletakkan / mengelompokkan semua prosedur
UMUM yang Anda buat, 1 module bisa memiliki hanya 1 atau lebih dari 1 prosedur
umum, dengan kata lain tidak ada ketentuan khusus mengenai bagaimana Anda
menempatkan prosedur di dalam module, semua tergantung bagaimana nantinya anda
ingin me-manaje prosedur umum Anda hingga mudah di kelola kembali di kemudian
hari
Silahkan buat 1 buah Module Baru : Klik Kanan Modules - Insert - Module
Copyright © Hery Purnama
Halaman 12
MS. Excel Visual Basic for Application (VBA – Macro)
Berikan Nama Module : mod_object melalui property name dibawah
Copyright © Hery Purnama
Halaman 13
MS. Excel Visual Basic for Application (VBA – Macro)
Double click module mod_object untuk membuka lembar editor kosong disebelah
kanan layar

Procedures
Prosedur Terbagi 2 :
1) Prosedur Umum (diletakkan dimodule, ditandai dengan penulisan SUB
nama_prosedur ... End Sub) secara sederhana adalah prosedur yang fokus pada
perintah perintah dalam prosedur untuk mencapai target , sedangkan pelaku/pemicu
dijalankannya prosedur tersebut dipikirkan belakangan )
2) Prosedur Khusus ( ditandai dengan penulisan Private Sub objectName_event ... End
Sub , berbeda dengan prosedur umum, prosedur khusus haruslah ditentukan dahulu
object apa yang jadi pelaku/ pemicu dijalankannya sebuah prosedur, baru setelahnya
Anda bisa fokus pada pembuatan perintah perintah di dalam prosedur untuk mencapai
target tertentu)
Untuk topik ini ketikkan prosedur UMUM berikut pada module mod_object
Copyright © Hery Purnama
Halaman 14
MS. Excel Visual Basic for Application (VBA – Macro)
IV. Object & Addressing
Overview
Setiap Object memiliki properti yang bisa dimanipulasi dan sebuah object bisa juga
diperintah untuk melakukan sesuatu, contoh Manusia.tangan.jari = 5 (artinya munusia
punya properti tangan dengan jumlah jari 5 ) atau bisa juga Manusia.tangan.pukul
(artinya manusia memliki tangan dan diperintahkan untuk memukul , memukul adalah
action/methode) .
Artinya 2 elemen penting dari sebuah object adalah Object memiliki Properties yang
bisa dimanipulasi dan object memiliki Methode untuk diperintahkan bertindak ,
perhatikan script hasil rekam macro proc_template sebelumnya
Range("A1").Select (.Select adalah methode dari object sel A1, atau perintah agar kursor
diposisikan di A1)
Activecell.value = "REKAPITULASI...." (.value adalah properti dari object Activecell, atau
perintah agar isi dari sel yang aktif dimanipulasi nilainya menjadi "REKAPITULASI ...")
Perhatikan perbedaan penulisannya, properti selalu diakhiri "=" , sedangkan methode
tidak
Perhatikan juga saat Anda menekan titik setelah mengetik object akan muncul "code
hint/ bantuan" , jika methode akan terlihat beruapa icon hijau , sedangkan jika property
akan terllihat berupa icon telunjuk
Copyright © Hery Purnama
Halaman 15
MS. Excel Visual Basic for Application (VBA – Macro)
Hirarki Object Excel meliputi : Object Application Excel - Workbooks - Worksheets (Range/Cells/Columns/Rows/Activecell)
Selain Object Excel , Anda nantinya juga akan bekerja dengan Object VBA, Object Form
dan Object Active X

Object Addressing
Memahami object, Property dan Methode dapat mudah Anda lakukan dengan
mengenal "addressing"
Absolute Address
ketikkan script berikut untuk mengaktifkan object sheet "REKAP" lalu memposisikan
kursor di sel "A5".
Sel A5 adalah object yang memiliki absolute address karena lokasinya tetap/ fixed
(selalu di A5)
(Mohon ganti dahulu nama sheet1 di excel yang telah berisi hasil table template
menjadi "REKAP")
Copyright © Hery Purnama
Halaman 16
MS. Excel Visual Basic for Application (VBA – Macro)
Jalankan dengan tekan F5 , lalu kembali ke Excel dan perhatikan sheet REKAP aktif dan
kursor di A5
Relative Address
Ketimbang nanti Anda menuliskan alamat absolute berulang kali di dalam prosedur,
lebih baik jika dikombinasikan dengan Relative Address (menggunakan object Activecell
dan properti offset(...)).
Seperti script terlihat berikut , dimana Anda perintahkan agar pengisian nilai NIP dimulai
dari sel yang sedang aktif ("A5") lalu dilanjutkan mengisi sel sel ke arah KANAN namun
dengan membuat "A5" sebagai titik sel acuan
Offset(rowIndex, colindex)
Ketentuan offset , jika negatif maka me-refer ke kiri atau ke atas dan jika positif maka
me-refer ke kanan atau ke bawah
Activecell.offset(0,1).value (Mengisi sel loncat 1 kolom ke kanan (yaitu B5) dari acuan
sel aktif (A5) sedangkan secara row tetap diposisinya atau tidak turun ke bawah)
'isi nip (Cara memberikan komen di script dengan kutip satu ' )
" _ " (Underscore adalah cara memotong script di VB)
Jalankan kembali dengan F5 lalu lihat hasilnya di sheet REKAP
Copyright © Hery Purnama
Halaman 17
MS. Excel Visual Basic for Application (VBA – Macro)
Copyright © Hery Purnama
Halaman 18
MS. Excel Visual Basic for Application (VBA – Macro)
V. Property Format
Overview
Setiap objek memiliki sekelompok properti untuk kebutuhan formating, seperti layaknya
pekerjaan memformat Anda di sel Excel, Cara mengisi nilai dari setiap properti tersebut
tentu akan berbeda beda, Anda membutuhkan referensi dari Help menu atau google
untuk mencari cara megisi nilai properti , sebagai contoh untuk property ColorIndex
anda menggunakan warna Index dari 0 - 56

Format menggunakan .Address
Penggunaan properti .Address dibutuhkan untuk mendapatkan referensi sel , biasanya
dibutuhkan jika Anda ingin mengetahui Alamat sel dari sebuah Relative Address yang
Anda buat
Coba Tambahkan Script berikut dalam prosedur
Properti .numberFormat juga digunakan untuk date, contoh :
Activecell.numberFormat = "dd-mm-YY"
Copyright © Hery Purnama
Halaman 19
MS. Excel Visual Basic for Application (VBA – Macro)
VI. With … End With
Overview
With ... End with digunakan untuk menyederhanakan penulisan object atau properti
yang berulang kali dilakukan , sebenarnya perintah ini tidak perlu dilakukan karena tidak
berpengaruh terhadap alokasi momori yang digunakan, pemanfaatannya lebih kepada
mempermudah programmer dalam menulis script saja

Penggunaan With.. End With
Edit script dengan menambah With .. End With pada object activecell yang berulang
Copyright © Hery Purnama
Halaman 20
MS. Excel Visual Basic for Application (VBA – Macro)
Perhatikan highlight kuning adalah object yang pada awalnya ditulis berulang kali dan
kini telah dihilangkan perulangannya dengan With .. End with
Copyright © Hery Purnama
Halaman 21
MS. Excel Visual Basic for Application (VBA – Macro)
VII. Formula R1C1
Overview
Jika Anda perhatikan hasil sementara Total Gaji adalah berupa angka akhir dikarenakan
proses kalkulasi dilakukan di VBA , Bagaimana jika Anda ingin menginjeksi formula ke
dalam sel total gaji, jawabnya gunakan metode R1C1 , metode ini mirip dengan offset
dimana ada sel acuan yang digunakan.
Contoh jika anda ingin mereferensikan 1 kolom sebelah kiri dari acuan sel yang akan
diinjeksi formula , maka "=RC[-1]" artinya Row dalam posisi fixed/ tidak turun, sedang
Column refer ke 1 kolom ke arah kiri (negatif) dari sel acuan.
Untuk kasus Total Gaji maka R1C1 nya adalah "=RC[-3]+RC[-2]-RC[-1]"

Penggunaan R1C1
Silahkan edit script Anda pada bagian total gaji dengan metode R1C1 berikut
Hasilnya setelah dijalankan dengan F5
Copyright © Hery Purnama
Halaman 22
MS. Excel Visual Basic for Application (VBA – Macro)
Copyright © Hery Purnama
Halaman 23
MS. Excel Visual Basic for Application (VBA – Macro)
VIII. Variable
Overview
Variable digunakan untuk menampung nilai sementara di memori, bermanfaat untuk
penggunaan data/nilai yang berulang kali diminta, menyederhanakan referensi sebuah
object addressing, memberikan efisiensi penggunaan memori saat mengolah data.
Jenis Variable meliputi (Local Variable, Public Variable, Constant Variable, Object
Variable), Variable pada beberapa kondisi perlu didefinisikan tipe data nya terutama
jika terkait pengolahan data angka dan tanggal. Tipe variable diantaranya (string, int ,
long, single, double, date, range, worksheet, dan lainnya) setiap tipe memiliki ukuran
yang berbeda dalam alokasi memori
 Fase Variable
Tiga fase pembuatan variable yang harus Anda ingat selalu
1) Fase Pendefinisian tipe variable jika dibutuhkan
2) Fase Pengisian Variable di memori (bisa nilai/ object)
3) Fase Distribusikan isi variable (dari memori dijatuhkan ke target object, contoh :
diisikan ke sel di sheet)

Local Variable
Adalah variable yang semua fasenya (definisi, isi, distribusi ) dilakukan didalam prosedur
yang sama dan hanya bisa digunakan juga di prosedur tersebut atau tidak bisa lintas
prosedur, contoh seperti berikut
Copyright © Hery Purnama
Halaman 24
MS. Excel Visual Basic for Application (VBA – Macro)
Setelah F5 tentu saja hasil tidak berbeda dengan sebelumnya, yang membedakan adalah
prosesnya yang lebih efisien karen ditampung dalam variable yang telah terdefinisikan
Manfaat distribusi bisa terlihat saat nilai dari variable tersebut dibutuhkan untuk
dipanggil lagi di kondisi , contoh coba sisipkan Msgbox dibagian akhir (sebelum End
Sub) seperti script berikut
Copyright © Hery Purnama
Halaman 25
MS. Excel Visual Basic for Application (VBA – Macro)
Simbol "&" digunakan untuk concatenate di VBA atau cara menggabungkan data String
dengan data Variable
 Public Variable
Variable jenis ini digunakan apabila nilai/object yang disimpan didalam variable akan
digunakan lintas prosedur / prosedur lain, contoh Pajak PPH yang akan digunakan di
beberapa prosedur, apabila variable PPH didefinisikan sebagai local variable maka
masing masing prosedur akan memiliki variable PPH yang tidak terkait satu sama lain
Copyright © Hery Purnama
Halaman 26
MS. Excel Visual Basic for Application (VBA – Macro)
 Constant Variable
Adalah variable yang nilainya constant/ tetap atau tidak dapat diubah kembali, Anda
akan mempelajarinya saat masuk topik Msgbox nanti
 Object Variable
Adalah variable yang bukan menyimpan value tapi justru menyimpan object juga
beserta valuenya, analogi sederhana seperti sebuah ember yang bukan berisi air tapi
Copyright © Hery Purnama
Halaman 27
MS. Excel Visual Basic for Application (VBA – Macro)
ember yang berisi botol yang didalam botol ada air , variable object biasanya dibuat
untuk menyederhanakan akses terhadap sebuah object yang addressing-nya cukup
panjang dalam penulisan referensinya sebagai contoh misalnya anda ingin mengakses
sebuah nilai dari sel yang ternyata ada di file lain , maka proses pemetaan alamat
referensinya akan terhitung panjang karena mencakup workbook.worksheet.range(...)
Pada kasus ini Anda akan menyederhanakan penulisan object format sel yang berisi
address, silahkan edit script anda seperti berikut
Pengisian Object variable menggunakan "SET", sedangkan Proses distribusi nilai
dilakukan dibagian bawah script seperti berikut
Copyright © Hery Purnama
Halaman 28
MS. Excel Visual Basic for Application (VBA – Macro)
Jalankan kembali dengan F5, hasil tetap sama tentunya dengan sebelumnya, hanya
script anda lebih efisien dalam mereferensikan sebuah object address
Copyright © Hery Purnama
Halaman 29
MS. Excel Visual Basic for Application (VBA – Macro)
IX. Inputbox
Overview
Inputbox adalah salah satu function di VBA yang berguna sebagai media input, tidak
dsarankan sebagai fasilitas entri karena sifatnya yang bergerak maju atau tidak bisa
kembali ke input sebelumnya sampai proses selesai, inputbox cenderung sebagai media
untuk input parameter / criteria seperti pencarian data atau range halaman yang akan di
print

Penggunaan Inputbox
sekalipun tidak disarankan, pada kasus ini kita akan menggunakan inputbox sebagai
media untuk entri data, silahkan ubah script Anda seperti berikut pada bagian fase isi
variable
Copyright © Hery Purnama
Halaman 30
MS. Excel Visual Basic for Application (VBA – Macro)
Jalankan (F5) dan lihat hasilnya, kotak dialog input untuk isi data muncul
Copyright © Hery Purnama
Halaman 31
MS. Excel Visual Basic for Application (VBA – Macro)
X. Conditional If
Overview
Conditional IF digunakan untuk mengambil keputusan dari satu atau beberapa kriteria

Penggunaan Conditional IF
Contoh Pada kasus ini Gaji tidak lagi diisi manual tapi didapatkan dari informasi pada
Jabatan dengan ketentuan :
JIKA Jabatan = "STAFF" , GAJI = 3000000
JIKA Jabatan = "SUPERVISOR" , GAJI = 5000000
JIKA Jabatan = "MANAGER" , GAJI = 7000000
jabatan lainnya , GAJI = 0
Solusinya adalah anda harus melakukan perubahan script pada fase pengisian variable
vargaji (dengan tidak lagi menggunakan inputbox), silahkan edit seperti berikut :
Copyright © Hery Purnama
Halaman 32
MS. Excel Visual Basic for Application (VBA – Macro)
Alternatif lain selain IF anda bisa juga menggunakan "Select Case " , seperti berikut
Copyright © Hery Purnama
Halaman 33
MS. Excel Visual Basic for Application (VBA – Macro)
 UCASE Function
Untuk handling permasalahan case sensitif saat user mengisi jabatan , maka gunakan
UCASE function (Uppercase), kenapa Ucase ? karena anda mengecek kriteria jabatan
dalam IF menggunakan Uppercase (STAFF, SUPERVISOR, MANAGER)
Coba jalankan kembali (F5) dan lihat hasilnya, dimana gaji tidak lagi diisi manual dengan
inputbox tapi telah terisi otomatis
Copyright © Hery Purnama
Halaman 34
MS. Excel Visual Basic for Application (VBA – Macro)
Copyright © Hery Purnama
Halaman 35
MS. Excel Visual Basic for Application (VBA – Macro)
XI. User Defined Function (UDF)
Overview
Anda bisa membuat function sendiri untuk memudahkan anda dalam mengakses dan
menggunakan sebuah proses , perbedaan dengan prosedur adalah function selalu
membalikkan nilai, sedangkan prosedur tidak selalu , karenanya dalam membuat sebuah
function anda akan memerlukan variable INPUT untuk parameter dan variable OUTPUT
untuk menampung nilai balikan/ nilai hasil.
varOutput(varinput1 as type , varinput2 as type) as typeOutput , variable OUTPUT
dalam function sering kita kenali sebagai nama function itu sendiri.
Contoh pada kasus ini adalah ketimbang anda membuat script pencarian gaji yang
mengandung IF berulang kali di beberapa prosedur maka lebih baik Anda membuat
sebuah UDF (function sendiri) yang diletakkan terpisah dan bisa dipanggil di berbagai
prosedur atau area lainnya termasuk di Sheet Anda, lihat contoh berikut
Buat module baru dengan nama mod_function

Pembuatan UDF
Setelah module baru anda, kini Anda bisa mulai membuat function Anda sendiri didalam
module mod_function seperti berikut
Copyright © Hery Purnama
Halaman 36
MS. Excel Visual Basic for Application (VBA – Macro)
Setelah function jadi, anda bisa mencobanya dulu di sheet excel sebelum menyisipkan
function ke dalam Script prosedur Anda
Setelah function yang anda coba di sheet berhasil , sekarang masukkan kedalam script
untuk menggantikan conditional IF yang anda buat sebelumnya untuk mendapatkan
Gaji, silahkan buka kembali mod_object yang berisi prosedur proc_object
Copyright © Hery Purnama
Halaman 37
MS. Excel Visual Basic for Application (VBA – Macro)
Jalankan kembali (F5) dan lihat hasilnya di sheet
Untuk latihan , mungkin anda bisa mencoba membuat function untuk cari total gaji
seperti berikut, buka kembali mod_function
Copyright © Hery Purnama
Halaman 38
MS. Excel Visual Basic for Application (VBA – Macro)
lalu masukkan ke dalam prosedur di mod_object
Copyright © Hery Purnama
Halaman 39
MS. Excel Visual Basic for Application (VBA – Macro)
XII. Msgbox
Overview
Msgbox mirip dengan inputbox yang merupakan object VBA dalam bentuk kotak dialog,
msgbox memiliki beberapa tipe kotak dialog dan setiap tipe kotak dialog memilki
kombinasi tombol tombol , setiap tipe kotak dialog ataupun tombol sebenarnya
memiliki nilai dan ini yang disebut sebagai Constant Variable yaitu variable yang nilainya
tidak bisa diubah.

Penggunaan Msgbox
Dengan adanya constant variable tadi maka setiap tombol yang berisi nilai constant bisa
dikondisikan nilainya menggunakan conditional IF , contoh pada kasus berikut kita akan
membuat kotak dialog yang menanyakan apakah proses pengisian data rekap pegawai
akan diproses atau tidak, jika pilihan tombol OK maka prosedur dijalankan seperti
biasanya, jika cancel maka prosedur dihentikan "EXIT SUB", silahkan sisipkan script anda
seperti berikut :
di bagian atas prosedur (sisipkan script pembuka IF untuk kondisi "OK")
Lalu lanjut di bagian bawah prosedur (sisipkan script Else untuk kondisi "Cancel")
Copyright © Hery Purnama
Halaman 40
MS. Excel Visual Basic for Application (VBA – Macro)
Jalankan (F5) dan perhatikan kotak msgbox yang muncul diawal proses
Copyright © Hery Purnama
Halaman 41
MS. Excel Visual Basic for Application (VBA – Macro)
XIII. Anatomi Script & Project Password
Overview
Topikial Anatomi ini tidak membahas script namun hal non teknis dan tidak baku, pada
umumnya hanya merupakan etika pengelompokan area script yang dipahami para
programmer.

Anatomi script
Pada umumnya ada 4 area teridentifikasi dalam penulisan script di VBA
1) Area Definisi Variable & Error Handling
2) Area Eksekusi program utama
3) Area Exit Program Utama
4) Area Subrutin
Untuk area "exit program" dan area "subrutin" mohon tambahkan dahulu script
berikut dibagian bawah, penjelasan tentang subrutin dan error handling pada topik
berikutnya
Copyright © Hery Purnama
Halaman 42
MS. Excel Visual Basic for Application (VBA – Macro)
Berikut pembagiannya secara menyeluruh
Copyright © Hery Purnama
Halaman 43
MS. Excel Visual Basic for Application (VBA – Macro)
Copyright © Hery Purnama
Halaman 44
MS. Excel Visual Basic for Application (VBA – Macro)
 Project Password
Untuk melindungi script anda maka anda bisa memberikan password pada project VBA
anda seperti berikut
Copyright © Hery Purnama
Halaman 45
MS. Excel Visual Basic for Application (VBA – Macro)
1) Klik kanan VBAProject (topikvba.xlsm) - vbaproject properties
2) Pindah ke tab Protection - [check] Lock project for viewing - isikan password anda
Silahkan simpan dan tutup file topikvba.xlsm tersebut, lalu buka kembali file dan
silahkan coba akses module program vba anda
Copyright © Hery Purnama
Halaman 46
MS. Excel Visual Basic for Application (VBA – Macro)
XIV. Subrutin & Error Handling
Overview
SUBRUTIN adalah program cadangan yang dipanggil program utama hanya jika
diperlukan , biasanya pada kasus penggunaan IF dimana ada alternatif pengambilan
keputusan bercabang, setiap keputusan dibuatkan subrutinnya, manfaat lainnya apabila
program cadangan tersebut dibutuhkan dikondisi lain oleh program utama maka dapat
di gunakan berulang kali.
Sedangkan Error handling dibutuhkan untuk mencegah user masuk ke debug mode saat
terjadi Error, namun selama proses pengembangan sangat disarankan "error handling"
tidak diaktifkan karena nanti anda tidak bisa mendapat petunjuk baris script yang error.
Error handling anda aktifkan jika semua program sudah complete anda test

Penggunaan SUBRUTIN
Seperti yang telah anda buat pada tutor sebelumnya subrutin diletakkan diantara Exit
SUB dan End Sub karena sifatnya yang merupakan program cadangan sehingga tidak
mungkin dimasukkan dalam area "Eksekusi program utama", aturan penulisan subrutin
adalah
nama_label_Subrutin :
prosedur dari subrutin
End
Nantinya memanggil subrutin tersebut dengan perintah Goto nama_label_subrutin
Copyright © Hery Purnama
Halaman 47
MS. Excel Visual Basic for Application (VBA – Macro)
Pada kasus ini dibuat subrutin pesanerror , dimana subrutin ini dijalankan hanya jika
terjadi error
 Penggunaan ERROR HANDLING
Pada subrutin pesanerror yang telah dibuat terdapat baris script resume next artinya
apabila terjadi debug error pada sebuah baris maka baris error tersebut akan dihandling
dengan msgbox "Terjadi error " dan setelahnya baris baris berikutnya tetap akan
dieksekusi.
Namun terkadang Anda menghendaki program tidak lagi menjalankan script apabila
terjadi suatu error pada salah satu baris, maka yang anda lakukan adalah dengan
memberikan exit sub (untuk hentikan keseluruha program) lihat contoh script
Lalu apa yang memicu subrutin error handling ini dijalankan nantinya ?, tentunya anda
harus menambahkan script On Error Goto pesanerror dibagian atas prosedur agar bisa
memantau setiap baris dari awal sampai akhir prosedur
Copyright © Hery Purnama
Halaman 48
MS. Excel Visual Basic for Application (VBA – Macro)
Copyright © Hery Purnama
Halaman 49
MS. Excel Visual Basic for Application (VBA – Macro)
XV. Looping
Overview
Looping diterjemahkan secara gampang adalah printah untuk melakukan kegiatan
perulangan dalam sekelompok data array baik dengan sebuah kondisi atau tanpa
kondisi untuk akhirnya mencapai sebuah target hasil tertentu.
 Jenis Looping
Secara garis besar Looping dibagi atas 2 kelompok besar, yaitu
1) For ...(batas perulangan oleh nilai angka)
2) Do/ While ... (batas perulangan berdasarkan kondisi dan target)
Analoginya jika For (cucilah rambutmu 3x, artinya bersih tidak bersih perulangan cuci
rambut hanya dilakukan 3x) , sedangkan jika do/while (Cucilah rambutmu sampai
bersih, artinya perulangan cuci rambut tidak akan berhenti sampai rambut bersih)
 For .. Next
Pada kasus sederhana ini anda akan memberikan penomoran urut kolom otomatis
dibagian atas tabel rekap
Copyright © Hery Purnama
Halaman 50
MS. Excel Visual Basic for Application (VBA – Macro)
Hasilnya setelah run (F5)

Do... Loop
Untuk kasus ini , Anda perintahkan program untuk "looping" mencari baris yang masih
kosong sebelum proses isi data baru ke dalam sel dilakukan, dengan kata lain jumlah
looping akan ditentukan oleh ditemukannnya sel kosong atau tidak, untuk kasus ini anda
menggunakan "do .. loop until"
Copyright © Hery Purnama
Halaman 51
MS. Excel Visual Basic for Application (VBA – Macro)
 isEmpty function
isEmpty adalah VBA function dengan nilai balikan Boolean (true/false) , digunakan untuk
mengecek nilai kosong sebuah object
Copyright © Hery Purnama
Halaman 52
MS. Excel Visual Basic for Application (VBA – Macro)
XVI. Object Form & Control
Overview
Dari 15 tutorial anda telah mengenal object excel serta object VBA seperti inputbox
serta mengenal juga prosedur umum.
Kini saatnya Anda pelajari Object Form , dimana kini anda mengenal prosedur khusus
(Private sub ) yang sangat terkait kepada object pelakunya serta pemicunya terlebih
dahulu ketimbang menyusun prosedur dan target dari prosedur layaknya di prosedur
umum

Form
Untuk membuat object form , klik kanan module - insert - form dan anda akan melihat
object form tampil dilayar Anda
Yang perlu anda cermati adalah pada object form akan banyak terhubung dengan
penggunaan properties dan toolbox, silahkan ubah properti name dan caption dari
object form seperti pada gambar.
Jika toolbox / properties panel hilang anda dapat menampilkan kembali dari menu View
Copyright © Hery Purnama
Halaman 53
MS. Excel Visual Basic for Application (VBA – Macro)
dalam object form yang paling penting adalah setiap object harus di berikan nama ,
dalam kasus ini anda memberikan nama di property name : frmpegawai, sedangkan
properti caption penggunaannya hanya untuk label/ title saja, untuk properti lainnya
bisa anda ketahui seiring waktu
 Toolbox
Toolbox akan sangat membantu dalam menambahkan object lain ke dalam object form
Anda, anda bisa menampilkan toolbox melalui menu view
Copyright © Hery Purnama
Halaman 54
MS. Excel Visual Basic for Application (VBA – Macro)
 Lable
Object pertama yang anda tambahkan adalah lable, gunakan Toolbox untuk membuat
lable Anda , khusus lable Anda hanya harus mengubah properti caption sedangkan
properti Name tidak perlu karena lable tidak akan Anda programming, buat seperti
berikut
Copyright © Hery Purnama
Halaman 55
MS. Excel Visual Basic for Application (VBA – Macro)
 Textbox
Object ini penting untuk Anda berikan nama, pada kasus ini Anda membuat object
textbox untuk dengan properti name masing masing ( txtnip, txtnama, txtkota, txtdept,
txtgaji, txttunjang, txtpotong, txttotal ) , khusus jabatan anda akan menggunakan
object Combobox
 Enabled = False
sehubungan Gaji dan Total Gaji terisi otomatis , maka textbox haruslah tidak bisa diakses
user, karenanya anda harus mengubah property Enabled = False untuk txtgaji dan
txttotal
Copyright © Hery Purnama
Halaman 56
MS. Excel Visual Basic for Application (VBA – Macro)
 ComboBox
Untuk menampilkan list pada combo bisa dengan manual atau mengambil source dari
range di sheet, silahkan buat dahulu sheet "master" dan buat table dengan nama
"tbjabatan"
Copyright © Hery Purnama
Halaman 57
MS. Excel Visual Basic for Application (VBA – Macro)
Kembali ke object form di VBE , gunakan toolbox untuk membuat object combobox dan
beri nama cbojabatan
Copyright © Hery Purnama
Halaman 58
MS. Excel Visual Basic for Application (VBA – Macro)
masih pada properti combobox, ubah properti rowSource : = tbjabatan, tbjabatan
adalah nama table yang anda buat di sheet master
Untuk melihat hasil sementara klik form dan jalankan (F5)
Copyright © Hery Purnama
Halaman 59
MS. Excel Visual Basic for Application (VBA – Macro)
 Command Button
Selanjutnya anda akan membuat tombol menggunakan object commandButton di
toolbox, silahkan buat dua tombol dengan property name (cmdtambah, cmdtutup)
serta properti caption (Tambah , Tutup) seperti berikut
Copyright © Hery Purnama
Halaman 60
MS. Excel Visual Basic for Application (VBA – Macro)
 TabIndex Property
Ketika anda menjalankan form dan coba mengisi data , perhatikan bahwa combobox
jabatan terlewatkan (loncat) saat perpindahan control , silahkan anda mengatur ulang
urutan tabulasi perpindahan control dengan properti tabIndex , anda bisa menyusun
ulang di setiap object dengan urutan angka anda sendiri
 Text Property
Sangat disarankan untuk object yang berisi angka diberikan default value , caranya yaitu
dengan memberikan properti text = 0 , silahkan ubah Text Properti = 0 untuk object
(txtgaji, txttunjang, txtpotong, txttotal).
Anda bisa juga menggunakan value properti untuk mengisi default value
Copyright © Hery Purnama
Halaman 61
MS. Excel Visual Basic for Application (VBA – Macro)
 Event & Private Sub
Event di cmdtambah
Setelah object dan control didalam form telah anda buat, maka momen yang cukup
penting adalah memberikan Event dan prosedur khusus (private sub), Pada prosedur
khusus anda fokus dulu pada object yang akan jadi pemicu untuk menjalankan prosedur
, contoh jika Anda ingin membuat prosedur untuk memasukkan/ menambahkan data
dari Form ke sheet maka anda harus tahu object apa yang akan menyebabkan prosedur
tambah itu jalan, jawaban logic nya tentu tombol tambah(cmdtambah).
Silahkan double click tombol cmdtambah untuk masuk ke lembar editor VBE , lalu buat
script seperti berikut
Copyright © Hery Purnama
Halaman 62
MS. Excel Visual Basic for Application (VBA – Macro)
Event di cbojabatan
Gaji jika anda ingat tidak diisi manual dan Anda sudah mempersiapkan function carigaji()
sebelumnya, karenanya anda ingin setiap kali combobox cbojabatan dipilih salah satu
listnya maka txtgaji akan terisi otomatis. Untuk itu anda akan menggunakan event
Copyright © Hery Purnama
Halaman 63
MS. Excel Visual Basic for Application (VBA – Macro)
Change di cbojabatan yang menjalankan prosedur untuk isi txtgaji otomatis dengan
memanfaatkan function carigaji(), silahkan double klik cbojabatan dan buat prosedur
khusus dengan event Change seperti berikut
Event di txttunjang , txtpotong
Kenapa object txttunjang dan txtpotong perlu diberikan event ?, jawabannya ada pada
function caritotal() dimana function ini melibatkan tunjangan dan potongan dalam
mencari total gaji , sehingga apabila tidak diberi event maka setiap kali tunjangan atau
potongan diupdate tidak akan merubah hasil , namun jika anda perhatikan
bahwasannya prosedur yang akan diberikan ke txttunjang / txtpotong sebenarnya sama
saja dengan yang ada cbojabatan , karenanya anda tidak perlu mengetikan ulang
prosedur yang ada di cbojabatan cukup memanggilnya saja dengan call
silahkan double click txttunjang / txtpotong, lalu ganti dengan event afterupdate dan
sisipkan perintah call berikut
Event di cmdtutup
Untuk tombol Tutup (cmdtutup) berikan prosedur dengan event click (silahkan double
click cmdtutup) , berikan script seperti berikut dalam prosedurnya
Copyright © Hery Purnama
Halaman 64
MS. Excel Visual Basic for Application (VBA – Macro)
Copyright © Hery Purnama
Halaman 65
MS. Excel Visual Basic for Application (VBA – Macro)
XVII. Run Macro from Excel
Overview
Untuk membuka form ataupun menjalankan prosedur yang sudah anda buat dari Excel
sheet tentu anda membutuhkan media berupa object button yang ada di Excel Sheet,
silahkan kembali ke Excel Sheet "REKAP" lalu dari tab Developer - Insert - Buttom (Form
Control), letakkan button di area sheet
 Menambahkan Control Button Form di Sheet
Selanjutnya kembali ke area VBE dan buka mod_object buat prosedur baru
proc_bukaform() seperti berikut
Copyright © Hery Purnama
Halaman 66
MS. Excel Visual Basic for Application (VBA – Macro)
Kembali lagi ke Excel Sheet "Rekap" , klik kanan button - Assign Macro - Pilih macro
"proc_bukaform"
Demikian kiranya materi Excel VBA Macro, semoga bermanfaat
Pengarang / Penulis
Hery Purnama
Certified IT Trainer
www.inhousetrainer.net
Copyright © Hery Purnama
Halaman 67
Download