Anda di halaman 1dari 35

VBA TRAINING

To Build An Operational, Automatic,


Flexible, & Aesthetic Distribution Model

Bagian Pertama :
Understanding the Basics
Bagian Kedua :

Diving Deeper into VBA


Bagian Ketiga :

Solving Cases Studies

Laboratory of Logistics and Supply Chain Management


Department of Industrial Engineering
Institut Teknologi Sepuluh Nopember
To Build An Operational, Automatic, Flexible, & Aesthetic Distribution Model

Bagian Pertama :
Understanding the Basics

1. Perkenalan VBA

Apa itu VBA? VBA, singkatan dari Visual Basic for


Application, merupakan bahasa pemrograman yang
dikembangkan oleh Microsoft untuk melakukan otomasi
proses pada aplikasi-aplikasi yang mendukungnya, seperti
Excel, PowerPoint, Word, dan lain sebagainya. VBA
merupakan bentuk penerapan End-User Computing
(EUC) yang memungkinkan pengguna melakukan
berbagai pekerjaan yang tidak dapat dilakukan secara
manual, atau mempermudah user melakukan pekerjaan
kompleks.

Meski pada kenyataannya VBA dapat diterapkan


pada berbagai software, khususnya bawaan Microsoft
Office, namun pada modul-modul ini akan dibahas
penerapan VBA pada Microsoft Excel.

Tujuannya penggunaan VBA antara lain:

a. Mengotomasikan proses yang sering dilakukan


(recurring task)
b. Mengotomasikan proses yang dilakukan
secara berulang-ulang (repetitive task)
c. Mengotomasikan berjalannya proses jika suatu
kondisi terpenuhi (event programming)
VBA Training ~ Logistics and Supply Chain Management (LSCM) Laboratory 1
To Build An Operational, Automatic, Flexible, & Aesthetic Distribution Model

d. Membuat formula khusus sendiri (User-Defined


Functions, UDF)
e. Membuat tampilan worksheet lebih menarik
atau mudah dioperasikan (Look-and-Feel
Improvisation)
f. Mengontrol jalannya proses pada aplikasi
lainnya

2. Perkenalan Macro

Untuk kepentingan penyelesaian kasus nantinya,


secara sederhana VBA dapat diartikan sebagai bahasa
pemrograman di Excel. Dulunya, semua bahasa
pemrograman yang diterapkan di spreadsheet dan word
processor yang bertujuan untuk mengotomasikan proses-
proses umum disebut bahasa macro. Agar lebih
sederhana, Macro dapat diartikan sebagai serentetan
perintah VBA yang dapat dibuat dan dijalankan secara
otomatis.

VBA akan mulai kita kenali dengan pendekatan


Macro. Selain lebih sederhana, Macro memungkinkan kita
men-generate kode-kode VBA dengan melakukan
operasi spreadsheet sederhana menggunakan fasilitas
Recording. Namun sebelum melakukan ini, menu
Developer perlu dimunculkan agar dapat melakukan
rekayasa VBA.

Pada Excel 2003, menu VBA berada di toolbar Visual


Basic. Secara default, menu ini tidak dimunculkan. Untuk
memunculkannya, centang menu Visual Basic dengan

VBA Training ~ Logistics and Supply Chain Management (LSCM) Laboratory 2


To Build An Operational, Automatic, Flexible, & Aesthetic Distribution Model

memilih menu View > Toolbars > Visual Basic


sebagaimana ditunjukkan pada Gambar 1.

Gambar 1 Cara Memunculkan Menu Visual Basic pada Excel 2003

Tampilan toolbar Visual Basic seperti berikut.

Gambar 2 Tampilan Menu Visual Basic

Pada Excel 2007, toolbar digantikan oleh ribbon


sehingga menu Visual Basic ditempatkan pada tab
Developer. Untuk memunculkannya, klik icon Office di
sebelah kiri atas, kemudian pilih Excel Options.

VBA Training ~ Logistics and Supply Chain Management (LSCM) Laboratory 3


To Build An Operational, Automatic, Flexible, & Aesthetic Distribution Model

Gambar 3 Untuk Memunculkan Tab Developer, Buka Menu Excel Options

Selanjutnya, pada kotak dialog Excel Options, pilih


menu Popular di sebelah kanan atas untuk menampilkan
item-item popular. Centang pilihan Show Developer tab
in the Ribbon yang berada di sebelah kanan atas.

Gambar 4 Centang Menu Show Developer tab in the Ribbon

VBA Training ~ Logistics and Supply Chain Management (LSCM) Laboratory 4


To Build An Operational, Automatic, Flexible, & Aesthetic Distribution Model

Pada Excel 2010, menu Options berada di bawah


menu File. Sehingga, untuk membuka kotak dialog Excel
Option, klik File > Options seperti berikut.

Gambar 5 Cara Mengakses Menu Options pada Excel 2010

Kemudian, di menu sebelah kiri, pilih Customize Ribbon.


Selanjutnya, centang menu Developer ya ng berada di
sebelah kanan. Tampilan Excel Options pada Excel 2010
adalah sebagai berikut.

VBA Training ~ Logistics and Supply Chain Management (LSCM) Laboratory 5


To Build An Operational, Automatic, Flexible, & Aesthetic Distribution Model

Gambar 6 Tampilan Kotak Dialog Excel Options pada Excel 2010,


Centang Developer pada Checklist Sebelah Kanan

Tampilan tab Developer pada Excel 2007 dan Excel


2010 setelah dimunculkan adalah sebagai berikut.

Gambar 7 Tampilan Tab Developer

Setelah memunculkan menu developer, salah satu


rekayasa Macro yang sangat sederhana, namun
seringkali sangat berguna, adalah merekam Macro/
Macro Recording . Macro yang telah direkam dapat
dipanggil kembali sehingga seluruh pekerjaan yang
direkam dapat diulangi, hanya dengan sekali klik. Hal ini
tentu saja sangat berguna, apalagi jika kita sering

VBA Training ~ Logistics and Supply Chain Management (LSCM) Laboratory 6


To Build An Operational, Automatic, Flexible, & Aesthetic Distribution Model

melakukan pekerjaan yang berulang (repetitive task).


Fasilitas Macro Recorder ini dapat diakses pada tab
Developer. Untuk dapat merekam Macro, pertama-tama
aktifkan fasilitas Record Macro. Pada Excel 2003, Record
Macro dapat diaktifkan dengan mengklik tombol Record
Macro pada toolbar Visual Basic.

Gambar 8 Tombol Record Macro pada Excel 2003

Pada Excel 2007 ke atas, hal ini dapat dilakukan


dengan mengklik tombol Record Macro pada tab
Developer.

Gambar 9 Tombol Record Macro berada di tab Developer

Setelah aktif, lakukan proses yang ingin direkam.


Misalnya mengetik, mengubah format, mem-paste nilai
dari satu sheet ke yang lain, menghapus kolom/baris, dan
lain sebagainya. Setelah selesai, hentikan proses rekaman
dengan mengklik tombol Stop Recording. Terdapat
beberapa cara untuk menjalankan Macro yang telah
VBA Training ~ Logistics and Supply Chain Management (LSCM) Laboratory 7
To Build An Operational, Automatic, Flexible, & Aesthetic Distribution Model

direkam. Pada Excel 2003, klik tombol Play atau Run pada
toolbar Visual Basic.

Gambar 10 Tombol Run Macro pada Excel 2003

Pada Excel 2007 ke atas, klik Macros. Setelah itu pilih


Macro yang ingin dijalankan, lalu klik Run.

Gambar 11 Pilih Macro pada tab Developer

Gambar 12 Pilih Macro yang Ingin Dijalankan, Lalu Klik Run

Latihan Bersama!

Misalkan Anda sebagai data analist tiap hari diberikan


worksheet dengan format sebagai berikut dengan data
yang berbeda tiap harinya oleh petugas lapangan.
VBA Training ~ Logistics and Supply Chain Management (LSCM) Laboratory 8
To Build An Operational, Automatic, Flexible, & Aesthetic Distribution Model

Gambar 13 Contoh Data Harian dari Petugas Lapangan

Pimpinan meminta Anda untuk melakukan sorting


Ascending berdasarkan Region, kemudian Item,
kemudian Count. Anda juga diminta untuk menukar
kolom Region dan kolom Item sehingga kolom Region
berada di kolom A dan Item berada di B. Agar angkanya
mudah dibaca, angka di kolom Count diberi pemisah
titik/koma ribuan. Terakhir, header Item, Region, dan
Count harus ditebalkan (bold). Contoh tabel yang
diinginkan Pimpinan Anda adalah sebagai berikut.

Gambar 14 Hasil yang Diharapkan Pimpinan Tiap Hari

Gunakan fasilitas Record Macro untuk mengolah 10


worksheet pada file !Latihan Record Macro.xlsx!

VBA Training ~ Logistics and Supply Chain Management (LSCM) Laboratory 9


To Build An Operational, Automatic, Flexible, & Aesthetic Distribution Model

3. Perkenalan VBE

Kebanyakan orang menggunakan Excel dengan


bekerja di worksheet, menggunakan rumus, operasi
matematika, chart, Pivot Table, Solver, Data Analysis, dan
fasilitas tambahan lainnya untuk menyelesaikan berbagai
permasalahan. Dengan fasilitas-fasilitas tersebut, sudah
sangat banyak hal yang dapat dilakukan. Namun, ada
satu bagian yang jarang diakses oleh kebanyakan orang,
yaitu Visual Basic Editor.

Berbeda dengan fasilitas-fasilitas tersebut, Visual Basic


Editor (VBE) merupakan fasilitas behind the scene yang
memungkinkan pengguna menuliskan dan menerapkan
perintah-perintah terprogram untuk melakukan berbagai
hal di worksheet.

VBE merupakan tempat dimana kode-kode VBA


dituliskan atau degenerate menggunakan Macro. Tiap
Macro yagn dibuat, akan menghasilkan serangkaian
kode VBA yang disimpan di modul. Modul ini dapat
dibuka melalui VBE. Terdapat beberapa cara untuk
mengakses VBE. Pada Excel 2003, VBE dapat diakses
dengan mengklik tombol Visual Basic Editor pada toolbar
Visual Basic. Pada Excel 2007 ke atas, hal ini dapat
dilakukan dengan mengklik tombol Visual Basic yang
berada pada paling kiri atas di ribbon Developer.

VBA Training ~ Logistics and Supply Chain Management (LSCM) Laboratory 10


To Build An Operational, Automatic, Flexible, & Aesthetic Distribution Model

Gambar 15 Pada Excel 2003, VBE dapat Diakses dengan Mengklik


Tombol Visual Basic Editor pada Toolbar Visual Basic

Gambar 16 Pada Excel 2007, VBE Dibuka dengan Mengklik Tombol


Visual Basic di Tab Developer

Cara lain untuk membuka jendela VBE adalah


menggunakan shortcut Alt + F11. Tampilan jendela VBE
adalah sebagai berikut.

VBA Training ~ Logistics and Supply Chain Management (LSCM) Laboratory 11


To Build An Operational, Automatic, Flexible, & Aesthetic Distribution Model

Gambar 17 Tampilan VBE

Beberapa bagian utama dari jendela VBE adalah:

1. Project Explorer Window

Jendela ini bekerja seperti Windows Explorer,


digunakan untuk menentukan kode VBA mana
yang ingin dibuka. Kode VBA disimpan dalam
module. Terdapat beberapa jenis module
seperti standard module (Macro), UserForm
(Form), Class (Object Creation), Worksheet, dan
Workbook.

2. Code Window

Jendela ini berfungsi untuk menampilkan dan


mengedit kode-kode VBA.

VBA Training ~ Logistics and Supply Chain Management (LSCM) Laboratory 12


To Build An Operational, Automatic, Flexible, & Aesthetic Distribution Model

3. Properties Window

Jendela ini menampilkan properties berikut nilai


dari objek yang sedang terpilih di jendela
Project Explorer.

4. Immediate Window

Jendela ini merupakan bagian dari VBE untuk


memasukkan kode yang ingin dieksekusi
langsung (immediately).

4. Penggunaan VBE

Untuk memulai menggunakan VBE, kita dapat melihat


kembali kode VBa yang di-generate ketika merekam
Macro pada tugas latihan sebelumnya. Pada contoh ini,
Macro sebelumnya disimpan dengan nama mySort. Untuk
melihat kodena, klik View Code pada Module1 di jendela
Project Explorer pada VBE.

Gambar 18 Untuk Melihat Kode Macro, Buka Module yang Ada

VBA Training ~ Logistics and Supply Chain Management (LSCM) Laboratory 13


To Build An Operational, Automatic, Flexible, & Aesthetic Distribution Model

Kode-kode VBA yang tersimpan dalam Module1


sebagai berikut.

Gambar 19 Isi Kode Macro mySort

Karena kode yang ada di-generate menggunakan


Macro, maka dimulai dengan Sub (singkatan dari
Subroutine) diikuti dengan nama Macro dan diakhiri
dengan satu set tanda kurung. Setelah itu, terdapat
beberapa baris komentar (comment line) yang juga di-
generate secara otomatis. Perlu diperhatikan bahwa baris
komentar dimulai dengan tanda petik satu (‘) dan akan
berwarna hijau di jendela VBE. Adanya tanda ini
menandakan bahwa baris berisi komentar dan tidak
dianggap sebagai perintah oleh VBA. Baris komentar
yang di-generate berisi nama Macro, deskripsi, dan
shortcut yang di-assign untuk menjalankan Macro
tersebut.

Latihan Bersama!

Coba sederhanakan kode VBA tersebut. Tambahkan


baris komentar jika diperlukan!

VBA Training ~ Logistics and Supply Chain Management (LSCM) Laboratory 14


To Build An Operational, Automatic, Flexible, & Aesthetic Distribution Model

5. Variabel, Jenis Data, Array, dan Operator

VBA menyimpan data dalam variabel. Variabel


merupakan data yang disimpan menggunakan suatu
nama yang disimpan dalam memori computer sehingga
dapat dipanggil atau bahkan diubah sewaktu-waktu jika
dibutuhkan. Pada VBA, dan beberapa jenis compiler lain,
variabel harus jelas jenis datanya, artinya data yang akan
disimpan dalam variabel tersebut harus disebutkan ketika
variabel tersebut diperkenalkan. Proses ini disebut
deklarasi variabel.

Proses deklarasi variabel dilakukan dengan


menggukanan pernyataan Dim (singkatan dari
Dimension) dengan contoh sintaks

Dim nama_variable as Integer

Potongan kode tersebut berarti user memperkenalkan


variabel nama_variabel ke sistem yang kemudian akan
diisi dengan data bilangan bulat (integer). Beberapa jenis
data yang dikenali oleh VBA antara lain:

1. Integer
Adalah jenis data numeric berupa bilangan
bulat ( tanpa pecahan ) mulai dari 32768 –
32767.

2. Byte
Adalah jenis data yang berupa bilangan bulat
positif.

VBA Training ~ Logistics and Supply Chain Management (LSCM) Laboratory 15


To Build An Operational, Automatic, Flexible, & Aesthetic Distribution Model

3. Decimal
Adalah jenis data yang digunakan untuk
menyimpan nilai desimal.

4. Bolean
Adalah jenis data yang hanya memiliki dua
buah nilai yaitu true dan false. Jenis data ini
bisa digunakan untuk memilih salah satu
diantara dua pilihan.

5. String
Adalah jenis data yang memiliki nilai alfa
numeric, yaitu nilai yang bisa angka atau
karakter khusus.

6. Single
Adalah jenis data numeric yang memiliki
kisaran nilai mulai dari 3408e + 38 hingga
3402823. Jenis data ini sering disebut juga Single
Precisian atau bilangan berpresisi tunggal.

7. Double
Adalah jenis data numeric yang memiliki
kisaran nilai yang besar , jenis data ini juga
sering disebut double precisian atau bilangan
berpresisi ganda.

8. Date
Adalah jenis data yang digunakan untuk
menyimpan tanggal dan jam.

VBA Training ~ Logistics and Supply Chain Management (LSCM) Laboratory 16


To Build An Operational, Automatic, Flexible, & Aesthetic Distribution Model

9. Curency
Adalah jenis data yang digunakan untuk
menyimpan nilai uang.

10. Long
Adalah jenis data numeric yang hampir sama
dengan integer tetapi nilainya jauh lebih besar,
jenis data ini membutuhkan memori yang
cukup besar.

11. Object
Adalah jenis data yang menyimpan objek
seperti form, control dan sebagainya.

12. Variant
Adalah jenis data yang berisi segala macam
data yang berbeda biasanya digunakan untuk
mengetahui jenis data yang digunakan.

Dalam pengoperasiannya, terkadang kita mem-


butuhkan variabel yang isinya tidak hanya satu data
namun beberapa data. Variabel semacam ini disebut
array. Array merupakan variabel matrix yang dapat
menyimpan lebih dari satu data. Proses deklarasi array
seperti deklarasi variabel sebelumnya, namun ditam-
bahkan dimensi array yang diinginkan. Perlu diketahui
juga bahwa array secara default menggunakan basis 0.
Contoh:

„Membuat matriks data ukuran 1 x 201


Dim mahasiswa(200) As String

VBA Training ~ Logistics and Supply Chain Management (LSCM) Laboratory 17


To Build An Operational, Automatic, Flexible, & Aesthetic Distribution Model

„Membuat matriks data ukuran 5 x 201


Dim kelas (4, 200) As String

mahasiswa (0) = “Adam”


mahasiswa (100) = “Andi”
kelas(0,0) = “Andi”

Agar variabel yang telah dideklarasikan dapat


digunakan untuk melakukan berbagai operasi, perlu
dikenali beberapa operator dalam VBA. Berikut ini adalah
jenis–jenis operator yang biasa digunakan.

1. Operator Penugasan

Operator ini berfungsi untuk memasukan data ke


dalam variable. Operator ini dilambangkan dengan
tanda ( = ). Contoh :

Nilai = 1
Akhir = awal + waktu
Nama = “Ujang Kurnia“
Luas = panjang * lebar

Ada beberapa ketentuan yang harus diperhatikan


dalam menggunakan operator penugasan yang
berkaitan dengan tipe data yang akan dimasukkan
dalam variable. Ketentuan tersebut adalah penggunaan
delimiter untuk data tersebut yaitu:

a. Untuk tipe data yang bersifat numeric atau


menunjuk pada nilai variable lain maka, tidak
diperlukan delimiter. Misalnya nilai = 1,
akhir = awal + waktu.

VBA Training ~ Logistics and Supply Chain Management (LSCM) Laboratory 18


To Build An Operational, Automatic, Flexible, & Aesthetic Distribution Model

b. Untuk tipe data yang string digunakan tanda


kutip ( “ ) misalnya nama = “ Ujang Kurnia“.

c. Untuk tipe data yang berupa tanggal dan


waktu digunakan tanda ( # ) misalnya:
tanggal = # januari 17, 2008 # jam = #
8:10:05.

2. Operator Aritmatika

Operator ini adalah operator yang digunakan untuk


pengolahan data secara matematis, sehingga fungsi –
fungsinya pun sama dengan penggunaan dalam ilmu
matematika.

Jika ada operator sekaligus dalam suatu operasi


aritmatika, maka prioritas pengerjaannya di sesuaikan
dengan konvensi yang ada dalam matematika misalnya
pemangkatan di jalankan pertama kali, kemudian
mengikuti perkalian dan pembagian lalu penambahan
dan pengurangan.

Contoh :
6 + 3 * - 2 ^ 3 / 2

VBA Training ~ Logistics and Supply Chain Management (LSCM) Laboratory 19


To Build An Operational, Automatic, Flexible, & Aesthetic Distribution Model

Yang dikerjakan pertama kali adalah 2^3=8 kemudian


3*7=21 dan 8/2=4, lalu 6+21=27 dan 27-4=23. Jika anda
menginginkan prioritas yang dikerjakan operasi tertentu,
maka digunakan tanda ( ) contoh (6+3)*7,yang di
kerjakan pertama kali bukan 3*7 tetapi 6+3.

Untuk operasi pembagian ada tiga operator yaitu : /,


\, mod. Beda dari ke tiga operator tersebut dapat
dijelaskan sebagai berikut. Pembagian dengan operator (
/ ) adalah pembagian biasa. Pembagian dengan
operator ( \ ) hanya akan mengambil nilai integer dari
hasil pembagian. Contoh:

13/4= „menghasilkan 3.25


13\4= „menghasilkan 3
13 mod 4= „menghasilkan 1

3. Operator Perbandingan

Digunakan untuk membandingkan suatu data


(ekspresi) dengan data ekspresi lain dan menghasilkan
nilai logika (boolean) benar atau salah. Syaratnya adalah
dua data yang dibandingkan harus mempunyai tipe
yang sama. Berikut beberapa operator perbandingan
yang sering digunakan.

VBA Training ~ Logistics and Supply Chain Management (LSCM) Laboratory 20


To Build An Operational, Automatic, Flexible, & Aesthetic Distribution Model

Contoh:

Dim angka1, angka2 as Integer


angka1 = 5
angka2 = 3
angka1 >= angka2 „bernilai TRUE
angka1 < angka2 „bernilai FALSE
angka1 <> angka2 „bernilai TRUE

4. Operator Logika

Terdapat beberapa operator logika yang sering


digunakan yaitu AND, OR, dan NOT. Operator ini
digunakan untuk membandingkan atau
menggabungkan dua atau lebih pernyataan. Hasil dari
operator ini adalah nilai benar atau salah.

angka1 > 3 AND angka2 > 3 „bernilai FALSE


angka1 > 3 OR angka2 > 3 „bernilai TRUE

Operator Not dapat digunakan untuk mengganti


properties dari suatu objek. Operator ini bekerja seperti
tanda – pada formula sel, yaitu mengganti nilai TRUE
VBA Training ~ Logistics and Supply Chain Management (LSCM) Laboratory 21
To Build An Operational, Automatic, Flexible, & Aesthetic Distribution Model

menjadi FALSE dan nilai FALSE menjadi TRUE. Contoh untuk


mengubah status lock atau tidaknya sel A1 di Excel, kode
VBA berikut dapat dijalankan.

Range(“A1”).Font.Bold = Not Range(“A1”).Font.Bold

VBA Training ~ Logistics and Supply Chain Management (LSCM) Laboratory 22


To Build An Operational, Automatic, Flexible, & Aesthetic Distribution Model

Bagian Kedua :
Diving Deeper into VBA

6. Pembuatan Keputusan dengan VBA

Salah satu komponen dasar pemrograman adalah


pengambilan keputusan. Seringkali, kode hanya perlu
dieksekusi jika sekumpulan syarat terpenuhi. Oleh karena
itu, terdapat percabangan keputusan (branching), kode
dieksekusi atau tidak. Proses ini dapat dilakukan dengan
menggunakan beberapa sintaks yaitu If…Then,
If…Then…ElseIf, dan Select Case.

If… Then digunakan jika hanya terdapat dua pilihan


keputusan, eksekusi kode atau tidak. Struktur sintaksnya
secara umum sebagai berikut.

If condition Then
statement
End If

Jika sintaks yang diperlukan pendek sehingga dapat


ditulis dalam satu baris, maka sintaks di atas dapat
disederhankan menjadi

If condition Then statement

Jika terdapat kode yang harus dieksekusi jika kondisi


tidak terpenuhi, maka sintaksnya menjadi
VBA Training ~ Logistics and Supply Chain Management (LSCM) Laboratory 23
To Build An Operational, Automatic, Flexible, & Aesthetic Distribution Model

If condition Then
Statement if true
Else
Statement if false
End If

Selanjutnya, jika terdapat beberapa jenis kondisi dank


ode yang dieksekusi ditentukan berdasarkan kondisi yang
dipenuhi, maka dapat digunakan struktur If…Then…ElseIf.
Sintaks umumnya sebagai berikut.

If condition1 Then
Statement if condition1 is true
ElseIf condition2 Then
Statement if condition2 is true
ElseIf condition3 Then
Statement if condition3 is true
Else
Statement if all conditions are false
End If

Cara lain untuk melakukan percabangan dengan


berbagai kondisi adalah menggunakan struktur Select
Case. Sintaks umumnya sebagai berikut.

Select Case condition


Case lowerbound1 To upperbound1
Statement if condition = case1
Case lowerbound2 To upperbound2
Statement if condition = case2
End Select

7. Perulangan Prosedur dengan Loop

VBA Training ~ Logistics and Supply Chain Management (LSCM) Laboratory 24


To Build An Operational, Automatic, Flexible, & Aesthetic Distribution Model

Selain percabangan, perulangan (looping) merupakan


salah satu elemen dasar dari pemrograman. Perulangan
merupakan mekanisme mengulang perintah sejumlah
sekian kali atau selama suatu kondisi masih terpenuhi.
Perulangan berdasarkan kondisi dapat dilakukan dengan
Do…Loop atau While…Wend. Jenis dan sintaks umumnya
ditunjukkan sebagai berikut.

„Check dulu baru loop


„Lakukan selama condition terpenuhi
Do While condition
statement
Loop

‘Lakukan dulu baru check


„Lakukan selama condition terpenuhi
Do
statement
Loop While condition

‘Check dulu baru loop


„Lakukan sampai condition terpenuhi
Do Until condition
s tatement
Loop

‘Check dulu baru loop


„Lakukan selama condition terpenuhi
While condition
s tatement
Wend

Perulangan hingga sejumlah kali dapat dilakukan


dengan menggunakan For…Next. Sintaksnya umumnya
sebagai berikut.

VBA Training ~ Logistics and Supply Chain Management (LSCM) Laboratory 25


To Build An Operational, Automatic, Flexible, & Aesthetic Distribution Model

For counter = start To end


statement
Next counter

Terkadang, perulangan dilakukan sejumlah suatu


koleksi obyek. Untuk itu, dapat digunakan sintaks
For…Each…Next. Sintaks umumnya sebagai berikut.

For Each object In collections


statement
Next object

Selain itu, kadang suatu perulangan perlu dihentikan


jika suatu kondisi sudah terpenuhi. Untuk itu, digunakan
perintah Exit Do atau Exit For. Contohnya adalah sebagai
berikut.

„Declare your object variable.


Dim wb As Workbook
For Each wb In Workbooks
„Command(s) to be executed.
If wb.Name = “Test.xlsx” Then
wb.Save
wb.Close
„Exit For statement to avoid needless iterations
„if the condition is met.
Exit For
End If
„Loop to the next iteration.
Next wb

VBA Training ~ Logistics and Supply Chain Management (LSCM) Laboratory 26


To Build An Operational, Automatic, Flexible, & Aesthetic Distribution Model

8. Fungsi dan Prosedur

Fungsi adalah rumus yang mengolah argumen dan


mengembalikan hasilnya sebagai output. Sintaks fungsi
secara umum adalah sebagai berikut.

Function namafungsi (argumen1, argumen2, ...)


statement
namafungsi = hasil fungsi
End Function

Contoh aplikasinya adalah sebagai berikut.

Function akar (A,B,C)


If A <> 0 Then
diskrim = B^2 – 4*A*C
If diskrim > 0 Then
akar = “dua akar riel”
Else if diskrim = 0 Then
Akar = “akar imaginer”
End if
Else
akar = “bukan persamaaan kuadrat”
End If
End Function

Prosedur adalah unit program dalam VBA yang


merupakan blok kode dalam satu module. Struktur umum
sebuah prosedur adalah sebagai berikut.

Sub namaprosedur( argumen1, argumen2,... )


statement
End Sub

VBA Training ~ Logistics and Supply Chain Management (LSCM) Laboratory 27


To Build An Operational, Automatic, Flexible, & Aesthetic Distribution Model

Contoh sebuah prosedur ditunjukkan sebagai berikut.

Sub CloseOneWorkbookFaster()
„Declare your object variable.
Dim wb As Workbook
For Each wb In Workbooks
„Command(s) to be executed.
If wb.Name = “Test.xlsx” Then
wb.Save
wb.Close
„Exit For statement to avoid needless iterations
„if the condition is met.
Exit For
End If
„Loop to the next iteration.
Next wb
End Sub

9. Optimasi dengan Solver

Seringkali VBA diintegrasikan dengan Solver untuk


menyelesaikan suatu kasus optimasi. Dalam hal ini, VBA
digunakan untuk menyiapkan input yang akan digunakan
sebagai parameter pada Solver, kemudian solusinya akan
dihasilkan oleh Solver sendiri. Pada modul ini teknis
penggunaan Solver tidak akan dijelaskan secara
terperinci karena peserta dianggap telah memiliki
pemahaman yang cukup untuk menggunakannya. Fokus
sub bab ini adalah menggabungkan Solver dengan VBA.
Salah satu cara yang paling sederhana adalah dengan
menggunakan fasilitas Record Macro (seperti yang telah
dijelaskan sebelumnya). Contoh kode yang di-generate
adalah sebagai berikut.

„Mendefinisikan fungsi tujuan dan kasus maks/min


VBA Training ~ Logistics and Supply Chain Management (LSCM) Laboratory 28
To Build An Operational, Automatic, Flexible, & Aesthetic Distribution Model

SolverOk SetCell:="$E$4", MaxMinVal:=2,


ValueOf:="0", ByChange:="$D$6:$K$6"

„Menambahkan konstrain
SolverAdd CellRef:="$L$9:$L$16", Relation:=3,
FormulaText:="$M$9:$M$16"

„Menambahkan konstrain binary


SolverAdd CellRef:="$D$6:$K$6", Relation:=5,
FormulaText:="binary"

„Menyelesaikan kasus optimasi


SolverSolve

Agar kode VBA di atas dapat dijalankan, library Solver


harus di-load terlebih dahulu agar Excel mengenali
perintah Solver karena secara default, library Solver tidak
di-load. Namun, agar library Solver dapat dimuat, maka
terlebih dahulu AddIns Solver harus diinstal. Setelah
menginstal Solver, baru library-nya dapat dimuat. Cara
menambahkan library Solver (dan reference lainnya)
pada Excel 2007 ke atas adalah dengan membuka menu
Options pada jendela VBE dan memilih menu References
selanjutnya mencentang Solver pada daftar pilihan
Available References yang tersedia.

Gambar 20 Load Library Solver Dilakukan melalui Tools > References

VBA Training ~ Logistics and Supply Chain Management (LSCM) Laboratory 29


To Build An Operational, Automatic, Flexible, & Aesthetic Distribution Model

Gambar 21 Centang Library Solver untuk Agar Sintaks Solver Dikenali

10.Fungsi umum yang Sering Digunakan

Dalam mengolah data, seringkali digunakan


beberapa fungsi atau rumus umum. fungsi umum ini
dapat dikelompokkan ke dalam dua kategori yaitu fungsi
matematika dan fungsi worksheet.

fungsi matematika merupakan sekumpulan fungsi


matematika yang digunakan untuk mengolah angka.
Rumus ini dapat diakses dengan sintaks umum sebagai
berikut.

math.fungsi

VBA Training ~ Logistics and Supply Chain Management (LSCM) Laboratory 30


To Build An Operational, Automatic, Flexible, & Aesthetic Distribution Model

Gambar 22 Sintaks Umum Fungsi Matematika

Beberapa fungsi umum yang sering dipakai adalah


sebagai berikut.

Abs Function : fungsi mutlak

Dim MyNumber
MyNumber = Abs(50.3) ' Returns 50.3
MyNumber = Abs(-50.3) ' Returns 50.3

Fix & Int Function : fungsi integer

Dim MyNumber
MyNumber = Int(99.8) ' Returns 99
MyNumber = Fix(99.2) ' Returns 99

MyNumber = Int(-99.8) ' Returns -100


MyNumber = Fix(-99.8) ' Returns -99

MyNumber = Int(-99.2) ' Returns -100


MyNumber = Fix(-99.2) ' Returns -99

Rnd Function : fungsi untuk me-random data

Sqr Function : fungsi akar

Beberapa fungsi matematika lain yang sering


digunakan antara lain Sgn Function, Sin Function, Tan
Function, Atn Function, Cos Function, Exp Function, Log
Function, dan lain-lain.

VBA Training ~ Logistics and Supply Chain Management (LSCM) Laboratory 31


To Build An Operational, Automatic, Flexible, & Aesthetic Distribution Model

Selain fungsi matematika, VBA juga dapat


menggunakan fungsi worksheet lainnya. Sintaks umum
untuk memanggil fungsi worksheet adalah sebagai
berikut.

worksheetfunction.fungsi

Gambar 23 Sintaks Umum Fungsi Worksheet

Beberapa fungsi worksheet yang cukup sering digunakan


antara lain sebagai berikut.

VLookup Function

VLookup(Arg1, Arg2, Arg3, Arg4) =


VLookup(lookup value, table array, col_index_number,
TRUE?FALSE)

Sum Function

Sum(Arg1, Arg2, Arg3,…) = Sum(Value, Value, Value,…)

SumSq Function

SumSq(Arg1, Arg2, Arg3,…) = SumSq(Value, Value,


Value,…)

SumProduct Function

SumProduct(Arg1, Arg2, Arg3,…) = SumProduct (Value,


Value, Value,…)

Small Function
VBA Training ~ Logistics and Supply Chain Management (LSCM) Laboratory 32
To Build An Operational, Automatic, Flexible, & Aesthetic Distribution Model

Small(Arg1, Arg2) = Small(array, k position from the


smallest)

Round Function

Round (Arg1, Arg2) = Round (real number, num_digit)


RoundUp (Arg1, Arg2) = RoundUp (real number,
num_digit)
RoundDown (Arg1, Arg2) = RoundDown (real number,
num_digit)

VBA Training ~ Logistics and Supply Chain Management (LSCM) Laboratory 33