programming excel
Click here to load reader
-
Upload
bagus-anggoro -
Category
Documents
-
view
188 -
download
35
description
Transcript of programming excel
training___________________________________________________________
ProgrammingProgramming in in
MicrosoftMicrosoft
ExcelExcel 20002000
Penyusun : Achmad Affandi ( 0044-30-0902 )
1
Programming in Microsoft Excel 2000
Production Engineering Department
PT. Semarang Autocomp Manufacturing
Indonesia
Semarang
2005
Daftar Isi
Modul 1 : Formula dan Function........................................................................................................3
Formula (rumus)........................................................................................................................3
Penyusunan Formula di dalam Excel..................................................................................3
Operator perhitungan........................................................................................................4
Urutan proses perhitungan................................................................................................4
Array Formula....................................................................................................................5
Cell/Range References...............................................................................................................6
Kenapa menggunakan pengalamatan yang tidak relative.................................................7
Notasi R1C1.......................................................................................................................7
Pengalamatan Worksheet atau Workbook lain...................................................................8
Nama Sebagai Referensi....................................................................................................8
Manfaat Lain dari Sistem Penamaan Cell/Range................................................................9
Formula Errors.........................................................................................................................10
Function (fungsi)......................................................................................................................12
Fungsi di dalam Fungsi.....................................................................................................12
Lebih lanjut dengan fungsi IF...........................................................................................13
Menggunakan fungsi COUNTIF dan SUMIF.......................................................................16
Menggunakan Array Formula untuk COUNT dan SUM......................................................17
Beberapa Fungsi Matematika dalam Excel..............................................................................18
Beberapa Fungsi Statistik dalam Excel....................................................................................22
Beberapa Fungsi Tanggal dan Waktu dalam Excel..................................................................25
Beberapa Fungsi Logika dalam Excel.......................................................................................27
Beberapa Fungsi Teks dalam Excel..........................................................................................28
Beberapa Fungsi LookUp dan Alamat dalam Excel..................................................................32
Beberapa Fungsi Information dalam Excel...............................................................................36
MegaFormula...........................................................................................................................41
Modul 2 : Pengenalan VBA................................................................................................................44
Sekilas Pemrograman VBA.......................................................................................................44
Visual Basic Editor............................................................................................................46
Membuat kode VBA..........................................................................................................47
Memasukkan kode dengan cara biasa.............................................................................48
Memasukkan kode dengan Macro Recorder.....................................................................49
Production Engineering Department
2
Programming in Microsoft Excel 2000
Relative atau Absolute.....................................................................................................51
Membersihkan hasil perekaman macro............................................................................53
Objek dan Koleksi.............................................................................................................54
Mengetahui Objek yang Aktif...........................................................................................55
Bekerja dengan objek Range............................................................................................56
Properti Range..........................................................................................................57
Properti Cells..........................................................................................................57
Properti Offset........................................................................................................58
Pemrograman Dasar VBA.........................................................................................................59
Bahasa VBA : Sekilas Pandang.........................................................................................59
Komentar.........................................................................................................................60
Variabel, Jenis Data, dan Konstanta.................................................................................61
Menentukan Jenis Data.............................................................................................62
Mendeklarasikan Variabel........................................................................................63
Menentukan Jenis Data.............................................................................................63
Memaksa Pendeklarasian Semua Variabel...............................................................64
Lingkup Suatu Variabel....................................................................................................64
Konstanta.........................................................................................................................66
Jenis Data String...............................................................................................................66
Jenis Data Date................................................................................................................66
Operator Perhitungan, Logika, dan Perbandingan............................................................67
Array................................................................................................................................67
Variabel Objek..................................................................................................................69
Built-In Function...............................................................................................................69
Struktur Dasar Pemrograman..................................................................................................71
With-End With................................................................................................................71
For-Next..........................................................................................................................71
Do-While..........................................................................................................................74
Do-Until..........................................................................................................................74
If-Then............................................................................................................................76
Select-Case....................................................................................................................77
Bekerja Dengan Prosedur........................................................................................................78
Mendeklarasikan Prosedur...............................................................................................78
Menjalankan Prosedur......................................................................................................79
Bekerja Dengan Fungsi............................................................................................................84
Mendeklarasikan Fungsi...................................................................................................85
Menjalankan Fungsi.........................................................................................................86
Argumen/Parameter.................................................................................................................87
By Value atau By Reference.............................................................................................88
Contoh Prosedur dan Fungsi....................................................................................................88
Teknik Penanganan Kesalahan................................................................................................91
‘Menangkap’ Error............................................................................................................91
On Error Resume Next...........................................................................................91
On Error Goto error_label..................................................................................92
Manfaat ‘Menangkap’ Kesalahan..............................................................................93
Debugging........................................................................................................................93
Production Engineering Department
3
Programming in Microsoft Excel 2000
Modul 1 : Formula dan Function
Formula (rumus)
Sebagian pengguna Excel menganggap bahwa Formula dan Function adalah sama atau sejenis.
Padahal formula (rumus) adalah satu atau beberapa rumus yang dibuat oleh pengguna,
sedangkan function (fungsi) adalah suatu rumus tunggal yang sudah dibuat oleh Excel dan
memiliki fungsi dan maksud tertentu. Suatu formula yang kita buat dapat terdiri dari beberapa
fungsi, tetapi sangat tidak mungkin di dalam fungsi yang sudah ada kita sisipkan formula yang
kita buat (karena kita tidak bisa membuka isi dari fungsi tersebut.)
Sebuah formula dapat berupa perhitungan matematik, membandingkan nilai antar worksheet,
atau menggabungkan teks. Formula juga dapat berisi referensi ke cell lain yang :
berada dalam worksheet yang sama;
berada dalam worksheet yang berbeda tetapi masih dalam satu workbook;
atau dalam workbook yang berbeda.
Contoh berikut ini akan menambahkan nilai 25 dan nilai cell B4 kemudian membagi hasilnya
dengan jumlah (Sum) nilai D5, E5, dan F5.Alamat cell
Nilai konstanFungsi (function)
=(B4+25)/SUM(D5:F5)
Alamat rangeoperator bagi
operator tambah
CATATAN …Formula yang kita buat akan segera dihitung oleh Excel setelah kita selesai memasukkannya. Ini akan terjadi jika Calculation
Mode (lihat Tools Options) diset Automatic. Jika formula tersebut berhubungan dengan formula cell lain, maka formula lain
tersebut dihitung terlebih dahulu oleh Excel.
Terkadang kita memiliki worksheet dengan ratusan atau ribuan formula yang kompleks dimana proses perhitungan akan
memakan waktu yang lama. Jika ini terjadi, kita sebaiknya menset Calculation Mode menjadi Manual. Ketika dalam mode ini, Excel
akan menampilkan teks Calculate di status bar, jika dalam worksheet kita terdapat formula yang belum diproses oleh Excel. Kita
dapat memerintah Excel untuk melakukan proses perhitungan dengan menekan :
F9, untuk menghitung formula di seluruh workbook yang terbuka.
Shift-F9, untuk menghitung formula di worksheet yang aktif saja.
Ctrl-Shift-F9, untuk memaksa Excel memproses semua perhitungan yang ada. Cara ini tidak disarankan, gunakan
hanya jika Excel tidak melakukan proses perhitungan secara benar.
Ketika kita mengubah Calculation Mode, seluruh workbook yang dibuka akan terpengaruh.
Penyusunan Formula di dalam Excel
Formula di dalam Excel selalu dimulai dengan tanda = (sama dengan). Tanda = ini akan memberi
tahu bahwa karakter-karakter berikutnya adalah suatu rumus di mana terdiri dari operand
(elemen yang akan dihitung) yang dipisahkan oleh operator (jenis perhitungan). Excel akan
melakukan perhitungan mulai dari kiri ke kanan, berdasarkan tingkatan masing-masing operator
di dalam rumus. Kita bisa mengubah urutan perhitungan dengan menggunakan tanda kurung.
Pada contoh sebelumnya, tanda kurung akan memaksa Excel untuk menghitung B4+25 terlebih
dahulu lalu kemudian membaginya dengan hasil penjumlahan nilai D5, E5, dan F5.
Production Engineering Department
4
Programming in Microsoft Excel 2000
Operator perhitungan
Operator akan menandakan jenis perhitungan apa yang akan dilakukan terhadap operand. Excel
memiliki jenis 4 operator, yaitu : Arithmetic (operator untuk perhitungan biasa); Comparison
(operator untuk perbandingan); Text concatenation (operator untuk menggabungkan dua buah
teks); dan Reference (operator untuk mengkombinasikan alamat cell/range).
Arithmetic operators digunakan untuk melakukan perhitungan matematik
seperti penjumlahan, pengurangan, perkalian, atau untuk menghasilkan hasil
berupa nilai.
Operator Maksud Contoh
+ Penjumlahan 3+3
– PenguranganTanda Negatif
3–1–1
* Perkalian 3*3
/ Pembagian 3/3
% Persentase 20%
^ Pangkat 3^2 (sama dengan 3*3)
Comparison operators digunakan untuk memperbandingkan dua buah nilai yang
hasil perbandingannya akan berupa nilai TRUE (Benar) atau FALSE (Salah).
Operator Maksud Contoh
= sama dengan A1=B1
> lebih besar dari A1>B1
< lebih kecil dari A1<B1
>= lebih besar atau sama dengan dari A1>=B1
<= lebih kecil atau sama dengan dari A1<=B1
<> tidak sama dengan A1<>B1
Text concatenation operators digunakan untuk menggabungkan beberapa teks
menjadi satu.
Operator Maksud Contoh
& Menggabungkan dua teks menjadi satu "North" & "wind" menghasilkan "Northwind"
Reference operators digunakan untuk menggabung alamat beberapa cell/range
menjadi satu.
Operator Maksud Contoh
:Operator range, yang menandakan satu alamat untuk seluruh cell yang terdapat di antara dua alamat cell, termasuk kedua cell tersebut
B5:B15
, Operator penggabungan banyak range menjadi satu range SUM(B5:B15,D5:D15)
Urutan proses perhitungan
Jika kita menggabungkan beberapa operator dalam satu formula, Excel akan melakukan
perhitungan sesuai dengan urutan yang ada pada tabel di bawah. Jika dalam suatu formula
terdapat beberapa operator yang memiliki tingkatan yang sama – sebagai contoh misalkan
Production Engineering Department
5
Programming in Microsoft Excel 2000
formula mengandung operator perkalian dan pembagian – Excel akan menghitung mulai dari kiri
sampai ke kanan. Untuk mengubah urutan perhitungan bagian tertentu, tutuplah bagian yang
ingin dihitung terlebih dahulu dengan menggunakan tanda kurung.
Operator Maksud Level
: (spasi) , operator reference (alamat cell/range) + -
– tanda negatif
% persentase
^ pangkat
* dan / perkalian dan pembagian
+ dan – penjumlahan dan pengurangan
& penggabungan teks
= < > <= >= <> perbandingan
Array Formula
Array Formula adalah fasilitas dari Excel yang memungkinkan kita untuk mengisi satu rumus
langsung ke dalam satu atau lebih range di mana Excel akan menjaga rumus tersebut untuk
selalu sama. Array Formula memungkinkan kita untuk melakukan beberapa perhitungan dan
mengembalikan satu atau beberapa hasil. Kita bisa membuat array formula dengan mengisikan
formula biasa, tetapi kita harus menekan Ctrl+Shift+Enter ketika selesai memasukkan formula.
Menghitung formula untuk menghasilkan satu nilai. Terkadang Excel harus melakukan
beberapa perhitungan untuk menghasilkan satu nilai. Sebagai contoh, worksheet di bawah ini
menunjukkan satu perusahaan yang memiliki kantor penjualan di Eropa dan Amerika yang
masing-masing kantor memiliki 3 divisi produk. Untuk mencari rata-rata pendapatan kantor Eropa
pada tahun 1992, kita membutuhkan sebuah array formula.
B C D E3 1992 19974 Elektronik5 Eropa 100.600 161.0006 Amerika 133.100 198.2007 Total Elektronik 233.700 359.2008 Akustik9 Eropa 129.200 160.700
10 Amerika 150.500 190.10011 Total Akustik 279.700 350.80012 Perlengkapan Studio13 Eropa 89.900 153.90014 Amerika 112.300 190.70015 Total Perlengkapan Studio 202.200 344.60016 =AVERAGE(IF(C5:C14=“Eropa”,D5:D14))
Cell C16 berisi array formula =AVERAGE(IF(C5:C14=“Eropa”,D5:D14)), yang akan mencari
seluruh cell pada range C5:C14 yang berisi teks “Eropa” dan menghitung rata-rata pada D5:D14.
Menghitung formula untuk menghasilkan beberapa nilai. Untuk menghasilkan beberapa
nilai dengan menggunakan array formula, kita harus memilih range di mana nilai-nilai akan
ditaruh. Contoh berikut, kita akan menghitung 10 % total penjualan per bulan secara langsung.
B C D E3 Juni Juli Agustus4 7234 1200 525
Production Engineering Department
6
Programming in Microsoft Excel 2000
5 10 % =C4:E4*0.16
Beberapa keuntungan dari array formula adalah sebagai berikut :
menggunakan memori yang lebih sedikit;
pekerjaan kita menjadi lebih efisien; dan
dapat menghilangkan kebutuhan akan formula perantara (intermediate formulas).
Sedangkan kerugian dari array formula adalah sebagai berikut :
dapat memperlambat kinerja kalkulasi worksheet kita;
worksheet kita sulit dimengerti oleh orang lain; dan
harus mengingat untuk menekan Ctrl+Shift+Enter setelah selesai mengisi formula.
CATATAN …Yang perlu diingat adalah sebelum kita menuliskan formula di atas, pastikan kita sudah memilih range C5:E5 terlebih dahulu. Dan
setelah memasukkan formulanya, pastikan untuk menekan tombol Ctrl+Shift+Enter untuk mengakhirinya. Excel secara otomatis
akan mengubah formulanya menjadi {=C4:E4*0.1} sebagai tanda bahwa formula yang bersangkutan adalah array formula.
Jika kita mencoba untuk mengubah formula pada salah satu cell, maka Excel akan menampilkan pesan kesalahan bahwa kita
tidak bisa mengubah isi salah satu array (You cannot change part of an array). Untuk mengubah formula tersebut, kita harus
terlebih dahulu memilih range array formula yang bersangkutan, yaitu C5:E5, kemudian mengubahnya. Dan ingat, setelah
mengubah formulanya, tekan Ctrl+Shift+Enter untuk mengakhirinya. Disinilah kelebihan suatu array formula, bahwa
perubahannya tidak bisa per bagian, melainkan harus semua bagian. Jika kita menekan Enter ketika selesai mengetik formula
pada cell/range, maka formulanya hanya akan diisi pada cell yang aktif saja.
Dan satu hal yang penting lagi adalah Excel secara otomatis akan menambahkan tanda kurung kurawal ({}) sebagai penanda
bahwa formula yang ada adalah array formula.
Dan kita jangan sekali-kali menambahkan tanda kurung kurawal secara manual.
LATIHAN
Buatlah dua buah array 1 x 5 dan isikan sembarang nilai, lalu kalikan kedua buah array
tersebut dengan menggunakan array formula !
Buatlah daftar sepuluh hewan di kolom A, lalu tampilkan jumlah huruf masing-masing hewan
di kolom B dengan menggunakan array formula ! Setelah itu tampilkan jumlah huruf
keseluruhan hewan dengan satu array formula tanpa perlu bantuan panjang huruf masing-
masing hewan !
Cell/Range References
Sebagian besar formula yang kita buat terdiri dari alamat cell/range (cell/range references).
Pengalamatan ini memiliki 4 jenis, yaitu :
Relative. Pengalamatan ini sepenuhnya relatif. Ketika suatu formula dicopy, alamat cell
di dalam formula akan berubah sesuai dengan alamat barunya. Contoh : A1.
Absolute. Pengalamatan ini sepenuhnya absolut. Ketika suatu formula dicopy, alamat
cell di dalam formula tidak akan berubah. Contoh : $A$1.
Row Absolute. Pengalamatan ini absolut sebagian. Ketika suatu formula dicopy, alamat
cell di dalam formula akan berubah bagian kolomnya saja. Contoh : A$1.
Column Absolute. Pengalamatan ini absolut sebagian. Ketika suatu formula dicopy,
alamat cell di dalam formula akan berubah bagian barisnya saja. Contoh : $A1.
Production Engineering Department
7
Programming in Microsoft Excel 2000
Secara default, alamat cell/range adalah relative. Untuk mengubah menjadi yang lain, kita harus
secara manual menambahkan tanda dolar ($) ke dalam alamatnya.
Kenapa menggunakan pengalamatan yang tidak relative
Kalau kita pikir-pikir, satu-satunya alasan kita untuk mengubah jenis pengalamatan adalah ketika
kita berencana untuk mengcopy formula tersebut ke cell/range lain. Perhatikan contoh di bawah
ini dimana cell C4 berisi formula =C$3*$B4.
A B C D E F G1
Leb
ar
2 Panjang3 12 14 16 184 3 36 42 48 545 4 48 56 64 726 5 60 70 80 907 6 72 84 96 1088 7 84 98 112 1269
Formula di atas digunakan untuk menghitung luas untuk lebar (terdapat pada kolom B) dan
panjang (terdapat pada baris 3). Setelah kita mengisi formula di C4, kita bise mengcopy hingga
C8 dan F8. Karena formula tersebut menggunakan alamat absolut untuk baris 3 dan kolom B dan
alamat relatif untuk kolom dan baris lain, maka setiap formula yang dicopy akan menghasilkan
alamat yang benar. Jika formula di C4 hanya menggunakan alamat relatif, maka ketika dicopy
alamat formula cell tujuannya akan berubah sesuai dengan alamat barunya – dan akan
menghasilkan nilai yang salah.
Notasi R1C1
Selain pengalamatan normal dengan menggunakan notasi A1 (terdiri dari huruf kolom dan angka
baris), kita juga bisa menggunakan notasi R1C1. Pada sistem ini, cell A1 sama dengan cell R1C1,
dan A2 sama dengan R1C2, dan begitu seterusnya. Untuk mengubah setting menjadi notasi
R1C1, akses opsi Tools Options… General R1C1 reference style. Tabel di bawah ini
memberikan contoh formula dengan notasi standar dan notasi R1C1 dimana formula yang
dimasukkan berada di cell B2 (atau cell R1C2).
Formula Sederhana Dengan Menggunakan Dua NotasiStandar R1C1=A1+1 =RC[-1]+1=$A$1+1 =R1C1+1=$A1+1 =RC1+1=A$1+1 =R1C[-1]+1=SUM(A1:A10) =SUM(RC[-1]:R[9]C[-1])=SUM($A$1:$A$10) =SUM(R1C1:R10C1)
Angka di dalam kurung siku merupakan alamat relatif terhadap cell yang aktif. Misalnya, R[-5]C[-
3] menandakan alamat cell 5 baris ke atas dan tiga kolom ke kiri. Sedangkan, R[5]C[3]
menandakan alamat cell 5 baris ke bawah dan tiga kolom ke kanan.
CATATAN …
Production Engineering Department
8
Programming in Microsoft Excel 2000
Jika kita merasa bahwa kita kesulitan menggunakan notasi R1C1, maka kita tidak sendirian. Notasi R1C1 tidak terlalu
memusingkan untuk pengalamatan absolut, tetapi lain halnya jika kita berbicara mengenai pengalamatan relatif dimana kita
harus menggunakan tanda kurung siku.
Biasanya notasi R1C1 digunakan untuk memeriksa hasil suatu formula ketika kita meng-copy-nya. Coba dan latihlah !
Pengalamatan Worksheet atau Workbook lain
Untuk mereferensikan alamat cell/range di worksheet lain, kita bisa menggunakan tanda seru (!)
sebagai pemisah antara worksheet dan cell/range, misalnya :
=Sheet1!A1+1
Kita juga bisa mereferensikan alamat cell/range yang ada di workbook lain dengan menggunakan
tanda kurung siku ([]) sebagai pemisah antara workbook dan worksheet, misalnya :
=[Budget.xls]Sheet1!A1+1
Jika terdapat spasi pada referensi nama workbooknya, maka kita harus menggunakan tanda kutip
tunggal (‘ ’) untuk mengapit nama workbook dan worksheetnya, misalnya :
=‘[Budget for 2001]Sheet1’!A1+A1
Tetapi jika workbook tersebut tidak dalam keadaan terbuka, maka kita harus menambahkan path
lengkapnya, misalnya :
=‘C:\MSOffice\Excel\[Budget for 2001]Sheet1’!A1+A1
CATATAN …Jika kita memiliki workbook yang rusak (corrupted) dan tidak bisa membukanya, kita bisa membuat formula di workbook baru kita
yang berisi referensi alamat ke workbook yang rusak tersebut dan mendapatkan semua nilai yang ada (tetapi bukan formulanya).
Kita dapat melakukan ini karena file yang rusak tersebut tidak perlu dibuka. Kita hanya perlu, misalnya, membuat formula di cell
A1 worksheet baru seperti =[Badfile.xls]Sheet1!A1 lalu mengcopynya ke cell lain sebanyak yang kita ingin.
Jika data yang ada di workbook yang rusak sampai cell AA123, maka copylah formula tersebut hingga cell AA123.
Nama Sebagai Referensi
Salah satu fasilitas Excel yang dinilai sangat berguna adalah kemampuan untuk mengganti
alamat cell/range (bisa juga komponen lain seperti chart) dengan nama tertentu yang memiliki
arti bagi kita. Kita bisa memberi nama cell/range tertentu dengan mengakses menu Insert
Name Define (atau dengan menekan Ctrl+F3) lalu memasukkan namanya dan alamat
cell/range yang ditunjuk oleh nama tersebut. Cara yang lebih cepat untuk memberi nama
cell/range adalah dengan mengubah di kotak isian Name box yang
terletak di samping kiri formula bar).
Kita juga bisa mengakses menu Insert Name Create untuk menciptakan nama secara
otomatis jika kita memiliki range yang memiliki judul baris atau kolom. Contohnya bisa dilihat
pada worksheet dan gambar 1.1 di bawah ini.
A B C D E F1 Qtr1 Qtr2 Qtr3 Qtr42 North 311 213 112 4463 Sout
h193 486 398 509
4 West 594 698 677 2315 East 753 811 911 710
Production Engineering Department
9
Programming in Microsoft Excel 2000
Gambar 1.1
Kotak dialog Create Names
Setelah itu kita akan mendapatkan bahwa range B2:B5 akan memiliki nama Qtr1, B2:E2 akan
memiliki nama North, dan seterusnya. Dan jika kita memasukkan formula ke dalam sebuah cell,
=Qtr2 South
Excel secara otomatis akan menghasilkan nilai 486. Fasilitas ini disediakan oleh Excel dengan
menggunakan operator spasi, yang diberi nama intersection operator. Kita juga bisa
mendapatkan total untuk West dengan menggunakan formula
=SUM(West)
CATATAN …Sistem penamaan ini sangat berguna terutama saat nanti kita mempergunakan kode program VBA yang menggunakan alamat
cell atau range. Kenapa ? Karena kode program VBA tidak secara otomatis memperbaharui alamat cell/range jika terjadi
pergeseran atau pemindahan cell/range yang bersangkutan. Misalnya, jika kode VBA kita menggunakan alamat Range(“C4”),
maka kode kita akan salah jika kita menyisipkan baris atau kolom baru di atas C4.
Dengan menggunakan nama alamat seperti Range(“InterestRate”), hal tersebut akan bisa kita hindari.
Excel 2000 sebenarnya sudah menambahkan fasilitas baru yang bisa mengubah formula secara
otomatis jika kita menyisipkan baris atau kolom baru. Sebagai contoh, misalkan kita mempunyai
formula di cell A5 sebagai berikut :
=SUM(A1:A4)
Lalu kita sisipkan baris baru di atas baris 5, maka formulanya akan secara otomatis menjadi :
=SUM(A1:A5)
Manfaat Lain dari Sistem Penamaan Cell/Range
Selain manfaat-manfaat yang dimiliki di atas, sistem penamaan yang disediakan oleh Excel juga
bisa digunakan sebagai fasilitas variabel dan konstanta.
Nama digunakan sebagai konstanta. Kita bisa membuat satu nama untuk menampilkan nilai
tertentu. Bisa dilihat pada gambar 1.2, nama LST memiliki referensi ke nilai =“Laporan Stock
Barang Tahun 2001”. Dan jika pada salah satu cell, kita memasukkan formula =LST, maka cell
tersebut akan menampilkan judul secara penuh.
Nama digunakan sebagai variabel. Kita bisa membuat satu nama untuk menampilkan nilai
berdasarkan perhitungan terhadap cell-cell tertentu. Bisa dilihat pada gambar 1.3, nama
PANGKAT memiliki perhitungan =A1^B1 (nilai cell A1 dipangkatkan dengan nilai cell B1). Dan jika
pada salah satu cell, kita memasukkan formula =PANGKAT, maka cell tersebut akan
menampilkan hasil formula pangkat tersebut.
Production Engineering Department
10
Programming in Microsoft Excel 2000
Gambar 1.2
Nama digunakan sebagai
konstanta. Menggunakan
nilai secara eksplisit.
Gambar 1.3
Nama digunakan sebagai
variabel. Menggunakan
nilai dari cell/range
tertentu atau variabel
yang lain.
Formula Errors
Terkadang kita mendapatkan nilai kesalahan (error value) jika formula yang kita buat memiliki
kesalahan dalam perhitungan, parameter/argumen fungsi, atau referensi cell/range. Jika formula
yang kita buat memiliki referensi ke cell/range yang memiliki error value, maka formula tersebut
juga akan memiliki error value. Hal ini disebut gejala riak (ripple effect) – di mana satu cell yang
memiliki error value dapat menyebabkan banyak cell yang menggunakan alamat cell sebelumnya
mengalami error value juga. Di bawah ini akan dijelaskan beberapa error value yang mungkin
muncul dalam suatu formula.
Error Value dalam ExcelError Value Penjelasan##### Error ini muncul jika cell yang bersangkutan berisi nilai yang lebarnya
melebihi lebar cell atau berisi formula tanggal/waktu yang menghasilkan bilangan negatif. Untuk mengatasi ini, kita bisa :menambah lebar kolom;
Production Engineering Department
11
Programming in Microsoft Excel 2000
mengubah number format menjadi yang lain; ataumengubah formula tanggal/waktu agar benar.
#DIV/0! Terdapat pembagian dengan nol (suatu operasi yang tidak diperbolehkan di planet ini) dalam formula yang bersangkutan. Misalnya =A1/0. Error ini juga muncul jika formula mencoba membagi dengan cell yang kosong. Untuk mengatasi masalah ini kita bisa :jika nilai 0 digunakan secara eksplisit sebagai bilangan pembagi, ubahlah menjadi nilai selain 0, misalnya dari formula =A1/0 menjadi =A1/2; ataujika formula yang ada mencoba membagi dengan cell yang kosong atau berisi nilai 0 (misalnya B5), ubahlah formula yang bersangkutan misalnya menjadi seperti =IF(B5=0,"",A5/B5).
#N/A Formula yang bersangkutan memiliki referensi (secara langsung maupun tidak langsung) ke cell yang memiliki nilai N/A. N/A ini menandakan bahwa data tidak tersedia (not available). Ini biasanya terjadi ketika kita menggunakan fungsi LOOKUP dan terdapat kondisi :cell berisi nilai yang tidak terdapat di tabel LOOKUP; atautabel LOOKUP yang ada tidak dalam keadaan terurut.
#NAME? Formula menggunakan nama atau pengenal (identifier) yang tidak dikenal oleh Excel. Ini dapat terjadi jika kita :menghapus sebuah nama yang masih digunakan dalam formula;salah mengetik nama atau fungsi yang ada;lupa menggunakan tanda titik dua (:) pada alamat range; atauteks yang ada di dalam formula tidak diapit oleh kutip.
#NULL! Formula yang bersangkutan menggunakan intersection operator (operator spasi – baca “Nama sebagai referensi” untuk keterangan lebih lanjut) terhadap dua range tapi tidak saling bersinggungan satu sama lain. Ini juga mungkin terjadi jika kita lupa menambahkan tanda koma (,) sebagai pemisah range. Untuk mengatasi masalah ini kita bisa :memeriksa ulang dua range yang menggunakan intersection operator, misalnya terdapat formula =A1:A5 B1:E1 dimana tidak terdapat cell yang merupakan persinggungan. Kita bisa mengubahnya menjadi =A1:A5 A1:E1; ataumemastikan bahwa tanda koma digunakan sebagai pemisah dua range, misalnya kita ingin mentotal nilai yang ada di range A1:A5 dan range C1:C5 maka formula yang benar harus berbentuk =SUM(A1:A5,C1:C5) dan bukannya =SUM(A1:A5 C1:C5).
#NUM! Error ini muncul jika terjadi kesalahan menggunakan bilangan dalam formula atau fungsi yang ada. Ini biasanya muncul jika :mengirimkan parameter/argumen yang jenisnya bukan bilangan untuk parameter/argumen yang membutuhkan bilangan; ataumembuat formula yang menghasilkan bilangan yang terlalu besar atau terlalu kecil yang Excel bisa tampilkan. Untuk mengatasi masalah ini pastikan bahwa hasil dari formula yang ada harus berkisar antara –1*10307
sampai 1*10307.#REF! Formula yang ada menggunakan referensi alamat cell/range yang tidak
benar. Ini biasanya terjadi jika kita menghapus cell/range yang masih digunakan oleh formula lain.
#VALUE! Error ini akan muncul jika kita mengirimkan parameter atau operand yang jenisnya berbeda dengan yang dibutuhkan. Ini biasanya terjadi jika :kita memasukkan data teks sedangkan yang dibutuhkan adalah data bilangan atau data logika. Misalnya : cell A5 berisi 15 dan cell A6 berisi “Contoh”, kemudian kita mencoba membuat formula di cell A7 menjadi =A5+A6; ataukita mengirimkan alamat range sedangkan yang dibutuhkan adalah data tunggal atau satu alamat cell.
CATATAN …Kita bisa menggunakan fungsi ISERROR untuk mendeteksi terjadinya salah satu dari error-error di atas.
Function (fungsi)
Function (fungsi) adalah sederetan atau sekumpulan formula yang sudah disediakan oleh Excel
untuk melakukan operasi tertentu dengan menggunakan nilai yang disebut argument. Sebagai
Production Engineering Department
12
Programming in Microsoft Excel 2000
contoh, fungsi SUM akan menjumlahkan nilai seluruh cell pada range. Argument (argumen)
dapat berupa bilangan, teks, nilai logika (TRUE atau FALSE), array, atau alamat cell/range.
Argumen yang kita berikan jenisnya harus sesuai dengan ketentuan yang terdapat pada fungsi
yang bersangkutan. Argumen dapat berupa nilai konstan, formula, atau fungsi lain.Tanda sama dengan
Nama fungsiArgumen
=SUM(A10,B5:B10,50,37)
Tanda koma yang memisahkan masing-masing argumenTanda kurung
Fungsi di dalam Fungsi
Terkadang kita dihadapkan pada kondisi di mana kita harus memasukkan satu fungsi sebagai
argumen fungsi yang lain. Dan ini menyebabkan kita harus menulis fungsi di dalam fungsi – yang
biasanya disebut nested function (fungsi bersarang/bertingkat). Sebagai contoh, formula di
bawah menggunakan fungsi AVERAGE dan membandingkan hasilnya dengan
50.nested function
=IF(AVERAGE(F2:F5)>50,SUM(G2:G5),0)
Sebuah nested function harus menghasilkan jenis nilai yang sama dengan yang dibutuhkan oleh
argumen tersebut. Misalnya, suatu argumen membutuhkan nilai logika (TRUE atau FALSE), maka
nested function tersebut harus menghasilkan nilai logika. Jika tidak, maka Excel akan
menghasilkan kesalahan #VALUE! error.
CATATAN …Sebuah formula dapat terdiri hingga tujuh tingkat nested function. Contohnya bisa dilihat di atas, fungsi AVERAGE dan SUM
keduanya adalah fungsi level kedua karena mereka merupakan argumen bagi fungsi IF.
Jika terdapat fungsi lain di dalam fungsi AVERAGE, maka fungsi tersebut merupakan fungsi level ketiga.
Kita juga bisa menggunakan Formula Palette (fasilitas yang disediakan Excel untuk menyunting
formula. Fasilitas ini berada di bawah formula bar ketika kita klik tombol Edit Formula atau
klik tombol Paste Function ) dalam membuat nested function ini. Sebagai contoh bisa
dilihat pada gambar 1.4 di bawah dalam penyusunan formula sebelumnya untuk fungsi SUM.
Production Engineering Department
13
Programming in Microsoft Excel 2000
Gambar 1.4
Contoh penggunaan
Formula Palette
Untuk berpindah antar fungsi di dalam Formula Palette, klik nama fungsi dalam formula bar.
Sebagai contoh, untuk mengubah range argumen fungsi AVERAGE di gambar 1.4, klik AVERAGE
di formula bar.
Lebih lanjut dengan fungsi IF
Seperti kita ketahui bahwa fungsi IF digunakan untuk menseleksi kondisi dan menghasilkan nilai
tertentu berdasarkan nilai TRUE (benar) atau FALSE (salah). Syntax (bentuk umum) dari fungsi IF
adalah sebagai berikut :
=IF(kondisi,nilai_jika_benar,nilai_jika_salah)
Kondisi adalah satu atau lebih persamaan yang menghasilkan nilai TRUE atau FALSE.
Contohnya, A10 = 100 adalah kondisi; jika cell A10 berisi nilai 100 maka kondisi akan
menghasilkan nilai TRUE; sebaliknya menghasilkan nilai FALSE. Kondisi disini bisa menggunakan
operator perbandingan (comparison operators) yang sudah dibicarakan pada bagian “Operator
Perhitungan” sebelumnya.
Nilai_jika_benar adalah nilai yang akan dihasilkan jika kondisinya menghasilkan nilai TRUE.
Contohnya, jika parameter/argumen ini diisi dengan teks “Within Budget” dan kondisi
menghasilkan nilai TRUE, maka fungsi IF ini akan menghasilkan teks “Within Budget”.
Nilai_jika_benar juga bisa diisi dengan fungsi lain.
Nilai_jika_salah adalah nilai yang akan dihasilkan jika kondisinya menghasilkan nilai FALSE.
Contohnya, jika parameter/argumen ini diisi dengan teks “Over Budget” dan kondisi
menghasilkan nilai FALSE, maka fungsi IF ini akan menghasilkan teks “Over Budget”.
Nilai_jika_salah juga bisa diisi dengan fungsi lain.
CATATAN …
Production Engineering Department
14
Programming in Microsoft Excel 2000
Sebenarnya Excel menyediakan fungsi tambahan yang bisa digunakan untuk menghitung data berdasarkan kondisi tertentu.
Misalnya, untuk menghitung total nilai berdasarkan teks tertentu, kita bisa menggunakan fungsi SUMIF. Fungsi SUMIF (dan juga
COUNTIF) ini akan dibahas pada bagian selanjutnya.
Kita dapat menyusun fungsi IF lagi di dalam nilai_jika_benar atau nilai_jika_salah (nested function) hingga 7 level.
LATIHAN
Jika cell A10 berisi dosis obat dalam cc, buatlah fungsi IF di cell lain untuk menseleksi apakah
dosis tersebut “Dosis Normal” (dosis <= 1000 cc) atau “Over Dosis” (dosis > 1000 cc) !
Buatlah fungsi IF untuk menseleksi nilai cell A1. Jika A1 berisi 100, maka tampilkan total nilai
yang ada di B5:B10, sebaliknya jangan tampilkan apa-apa !
Misalkan kita mempunyai beberapa orang sales untuk menjual produk kita yang seminggu
sekali melaporkan hasil penjualannya. Kita sebagai pemilik perusahaan telah menentukan
pembagian bonus terhadap hasil penjualan mereka per minggu. Jika lebih besar dari $ 1,000,
maka bonusnya adalah 10 % dari penjualan tersebut, sebaliknya bonusnya adalah 7.5 % dari
penjualan tersebut. Untuk menghitung secara otomatis, kita harus membuat tabel hasil
penjualan satu bulan untuk (andaikan saja) 3 orang sales dengan kolom-kolom : Name Sales,
Penjualan, dan Bonus yang diterima (dalam $). Buatlah tabel tersebut dengan fungsi IF-nya !
Buatlah fungsi IF untuk menyatakan nilai huruf berdasarkan nilai bilangan
tertentu dengan ketentuan sebagai berikut :
Jika Nilai Tampilkan Huruf
> 89 A
80 – 89 B
70 – 79 C
60 – 69 D
< 60 E
Kita bisa menggunakan nested function IF untuk menyelesaikan masalah ini.
Pada fungsi IF sebelumnya kita hanya menggunakan kondisi tunggal sebagai seleksinya,
misalkan A10=100. Padahal sering kali dalam kehidupan nyata, kita dihadapkan pada lebih dari
satu kondisi, misalkan : “Saya boleh masuk bioskop jika umur saya lebih dari 17 tahun dan
mempunyai karcis” atau “saya mau minum jika ada air jeruk atau ada air teh”.
Bisa dilihat pada paragraf sebelumnya, kalimat “jika ada air jeruk atau ada air teh” terdiri dari
dua kondisi yaitu “ada air jeruk” dan “ada air teh” dengan penghubung kondisi “atau”. Pada
dasarnya untuk menghubungkan dua buah kondisi digunakan operator AND (Dan) dan OR (Atau)
dengansatu tambahan operator NOT (Bukan). Berikut adalah tabel logika operator tersebut yang
dikenal dengan nama logika boolean.
Kondisi A Kondisi B A AND B A OR B NOT AFALSE FALSE FALSE FALSE TRUEFALSE TRUE FALSE TRUE TRUETRUE FALSE FALSE TRUE FALSETRUE TRUE TRUE TRUE FALSE
Operator AND hanya akan menghasilkan nilai TRUE jika keseluruh logika adalah TRUE,
sedangkan operator OR hanya akan menghasilkan nilai FALSE jika keseluruh logika adalah FALSE.
Operator NOT digunakan untuk membalik kondisi.
Excel sudah menyediakan fungsi tersendiri sebagai pengganti operator logika Boolean ini, yaitu :
Production Engineering Department
15
Programming in Microsoft Excel 2000
Fungsi AND(kondisi1, kondisi2, …) yang bisa berisi hingga 30 kondisi. Parameter yang diberikan
harus menghasilkan nilai TRUE atau FALSE atau bisa juga berupa array atau alamat range yang berisi
nilai TRUE atau FALSE.
Fungsi OR(kondisi1, kondisi2, …) yang bisa berisi hingga 30 kondisi. Parameter yang diberikan
harus menghasilkan nilai TRUE atau FALSE atau bisa juga berupa array atau alamat range yang berisi
nilai TRUE atau FALSE.
Fungsi NOT(kondisi). Parameter yang diberikan harus menghasilkan TRUE atau FALSE.
Untuk lebih jelasnya, perhatikan contoh berikut :
AND(TRUE,TRUE) menghasilkan TRUE
AND(2+2=4,2+3=6) menghasilkan FALSE
Jika A1:A3 berisi nilai TRUE,FALSE, dan TRUE, maka OR(A1:A3) menghasilkan TRUE
NOT(1+1=2) menghasilkan FALSE
Excel sebenarnya juga menyediakan operator logika Boolean (walaupun tidak terdokumentasi di
dalam Excel Reference Guide) seperti berikut :
+ menandakan operator OR. Kita bisa memisahkan kondisi dengan tanda + ini.
* menandakan operator AND. Kita bisa memisahkan kondisi dengan tanda * ini.
Untuk lebih jelasnya, bandingkanlah kedua contoh yang memiliki tujuan yang sama, berikut ini :
=IF(AND(A1<10,B1<10), “OK”, “NG”)
=IF((A1<10)*(B1<10), “OK”, “NG”)
CATATAN …Jika menggunakan operator logika Boolean * dan +, pastikan untuk menutup masing-masing logika dengan tanda kurung.
LATIHAN
Jika cell A1 bisa diisikan sembarang nilai, buatlah fungsi di B1 untuk memeriksa apakah isi cell
A1 berada “dalam batas” (100 <= nilai <= 1000) atau “luar batas” !
Jika kita memiliki tabel sebagai berikut :
A B C D1 Nama Barang Harga Jenis Discount2 Celana CutBrai 75000 A3 Lem Tikus 20000 C
Kolom Jenis bisa berisi A, B, C, D, dan E. Isilah kolom Discount dengan ketentuan
sebagai berikut :
Jika Jenis A atau B dan harga < 50000, maka Discount = 5% * Harga
Jika Jenis A atau B dan harga >= 50000, maka Discount = 10% * Harga
Jika Jenis C, D, atau E dan harga < 50000, maka Discount = 10% * Harga
Jika Jenis C, D, atau E dan harga >= 50000, maka Discount = 15% * Harga
Menggunakan fungsi COUNTIF dan SUMIF
Formula di dalam Excel, biasanya, akan menghitung seluruh nilai yang terdapat pada range yang
diberikan. Tetapi, terkadang kita menginginkan Excel untuk menghitung nilai yang memenuhi
kondisi tertentu saja.
Sebagai contoh, misalkan kita memiliki dua rumah kontrakan, yang setiap bulannya memiliki
pengeluaran yang berbeda-beda. Sebagai pemilik rumah kontrakan yang baik kita harus
Production Engineering Department
16
Programming in Microsoft Excel 2000
menghitung total pengeluaran listrik dan air per tahun untuk masing-masing rumah agar kita bisa
menentukan tarif kontrak rumah untuk bulan depan. Seandainya kita menyusun dalam bentuk
tabel, mungkin bentuknya akan sebagai berikut :
A B1 Rumah Kontrakan Pengeluaran2 Jl. H. Eman 1500003 Gg. Pemuda 1950004 Jl. H. Eman 1250005 Jl. H. Eman 750006 Gg. Pemuda 1000007 Gg. Pemuda 175000
Kita bisa membuat total pengeluaran untuk rumah “Jl. H. Eman” dengan menggunakan fungsi
SUMIF (yang memiliki syntax =SUMIF(range,criteria,sum_range)) sebagai berikut :
=SUMIF(A2:A7,“Jl. H. Eman”,B2:B7)
Atau menghitung berapa kali pengeluaran untuk rumah “Gg. Pemuda” dengan menggunakan
fungsi COUNTIF (yang memiliki syntax =COUNTIF(range,criteria)) sebagai berikut :
=COUNTIF(A2:A7,“Gg. Pemuda”)
Sehingga kita bisa menyusunnya menjadi seperti bentuk tabel sebagai berikut :
A B C11 Rumah Kontrakan Total Pengeluaran Berapa Kali
Pengeluaran12 Jl. H. Eman =SUMIF(A2:A7,A12,B2:B7) =COUNTIF(A2:A7,A12)13 Gg. Pemuda =SUMIF(A2:A7,A13,B2:B7) =COUNTIF(A2:A7,A13)
CATATAN …Criteria bisa diisi dengan sembarang teks atau bilangan, misalnya 32, “32”, “>32”, atau “apel”.
Berikut adalah contoh lain dari penggunaan fungsi COUNTIF dan SUMIF beserta penjelasannya.
Yang perlu diingat adalah formula di bawah mengasumsikan bahwa kita sudah memiliki range
dengan nama data dan range yang akan dijumlah dengan nama jumlah.
Contoh Penggunaan COUNTIF dan SUMIF
Formula Nilai yang dikembalikan
=COUNTIF(data,12) Jumlah cell yang berisi nilai 12
=SUMIF(data,“<>0”,jumlah) Total nilai yang tidak sama dengan nol.
=COUNTIF(data,“yes”) Jumlah cell yang berisi teks yes (tidak case-sensitive)
=SUMIF(data,“*”,jumlah) Total nilai yang berisi teks apa saja
=COUNTIF(data,“???”) Jumlah cell yang berisi teks berjumlah 3 huruf
LATIHAN
Buatlah fungsi untuk menghitung jumlah cell yang berisi nilai 1 atau 12 !
Buatlah fungsi untuk menghitung total nilai yang isi cellnya lebih besar dari 0 !
Buatlah fungsi untuk menghitung jumlah cell yang berisi nilai antara 1 sampai 10 !
Buatlah fungsi untuk menghitung total nilai yang isi cellnya terdapat satu huruf “s” !
Menggunakan Array Formula untuk COUNT dan SUM
Production Engineering Department
17
Programming in Microsoft Excel 2000
Jika metode perhitungan standard tidak bisa diterapkan pada suatu kasus tertentu, kita bisa
menggunakan metode Array Formula. Dan jangan lupa untuk menekan Ctrl+Shift+Enter setelah
selesai memasukkan formulanya. Berikut akan diberikan contoh-contoh penggunaan Array
Formula pada kasus-kasus yang unik.
Untuk menghitung jumlah cell yang berisi bilangan (tidak akan menghitung teks dan cell kosong),
gunakan formula berikut :
=SUM(IF(ISNUMBER(A2:A10),1,0))
Untuk menghitung jumlah cell yang memiliki error value, gunakan formula berikut :
=SUM(IF(ISERR(A2:A10),1,0))
Contoh lain jika kita memiliki tabel sebagai berikut :
A B C1 Bulan Daerah Penjualan2 Jan Utara 1003 Jan Selatan 2004 Jan Barat 3005 Feb Utara 1506 Feb Selatan 2507 Feb Barat 3508 Mar Utara 2009 Mar Selatan 300
10 Mar Barat 40011
maka kita bisa membuat formula-formula berikut :
Array Formula menggunakan fungsi SUM
Formula Nilai yang dikembalikan
=SUM((A2:A10=“Jan”)*(B2:B10=“Utara”)*C2:C10) Total penjualan untuk bulan “Jan” di
daerah “Utara”
=SUM((A2:A10=“Jan”)*(B2:B10<>“Utara”)*C2:C10) Total penjualan untuk bulan “Jan” di
daerah selain “Utara”
=SUM((A2:A10=“Jan”)*(B2:B10=“Utara”)) Jumlah penjualan untuk bulan “Jan”
di daerah “Utara”
=SUM((A2:A10=“Jan”)*(C2:C10>=200)*(C2:C10)) Total penjualan bulan “Jan” untuk
yang penjualannya >= 200
=SUM((C2:C10>=300)*(C2:C10<=400)*(C2:C10)) Total penjualan untuk yang
penjualannya antara 300 dan 400
=SUM((C2:C10>=300)*(C2:C10<=400)) Jumlah penjualan untuk yang
penjualannya antara 300 dan 400
Beberapa Fungsi Matematika dalam Excel
Berikut adalah fungsi matematika dalam Excel yang sering digunakan dalam pekerjaan :
ABS
Penjelasan : Nilai absolut dari suatu bilangan.
Syntax : ABS(bilangan)
Contoh : =ABS(2) menghasilkan 2
Production Engineering Department
18
Programming in Microsoft Excel 2000
=ABS(-2) menghasilkan 2
Jika A1 berisi nilai –16, maka =SQRT(ABS(A1)) menghasilkan 4
CEILING
Penjelasan : Pembulatan ke atas suatu nilai berdasarkan besaran tertentu, menjauhi 0.
Syntax : CEILING(bilangan,besaran_pembulatan)
Contoh : =CEILING(2.5,1) menghasilkan 3
=CEILING(-2.5,-2) menghasilkan –4
=CEILING(-2.5,2) menghasilkan #NUM!
=CEILING(0.234,0.01) menghasilkan 0.24
EVEN
Penjelasan : Pembulatan ke atas suatu nilai menjadi bilangan genap terdekat, menjauhi 0.
Syntax : EVEN(bilangan)
Contoh : =EVEN(1.5) menghasilkan 2
=EVEN(-1) menghasilkan –2
=EVEN(3) menghasilkan 4
=EVEN(2) menghasilkan 2
FLOOR
Penjelasan : Pembulatan ke bawah suatu nilai berdasarkan besaran tertentu, mendekati 0.
Syntax : FLOOR(bilangan,besaran_pembulatan)
Contoh : =FLOOR(2.5,1) menghasilkan 2
=FLOOR(-2.5,-2) menghasilkan –2
=FLOOR(-2.5,2) menghasilkan #NUM!
=FLOOR(0.234,0.01) menghasilkan 0.23
INT
Penjelasan : Pembulatan ke bawah suatu nilai menjadi bilangan bulat terdekat.
Syntax : INT(bilangan)
Contoh : =INT(8.9) menghasilkan 8
=INT(-8.9) menghasilkan –9
Formula ini bisa digunakan untuk mendapatkan nilai desimal suatu bilangan
positif yang terdaat di cell A1 :
=A1-INT(A1)
MOD
Penjelasan : Hasil sisa bagi suatu pembagian. Fungsi MOD ini juga bisa diekspresikan dengan
menggunakan fungsi INT : MOD(n,d) = n – d*INT(n/d).
Syntax : MOD(bilangan,pembagi)
Contoh : =MOD(11,3) menghasilkan 2
=MOD(-7,2) menghasilkan 1
=MOD(3,-2) menghasilkan –1
=MOD(-6,-4) menghasilkan –2
ODD
Penjelasan : Pembulatan ke atas suatu nilai menjadi bilangan ganjil terdekat, menjauhi 0.
Production Engineering Department
19
Programming in Microsoft Excel 2000
Syntax : ODD(bilangan)
Contoh : =ODD(1.5) menghasilkan 3
=ODD(3) menghasilkan 3
=ODD(-1) menghasilkan –1
=ODD(-2) menghasilkan –3
POWER
Penjelasan : Pemangkatan suatu bilangan. Operator “^” sebenarnya bisa digunakan untuk
menggantikan fungsi ini, seperti 5^2.
Syntax : POWER(bilangan,pangkat)
Contoh : =POWER(5,2) menghasilkan 25
=POWER(98.6,3.2) menghasilkan 2401077
=POWER(4,5/4) menghasilkan 5.656854
PRODUCT
Penjelasan : Mengalikan semua bilangan yang diberikan.
Syntax : PRODUCT(bilangan1,bilangan2,…)
Contoh : Jika cell A2:C2 berisi nilai 5, 15, dan 30, maka :
=PRODUCT(A2:C2) menghasilkan 2250
=PRODUCT(A2:C2,2) menghasilkan 4500
ROUND
Penjelasan : Membulatkan suatu bilangan pada posisi digit yang kita tentukan.
Syntax : ROUND(bilangan,posisi_digit)
Jika posisi_digit > 0, bilangan akan dibulatkan pada bagian desimalnya.
Jika posisi_digit = 0, bilangan akan dibulatkan pada bilangan bulat terdekat.
Jika posisi_digit < 0, bilangan akan dibulatkan pada bagian kiri titik desimal.
Contoh : =ROUND(2.15,1) menghasilkan 2.2
=ROUND(2.149,1) menghasilkan 2.1
=ROUND(-1.475,2) menghasilkan –1.48
=ROUND(21.5,-1) menghasilkan 20
=ROUND(-5.93,0) menghasilkan –6
=ROUND(1575,-2) menghasilkan 1600
ROUNDDOWN
Penjelasan : Membulatkan suatu bilangan ke bawah pada posisi digit yang kita tentukan.
Syntax : ROUNDDOWN(bilangan,posisi_digit)
Jika posisi_digit > 0, bilangan akan dibulatkan pada bagian desimalnya.
Jika posisi_digit = 0, bilangan akan dibulatkan pada bilangan bulat terdekat.
Jika posisi_digit < 0, bilangan akan dibulatkan pada bagian kiri titik desimal.
Contoh : =ROUNDDOWN(2.15,1) menghasilkan 2.1
=ROUNDDOWN(2.149,1) menghasilkan 2.1
=ROUNDDOWN(-1.475,2) menghasilkan –1.47
=ROUNDDOWN(21.5,-1) menghasilkan 20
=ROUNDDOWN(-5.93,0) menghasilkan –5
Production Engineering Department
20
Programming in Microsoft Excel 2000
=ROUNDDOWN(1575,-2) menghasilkan 1500
ROUNDUP
Penjelasan : Membulatkan suatu bilangan ke atas pada posisi digit yang kita tentukan.
Syntax : ROUNDUP(bilangan,posisi_digit)
Jika posisi_digit > 0, bilangan akan dibulatkan pada bagian desimalnya.
Jika posisi_digit = 0, bilangan akan dibulatkan pada bilangan bulat terdekat.
Jika posisi_digit < 0, bilangan akan dibulatkan pada bagian kiri titik desimal.
Contoh : =ROUNDUP(2.15,1) menghasilkan 2.2
=ROUNDUP(2.149,1) menghasilkan 2.2
=ROUNDUP(-1.475,2) menghasilkan –1.48
=ROUNDUP(21.5,-1) menghasilkan 30
=ROUNDUP(-5.93,0) menghasilkan –6
=ROUNDUP(1575,-2) menghasilkan 1600
SQRT
Penjelasan : Mendapatkan akar pangkat dari nilai tertentu.
Syntax : SQRT(bilangan)
Contoh : =SQRT(16) menghasilkan 4
=SQRT(-16) menghasilkan #NUM!
=SQRT(ABS(-16)) menghasilkan 4
SUBTOTAL
Penjelasan : Menghitung nilai subtotal. Sebenarnya untuk menghitung SUBTOTAL, lebih mudah
melalui menu Data Subtotals…. Perbedaan fungsi SUBTOTAL dari fungsi yang
lain (seperti SUM) adalah fungsi ini tidak akan menghitung cell yang berisi fungsi
SUBTOTAL lain, sehingga tidak akan terjadi perhitungan dua kali.
Syntax : SUBTOTAL(no_fungsi,ref1,ref2,…)
ref1, ref2, adalah alamat range (bisa sampai 29 range) di mana SUBTOTAL akan dihitung.
no_fungsi adalah bilangan antara 1 sampai 11 yang masing-masing memiliki jenis perhitungan
sebagai berikut :
no_fungsi jenis perhitungan
1 AVERAGE
2 COUNT
3 COUNTA
4 MAX
5 MIN
6 PRODUCT
7 STDDEV
8 STDDEVP
9 SUM
10 VAR
11 VARP
Contoh : =SUBTOTAL(9,C3:C5) menghasilkan nilai subtotal yang ada di range C3:C5
Production Engineering Department
21
Programming in Microsoft Excel 2000
dengan menggunakan jenis perhitungan SUM
SUM
Penjelasan : Menjumlahkan seluruh bilangan yang ada di parameter/argumen.
Syntax : SUM(bilangan1, bilangan2,…)
Contoh : =SUM(3,2) menghasilkan 5
=SUM(“3”,2,TRUE) menghasilkan 6, karena teks akan diterjemahkan terlebih
dahulu menjadi bilangan dan TRUE diterjemahkan menjadi angka 1
Jika A1:B1 berisi “3”, TRUE, maka =SUM(A1,B1,2) menghasilkan 2, karena nilai
yang terdapat di dalam cell tidak akan diterjemahkan menjadi bilangan
Jika cell A2:E2 berisi 5, 15, 30, 40, dan 50, maka :
=SUM(A2:C2) menghasilkan 50
=SUM(B2:E2, 15) menghasilkan 150
SUMIF
Baca bagian “Menggunakan fungsi COUNTIF dan SUMIF” untuk keterangan lebih lanjut.
TRUNC
Penjelasan : Menghilangkan bagian desimal suatu bilangan. TRUNC dan INT kurang lebih sama,
jika TRUNC menghilangkan bagian desimal bilangan, maka INT membulatkan
beilangan ke bawah. TRUNC dan INT berbeda ketika menggunakan bilangan
negatif: =TRUNC(-4.3) akan menghasilkan –4, tetapi =INT(-4.3) akan
menghasilkan bilangan –5.
Syntax : TRUNC(bilangan,jumlah_desimal)
Contoh : =TRUNC(8.963824) menghasilkan 8
=TRUNC(8.963824,3) menghasilkan 8.963
=TRUNC(-8.9,2) menghasilkan –8.9
Beberapa Fungsi Statistik dalam Excel
Berikut adalah fungsi statistik dalam Excel yang sering digunakan dalam pekerjaan :
AVERAGE
Penjelasan : Mendapatkan nilai rata-rata untuk seluruh nilai yang diberikan.
Syntax : AVERAGE(bilangan1, bilangan2,…)
Contoh : Jika range A1:A5 diberi nama Nilai dan berisi nilai 10, 7, 9, 27, dan 2, maka :
=AVERAGE(A1:A5) menghasilkan 11
=AVERAGE(Nilai) menghasilkan 11
=AVERAGE(A1:A5, 5) menghasilkan 10
=AVERAGE(A1:A5) sebenarnya sama dengan formula =SUM(A1:A5)/COUNT(A1:A5)
COUNT
Penjelasan : Menghitung jumlah cell atau parameter/argumen yang berisi bilangan. Parameter/
argumen yang berupa bilangan, tanggal, maupun teks yang merupakan bilangan
Production Engineering Department
22
Programming in Microsoft Excel 2000
akan dihitung; selain itu tidak akan dihitung.
Syntax : COUNT(nilai1, nilai2,…)
Contoh : Jika A1:A7 berisi “Sales”, 12/8/90, , 19, 22.24, TRUE, dan #DIV/0! maka :
=COUNT(A1:A7) menghasilkan 3
=COUNT(A4:A7) menghasilkan 2
=COUNT(A1:A7, 2) menghasilkan 4
COUNTA
Penjelasan : Menghitung jumlah cell atau parameter/argumen yang tidak kosong.
Syntax : COUNTA(nilai1, nilai2,…)
Contoh : Jika A1:A7 berisi “Sales”, 12/8/90, , 19, 22.24, TRUE, dan #DIV/0! maka :
=COUNTA(A1:A7) menghasilkan 6
=COUNTA(A4:A7) menghasilkan 4
=COUNTA(A1:A7,“Data”) menghasilkan 7
COUNTBLANK
Penjelasan : Menghitung jumlah cell atau parameter/argumen yang kosong.
Syntax : COUNTBLANK(range)
Contoh : Jika A1:A7 berisi “Sales”, 12/8/90, , 19, 22.24, TRUE, dan #DIV/0! maka :
=COUNTA(A1:A7) menghasilkan 1
COUNTIF
Baca bagian “Menggunakan fungsi COUNTIF dan SUMIF” untuk keterangan lebih lanjut.
FORECAST
Penjelasan : Menghitung, atau memperkirakan, nilai yang belum diketahui berdasarkan nilai-
nilai yang sudah diketahui. Nilai yang sudah diketahui terdiri dari nilai-x dan nilai-
y (sama seperti chart) sedangkan fungsi akan menghasilkan nilai-y yang belum
diketahui untuk nilai-x yang dimasukkan.
Syntax : FORECAST(x_dicari, y_diketahui, x_diketahui)
Contoh : Misalnya kita sebagai orang yang bertanggung jawab dalam menyusun jadwal
produksi suatu perusahaan tempe MENDOWANTM. Perusahaan kita memiliki
mesin tempe otomatis SETENGAHMATENG® sebanyak 5 buah. Kita kemudian
mengumpulkan data jumlah tempe yang dihasilkan per jam (dalam ribuan)
untuk jumlah mesin yang berbeda sebagai berikut :
A B C1 Jumlah Mesin Jumlah Tempe per Hari (x 1000)2 1 153 2 274 3 415 4 606 5 957
Karena negara sedang mengadakan TEMPEISASI, maka perusahaan menerima
pesanan sebanyak 200 ribu tempe / hari. Untuk memenuhi pesanan tersebut,
perusahaan akan menambahkan jumlah mesin yang ada menjadi 10 buah.
Tetapi kita tidak yakin apa 10 mesin dapat menghasilkan 200 ribu tempe,
karena itu kita dapat mencoba untuk memperkirakannya dengan memasukkan
formula di dalam Excel pada cell C4 sebagai berikut :
=FORECAST(10,B2:B6,A2:A6)
Production Engineering Department
23
Programming in Microsoft Excel 2000
Apakah hasilnya benar ? Berapakah jumlah mesin minimal untuk menghasilkan
minimal 200 ribu tempe / hari ?
FREQUENCY
Penjelasan : Menghitung kemunculan data dengan batasan tertentu pada daftar data yang kita
berikan dan mengembalikan kumpulan nilai berupa array vertikal. Karena fungsi
FREQUENCY ini menghasilkan nilai berupa array, maka dalam memasukkan
formula ini harus menekan Ctrl+Shift+Enter.
Syntax : FREQUENCY(array_sumber_data,array_batasan_data)
Contoh : Misalnya kita sebagai dosen mempunyai data nilai mahasiswa yang kita
masukkan di range A1:A10 (array_sumber_data) sebagai berikut 79, 54, 87, 49,
66, 91, 72, 83, 95, dan 65. Kemudian kita ingin mengelompokan nilai-nilai
tersebut berdasarkan batasan 0-65, 66-75, 76-85, dan 86-100. Maka kita
masukkan di range B1:B3 (array_batasan_data) sebagai berikut 65, 75, dan 85
(yang terakhir tidak perlu dimasukkan). Lalu kita harus membuat array formula
di range C1:C4 dan memasukkan formula =FREQUENCY(A1:A10,B1:B3).
Hasilnya kurang lebih akan seperti berikut ini :
A B C1 79 65 32 54 75 23 87 85 24 49 35 666 917 728 839 95
10 6511
Walaupun penggunaan fungsi FREQUENCY ini lumayan sulit, fungsinya akan sangat terasa
membantu sekali saat kita berhubungan dengan banyak data.
GROWTH
Penjelasan : Fungsi ini sangat menarik untuk digunakan. Ia dapat menghitung “nilai
pertumbuhan” dengan menggunakan data yang sudah diketahui. Fungsi ini akan
menghasilkan deretan nilai-y untuk deretan nilai-x yang kita masukkan dengan
bantuan nilai-x dan nilai-y yang sudah diketahui. Karena fungsi GROWTH ini
menghasilkan nilai berupa array, maka dalam memasukkan formula ini harus
menekan Ctrl+Shift+Enter.
Syntax : GROWTH(y_diketahui, x_diketahui, x_dicari)
Contoh : Kita bicara mengenai perusahaan tempe MENDOWANTM kembali. Setelah sukses
dalam tahun-tahun terakhir, terkadang perusahaan masih tetap kewalahan
dalam menangani pesanan yang terus meningkat per bulannya. Untuk itulah,
kita—yang sekarang sudah diangkat menjadi Marketing Director—dituntut
untuk bisa membaca peluang pasar. Kita kemudian menyusun data penjualan
tempe 6 bulan ke belakang (bulan 11 – 16) sebagai berikut :
A B C1 Bula
nJumlah Tempe Terjual (x 1000)
2 11 3313 12 4734 13 6905 14 10206 15 1500
Production Engineering Department
24
Programming in Microsoft Excel 2000
7 16 22008 179 18
Lalu untuk mengetahui peluang pasar 2 bulan berikutnya (bulan 17 – 18), kita
bisa memasukkan array formula di B8:B9 seperti berikut :
=GROWTH(B2:B7,A2:A7,A8:A9)
Dan kita mendapatkan bahwa peluang penjualan di bulan ke-17 adalah
3201.967 (ribu) tempe dan di bulan ke-18 adalah 4685.361 (ribu) tempe.
MAX
Penjelasan : Mencari bilangan terbesar di dalam sekumpulan data yang diberikan.
Syntax : MAX(bilangan1,bilangan2,…)
Contoh : Jika A1:A5 berisi 10, 7, 9, 27, dan 2 maka :
=MAX(A1:A5) menghasilkan 27
=MAX(A1:A5, 30) menghasilkan 30
MEDIAN
Penjelasan : Mencari median (bilangan tengah) di dalam sekumpulan data yang diberikan.
Syntax : MEDIAN(bilangan1,bilangan2,…)
Contoh : =MEDIAN(2,4,1,3,5) menghasilkan 3
=MEDIAN(2,4,1,3,5,6) menghasilkan 3.5 rata-rata dari 3 dan 4
MIN
Penjelasan : Mencari bilangan terkecil di dalam sekumpulan data yang diberikan.
Syntax : MIN(bilangan1,bilangan2,…)
Contoh : Jika A1:A5 berisi 10, 7, 9, 27, dan 2 maka :
=MIN(A1:A5) menghasilkan 2
MODE
Penjelasan : Mencari modus (bilangan yang paling sering muncul) di dalam sekumpulan data
yang diberikan.
Syntax : MODE(bilangan1,bilangan2,…)
Contoh : =MODE({5.6,4,4,3,2,4}) menghasilkan 4
PERMUT
Penjelasan : Menghitung banyaknya permutasi (banyaknya kombinasi bilangan).
Syntax : PERMUT(jumlah_bilangan,jumlah_dipilih)
Contoh : Dengan rumus ini kita bisa mengetahui banyaknya kendaraan bermotor yang
memiliki nomor polisi B xxxx QQ. Kita mengetahui bahwa nomor normal
kendaraan bermotor adalah 4 angka dengan kombinasi angka 0 sampai 9
(sebanyak 10 angka). Maka kita bisa memasukkan formula =PERMUT(10,4) dan
hasilnya adalah 5040 kendaraan motor.
QUARTILE
Penjelasan : Mencari kuartir (nilai paruh) tertentu dari sekumpulan data yang diberikan. Kuartir
diperlukan misalnya untuk menentukan 25 % pemasukkan tertinggi.
Syntax : QUARTILE(data,no_kuartir)
no_kuartir Nilai yang dihasilkan
Production Engineering Department
25
Programming in Microsoft Excel 2000
0 nilai paling kecil (sama dengan fungsi MIN)
1 kuartir pertama - 25 %
2 kuartir kedua - 50 % (sama dengan fungsi MEDIAN)
3 kuartir ketiga - 75 %
4 nilai paling besar (sama dengan fungsi MAX)
Contoh : =QUARTILE({1,2,4,7,8,9,10,12}, 1) menghasilkan 3.5
Beberapa Fungsi Tanggal dan Waktu dalam Excel
Berikut adalah fungsi tanggal dan waktu dalam Excel yang sering digunakan dalam pekerjaan :
DATE
Penjelasan : Menghasilkan tanggal berdasarkan data yang kita berikan.
Syntax : DATE(tahun,bulan,angka_hari)
Contoh : =DATE(2001,10,1) menghasilkan “10/1/2001”
DAY
Penjelasan : Mendapatkan angka hari dari tanggal yang diberikan. Nilai yang dihasilkan akan
berkisar antara 1 sampai 31.
Syntax : DAY(tanggal)
Contoh : =DAY(“4-Jan”) menghasilkan 4
=DAY(“8/11/1998”) menghasilkan 11
HOUR
Penjelasan : Mendapatkan jam dari waktu yang diberikan. Nilai yang dikembalikan berkisar
antara 0 (12:00 AM) sampai 23 (11:00 PM).
Syntax : HOUR(waktu)
waktu disini bisa berisi teks yang menyatakan waktu; bilangan desimal
(misalnya, 12 PM dinyatakan sebagai 0.5, karena dianggap setengah hari); atau
hasil dari fungsi lain.
Contoh : =HOUR(0.7) menghasilkan 16
=HOUR(“3:30:30 PM”) menghasilkan 15
MINUTE
Penjelasan : Mendapatkan menit dari waktu yang diberikan. Nilai yang dikembalikan berkisar
antara 0 sampai 59.
Syntax : MINUTE(waktu)
Contoh : =MINUTE(“4:48:00 PM”) menghasilkan 48
=MINUTE(0.01) menghasilkan 14
MONTH
Penjelasan : Mendapatkan angka bulan dari tanggal yang diberikan. Nilai yang dihasilkan akan
berkisar antara 1 (January) sampai 12 (December).
Syntax : MONTH(tanggal)
Production Engineering Department
26
Programming in Microsoft Excel 2000
Contoh : =MONTH(“6-May”) menghasilkan 5
=MONTH(“2004/04/01”) menghasilkan 4
NOW
Penjelasan : Menghasilkan tanggal dan waktu sekarang.
Syntax : NOW()
SECOND
Penjelasan : Mendapatkan detik dari waktu yang diberikan. Nilai yang dikembalikan berkisar
antara 0 sampai 59.
Syntax : SECOND(waktu)
Contoh : =SECOND(“4:48:18 PM”) menghasilkan 18
=SECOND(0.01) menghasilkan 24
TIME
Penjelasan : Menghasilkan waktu berdasarkan data yang kita berikan.
Syntax : DATE(jam,menit,detik)
Contoh : =TIME(16,48,10) menghasilkan “4:48:10 PM”
TODAY
Penjelasan : Menghasilkan tanggal sekarang.
Syntax : TODAY()
WEEKDAY
Penjelasan : Menghasilkan urutan hari dalam satu minggu dari tanggal yang kita berikan.
Syntax : WEEKDAY(tanggal,jenis)
jenis Nilai yang dihasilkan
1 (default) angka 1 (Minggu) sampai 7 (Sabtu)
2 angka 1 (Senin) sampai 7 (Minggu)
3 angka 0 (Senin) sampai 6 (Minggu)
Contoh : =WEEKDAY(“2/14/1998”) menghasilkan 7 (Sabtu)
YEAR
Penjelasan : Mendapatkan angka tahun dari tanggal yang diberikan. Nilai yang dihasilkan akan
berkisar antara 1900 sampai 9999.
Syntax : YEAR(tanggal)
Contoh : =YEAR(“7/5/1998”) menghasilkan 1998
Beberapa Fungsi Logika dalam Excel
Berikut adalah fungsi logika dalam Excel yang sering digunakan dalam pekerjaan :
AND
Penjelasan : Menghasilkan TRUE jika semua parameter/argumen bernilai TRUE. Untuk lebih
Production Engineering Department
27
Programming in Microsoft Excel 2000
jelasnya lihat bagian “Lebih lanjut dengan fungsi IF”.
Syntax : AND(kondisi1,kondisi2,…)
Contoh : lihat bagian “Lebih lanjut dengan fungsi IF”
FALSE
Penjelasan : Menghasilkan nilai logika FALSE.
Syntax : FALSE()
IF
Penjelasan : Menghasilkan suatu nilai jika kondisinya TRUE dan nilai lainnya jika kondisinya
FALSE. Untuk lebih jelasnya lihat bagian “Lebih lanjut dengan fungsi IF”.
Syntax : =IF(kondisi,nilai_jika_benar,nilai_jika_salah)
Contoh : lihat bagian “Lebih lanjut dengan fungsi IF”
NOT
Penjelasan : Membalik logika. Untuk lebih jelasnya lihat bagian “Lebih lanjut dengan fungsi IF”.
Syntax : NOT(kondisi)
Contoh : lihat bagian “Lebih lanjut dengan fungsi IF”
OR
Penjelasan : Menghasilkan FALSE jika semua parameter/argumen bernilai FALSE. Untuk lebih
jelasnya lihat bagian “Lebih lanjut dengan fungsi IF”.
Syntax : OR(kondisi1,kondisi2,…)
Contoh : lihat bagian “Lebih lanjut dengan fungsi IF”
TRUE
Penjelasan : Menghasilkan nilai logika TRUE.
Syntax : TRUE()
Beberapa Fungsi Teks dalam Excel
Berikut adalah fungsi teks dalam Excel yang sering digunakan dalam pekerjaan :
CONCATENATE
Penjelasan : Menggabungkan beberapa teks menjadi satu. Sebenarnya fungsi ini bisa
digantikan oleh operator “&”.
Syntax : CONCATENATE(teks1,teks2,…)
Contoh : Jika range A11:C11 berisi “spesies”, “ikan bandeng”, dan 32, maka :
=CONCATENATE(“Populasi untuk ”,A11,“ ”,B11,“ adalah ”,C11,“/mil”)
akan menghasilkan “Populasi untuk spesies ikan bandeng adalah 32/mil.
DOLLAR
Penjelasan : Mengubah bilangan menjadi teks dengan menggunakan format currency, dengan
pembulatan bilangan desimal sebanyak yang kita tentukan. Format yang
digunakan sebenarnya adalah $#,##0.00_);($#,##0.00).
Production Engineering Department
28
Programming in Microsoft Excel 2000
Syntax : DOLLAR(bilangan,desimal)
Contoh : =DOLLAR(1234.567, 2) menghasilkan “$1,234.57”
=DOLLAR(1234.567, -2) menghasilkan “$1,200”
=DOLLAR(-1234.567, -2) menghasilkan “($1,200)”
=DOLLAR(-0.123, 4) menghasilkan “($0.1230)”
EXACT
Penjelasan : Membandingkan dua teks dan menghasilkan nilai TRUE jika kedua teks benar-
benar sama, sebaliknya FALSE. EXACT adalah case-sensitive tetapi menghiraukan
pemformatan yang ada.
Syntax : EXACT(teks1,teks2)
Contoh : =EXACT(“excel”,“excel”) menghasilkan TRUE
=EXACT(“Excel”,“excel”) menghasilkan FALSE
=EXACT(“e xcel”, “excel”) menghasilkan FALSE
Jika kita membuat worksheet untuk orang lain dan kita ingin memastikan agar orang tersebut
memasukkan data dengan benar, kita bisa buat array formula berikut untuk memeriksanya :
{=AND(EXACT(nilai_panduan,range_yang_dibandingkan)
Misalnya saja kita memiliki range tempat orang memasukkan datanya pada B2:D4, dan pada cell
A1 terdapat kata kunci di mana orang harus memasukkan data sesuai dengan isi cell tersebut,
maka kita bisa membuat array formula di A3 sebagai berikut : =AND(EXACT(A1,B2:D4))
Untuk lebih jelasnya perhatikan worksheet di bawah ini.
A B C D1 kg2 kg kg kg3 =AND(EXACT(A1,B2:D4)) kg kg kg4 kg kg kg
Jika kita mengisi salah satu cell dengan isi selain ‘kg’, maka cell A3 akan bernilai FALSE.
Sebaliknya jika range B2:D4 berisi ‘kg’ semua, maka A3 akan bernilai TRUE.
FIND
Penjelasan : Mencari satu teks di dalam teks yang lainnya dan menghasilkan posisi karakter
pertamanya. Kita juga bisa menggunakan fungsi SEARCH untuk mencari teks
tertentu, tetapi tidak seperti SEARCH, fungsi FIND adalah case-sensitive dan tidak
mengizinkan adanya karakter wildcard. Jika teks yang dicari tidak terdapat dalam
teks yang lainnya, maka Excel akan memberikan nilai kesalahan #VALUE!.
Syntax : FIND(teks_yang_dicari,teks_tempat_mencari,posisi_mulai)
Contoh : =FIND(“c”,“Microsoft Excel”) menghasilkan 3
=FIND(“c”,“Microsoft Excel”,5) menghasilkan 13
=FIND(“Ex”,“Microsoft Excel”) menghasilkan 11
Misalkan kita mempunyai daftar komponen dan nomor serinya, dan kita ingin memisahkan nama
komponen tersebut dari nomor serinya pada setiap cell. Andaikan saja range A2:A4 berisi
“Ceramic Insulators #124-TD45-87”, “Copper Coils #12-671-6772”, dan “Variable Resistors
#116010”. Maka kita bisa membuat formula =MID(A2,1,FIND(" #",A2)-1) di cell B2 misalnya
lalu meng-copy-nya ke cell B3 dan B4. Kita juga bisa membuat array formula di range B2:B4
seperti {=MID(A6:A8,1,FIND(" #",A6:A8)-1)}.
FIXED
Penjelasan : Membulatkan suatu bilangan pada posisi digit yang kita tentukan dan
mengembalikan nilainya sebagai teks.
Production Engineering Department
29
Programming in Microsoft Excel 2000
Syntax : FIXED(bilangan,posisi_digit)
Contoh : =FIXED(1234.567,1) menghasilkan “1234.6”
=FIXED(-1234.567,-1) menghasilkan “-1230”
=FIXED(44.332) menghasilkan “44.33”
LEFT
Penjelasan : Mengambil beberapa karakter pertama (dari kiri) dalam suatu teks.
Syntax : LEFT(teks,jumlah_karakter)
Contoh : =LEFT(“Sale Price”,4) menghasilkan “Sale”
Beberapa program atau aplikasi terkadang menghasilkan bilangan negatif dengan tanda negatif
(-) di sebelah kanan nilai. Ini akan menjadi masalah ketika kita melakukan import file dari aplikasi
tersebut ke dalam Excel. Berikut adalah program untuk mengubah nilai negatif, misalnya “156-”,
yang terdapat di cell A2 agar menjadi nilai –156 :
=LEFT(A2,LEN(A2)-1)*-1
LEN
Penjelasan : Menghitung jumlah karakter yang terdapat di dalam (atau panjangnya) teks.
Syntax : LEN(teks)
Contoh : =LEN(“Phoenix Pinion”) menghasilkan 14
=LEN(“”) menghasilkan 0
LOWER
Penjelasan : Mengganti semua huruf yang terdapat di dalam teks menjadi huruf kecil.
Syntax : LOWER(teks)
Contoh : =LOWER(“PT. Gajah Tunggal”) menghasilkan “pt. gajah tunggal”
MID
Penjelasan : Mengambil beberapa karakter dari sebuah teks.
Syntax : MID(teks,posisi_mulai,banyaknya_karakter)
Contoh : =MID(“PT. Gajah Tunggal”,5,5) menghasilkan “Gajah”
=MID(“ABC”,2,5) menghasilkan “BC”
=MID(“ABC”,4,2) menghasilkan “” (teks kosong)
=MID(“ABC”,0,2) menghasilkan #VALUE!
PROPER
Penjelasan : Meng-hurufbesar-kan huruf pertama pada masing-masing kata, dan meng-
hurufkecil-kan sisanya.
Syntax : PROPER(teks)
Contoh : =PROPER(“ini adaLah JUDUL”) menghasilkan “Ini Adalah Judul”
=PROPER(“2-orang anak”) menghasilkan “2-Orang Anak”
=PROPER(“76BudGet”) menghasilkan “76Budget”
REPLACE
Penjelasan : Akan mengganti bagian pada posisi tertentu dalam suatu teks dengan bagian lain.
Syntax : REPLACE(teks,posisi_diganti,jumlah_kar_diganti,teks_pengganti)
Contoh : =REPLACE(“abcdefghijk”,6,5,“*”) menghasilkan “abcde*k”
=REPLACE(“abcdefghijk”,6,1,”12345”) menghasilkan “abcde12345ghijk”
Production Engineering Department
30
Programming in Microsoft Excel 2000
=REPLACE(“abcdefghijk”,6,3,””) menghasilkan “abcdeijk”
REPT
Penjelasan : Mengulang teks sebanyak yang kita tentukan.
Syntax : REPT(teks,banyaknya_pengulangan)
Contoh : =REPT(“+-”,3) menghasilkan “+-+-+-”
=REPT(“Sales”,2.9) menghasilkan “SalesSales”
RIGHT
Penjelasan : Mengambil beberapa karakter terakhir (dari kanan) dalam suatu teks.
Syntax : RIGHT(teks,jumlah_karakter)
Contoh : =RIGHT(“Sale Price”,3) menghasilkan “ice”
SEARCH
Penjelasan : Mencari satu teks di dalam teks yang lainnya dan menghasilkan posisi karakter
pertamanya. Fungsi ini mengizinkan adanya karakter wildcard yaitu ? untuk
mewakilkan satu karakter bebas dan * untuk mewakilkan beberapa karakter
bebas. Fungsi ini tidak case-sensitive jadi tidak akan membedakan antara huruf
besar dan huruf kecil. Jika teks yang dicari tidak terdapat dalam teks yang
lainnya, maka Excel akan memberikan nilai kesalahan #VALUE!.
Syntax : SEARCH(teks_yang_dicari,teks_tempat_mencari,posisi_mulai)
Contoh : =SEARCH(“C”,“Microsoft Excel”) menghasilkan 3
=SEARCH(“??c”,“Microsoft Excel”,5) menghasilkan 11
=SEARCH(“*c”,“Microsoft Excel”,5) menghasilkan 5
SUBSTITUTE
Penjelasan : Akan mengganti bagian tertentu dalam suatu teks dengan bagian lain. Gunakan
SUBSTITUTE jika kita ingin mengganti suatu teks dalam teks tertentu. Dan
gunakan REPLACE jika kita ingin mengganti suatu teks pada posisi tertentu dalam
teks tertentu.
Syntax : SUBSTITUTE(teks,teks_lama,teks_baru,urutan_yang_diganti)
Contoh : =SUBSTITUTE(“Sales Data”,“Sales”,“Cost”) menghasilkan “Cost Data”
=SUBSTITUTE(“1 Januari 1991”,“1”,“2”) menghasilkan “2 Januari 2992”
=SUBSTITUTE(“1 Januari 1991”,“1”,“2”,1) menghasilkan “2 Januari 1991”
TEXT
Penjelasan : Mengubah nilai menjadi teks yang memiliki format tertentu.
Syntax : TEXT(nilai,format_teks)
Contoh : =TEXT(2.715,“$0.00”) menghasilkan “$2.72”
=TEXT(“4/15/91”,“mmmm dd, yyyy”) menghasilkan “April 15, 1991”
TRIM
Penjelasan : Menghilangkan spasi lebih yang terdapat di antara kata.
Syntax : TRIM(teks)
Contoh : =TRIM(“ Saya Suka Buah ”) menghasilkan “Saya Suka Buah”
UPPER
Production Engineering Department
31
Programming in Microsoft Excel 2000
Penjelasan : Mengganti semua huruf yang terdapat di dalam teks menjadi huruf besar.
Syntax : UPPER(teks)
Contoh : =UPPER(“PT. Gajah Tunggal”) menghasilkan “PT. GAJAH TUNGGAL”
VALUE
Penjelasan : Mengubah teks yang menggambarkan nilai menjadi nilai murni. Teks dapat
diisikan dengan sembarang format nilai, tanggal atau waktu. Jika diisikan dengan
format yang tidak dikenal oleh Excel, maka nilai #VALUE! akan dihasilkan.
Syntax : VALUE(teks)
Contoh : =VALUE(“$1,000”) menghasilkan 1,000
=VALUE(“16:48:00”)-VALUE(“12:00:00”) menghasilkan 0.2.
Beberapa Fungsi LookUp dan Alamat dalam Excel
Berikut adalah fungsi LookUp dan pengalamatan cell/range dalam Excel yang sering digunakan
dalam pekerjaan :
ADDRESS
Penjelasan : Menghasilkan alamat cell sebagai teks sesuai dengan nilai kolom dan nilai baris
yang dimasukkan.
Syntax : ADDRESS(no_urut_baris,no_urut_kolom,kode_abs,a1,nama_sheet)
kode_abs Jenis pengalamatan yang dihasilkan
1 (default) absolute
2 absolute row; relative column
3 relative row; absolute column
4 relative
Jika abs diisi dengan TRUE, maka pengalamatan yang dihasilkan akan dalam
bentuk notasi A1. Jika diisi dengan FALSE, maka pengalamatan yang dihasilkan
akan dalam bentuk notasi R1C1. nama_sheet bisa diisi jika ingin
mencantumkan nama worksheet pada hasilnya
Contoh : =ADDRESS(2,3) menghasilkan “$C$2”
=ADDRESS(2,3,2) menghasilkan “C$2”
=ADDRESS(2,3,2,FALSE) menghasilkan “R2C[3]”
=ADDRESS(2,3,1,FALSE,“[Book1]Sheet1”) hasilkan “[Book1]Sheet1!R2C3”
=ADDRESS(2,3,1,FALSE,“EXCEL SHEET”) hasilkan “‘EXCEL SHEET’!R2C3”
AREAS
Penjelasan : Menghasilkan jumlah area (cell dan/atau range) dalam suatu alamat.
Syntax : AREAS(alamat)
Contoh : =AREAS((B2:D4,E5,F6:I9)) menghasilkan 3
Jika nama Harga mengacu pada area B1:D4, B2, dan E1:E10, maka :
=AREAS(Harga) menghasilkan 3
CHOOSE
Penjelasan : Menghasilkan nilai tertentu sesuai dengan daftar parameter/argumen. CHOOSE
Production Engineering Department
32
Programming in Microsoft Excel 2000
bisa digunakan untuk memilih satu di antara 29 nilai berdasarkan urutan yang
akan diambil.
Syntax : CHOOSE(urutan_index,nilai1,nilai2,…)
Contoh : =CHOOSE(2,“kg”,“cm”,“cc”,“pcs”) menghasilkan “cm”
=SUM(A1:CHOOSE(3,A10,A20,A30)) menghasilkan =SUM(A1:A30)
Jika SLama adalah nama yang mengacu pada nilai 10000, maka :
=CHOOSE(2,SBaru,SLama,SBudget) menghasilkan 10000
COLUMN
Penjelasan : Menghasilkan nomor kolom berdasarkan alamat yang diberikan.
Syntax : COLUMN(alamat)
Contoh : =COLUMN(A3) menghasilkan 1
Jika dibuat sebagai array formula di 3 cell berderet horizontal, maka :
=COLUMN(A3:C5) menghasilkan {1,2,3}
Jika fungsi COLUMN dimasukkan di cell C5, maka :
=COLUMN() sama dengan =COLUMN(C5) dan menghasilkan 3
COLUMNS
Penjelasan : Menghasilkan banyaknya kolom dalam alamat yang diberikan.
Syntax : COLUMNS(alamat)
Contoh : =COLUMNS(A1:C4) menghasilkan 3
=COLUMNS({1,2,3;4,5,6}) menghasilkan 3
CATATAN : Tanda , (koma) digunakan sebagai pemisah kolom dan tanda ; (titik koma) digunakan
sebagai pemisah baris.
HLOOKUP
Penjelasan : Mencari nilai yang terdapat di baris paling atas dari suatu tabel, dan menghasilkan
nilai yang terdapat pada kolom yang sama (dengan nilai yang kita cari). Gunakan
HLOOKUP jika nilai yang dibandingkan terdapat pada baris paling atas tabel dan
ingin mencari data pada baris di bawahnya. Gunakan VLOOKUP jika nilai yang
dibandingkan terdapat pada kolom paling kiri tabel dan ingin mencari data pada
kolom di kanannya. Fungsi HLOOKUP ini tidak case-sensitive.
Syntax : HLOOKUP(nilai_yang_dicari, tabel,baris_diinginkan,range_lookup)
tabel harus diisi dengan nama atau alamat sumber data. Nilai pada baris
pertama pada tabel dapat berupa teks, bilangan, atau nilai logika. Jika
range_lookup diisi dengan TRUE, maka nilai pada baris paling atas harus dalam
keadaan ascending order (urut dari nilai terkecil ke nilai terbesar: …-2,-1,0,1, 2,
…, A-Z). Jika range_lookup diisi dengan FALSE, maka nilai pada baris paling atas
tidak harus dalam keadaan urut.
baris_diinginkan diisi dengan nomor baris yang datanya akan diambil. Jika
diisi dengan 1, maka nilai yang dikembalikan akan diambil dari baris pertama
dalam tabel, dan begitu juga seterusnya. Jika diisi dengan nilai yang lebih kecil
dari 1, maka HLOOKUP akan mengembalikan nilai #VALUE!; sedangkan jika diisi
dengan nilai yang lebih besar dari jumlah baris yang ada dalam tabel, maka
HLOOKUP akan menghasilkan nilai #REF!.
range_lookup bisa diisi dengan TRUE (default) maka HLOOKUP akan mencari
dengan metode approximate match, dimana jika nilai_yang_dicari tidak
ditemukan dalam tabel, maka yang akan dihasilkan adalah nilai terdekat
Production Engineering Department
33
Programming in Microsoft Excel 2000
dengan nilai_yang_dicari (nilai terbesar yang kurang dari nilai_yang_dicari). Jika
diisi dengan FALSE maka HLOOKUP akan mencari dengan metode exact match,
dimana jika nilai_yang_dicari tidak ditemukan dalam tabel, maka yang akan
dihasilkan adalah nilai #N/A.
Contoh : Seandainya kita memiliki worksheet seperti di bawah ini :
A B C D1 nama Amir Budi Cahyo2 umur 21 24 223 status bujangan menikah bujangan45 amir6
Lalu cell A6 diisi dengan formula berikut :
=HLOOKUP(“Budi”,B1:D3,3) menghasilkan “menikah”
=HLOOKUP(A5,B1:D3,2,TRUE) menghasilkan 21
=HLOOKUP(“Agung”,B1:D3,3) menghasilkan #N/A
=HLOOKUP(“bagyo”,B1:D3,2,TRUE) menghasilkan 21
=HLOOKUP(“Cica”,B1:D3,2,FALSE) menghasilkan #N/A
Tabel juga dapat berbentuk array yang berisi nilai konstan, seperti :
=HLOOKUP(3,{1,2,3;“a”,“b”,“c”;“d”,“e”,“f”},2,TRUE) menghasilkan “c”
CATATAN : Tanda , (koma) digunakan sebagai pemisah kolom dan tanda ; (titik koma) digunakan
sebagai pemisah baris.
MATCH
Penjelasan : Mencari urutan posisi sebuah nilai yang terdapat pada tabel. Gunakan fungsi
MATCH, dan bukannya HLOOKUP atau VLOOKUP, ketika yang kita butuhkan
adalah posisi nilai dan bukan nilai itu sendiri. Fungsi ini tidak case-sensitive.
Syntax : MATCH(nilai_yang_dicari,tabel,jenis)
jenis metode pencarian yang dilakukan
1
(default)
mencari nilai terbesar yang lebih kecil dari atau sama dengan
nilai_yang_dicari. Tabel harus dalam keadaan ascending order
(urut dari nilai terkecil ke nilai terbesar: …-2,-1,0,1,2,…, A-Z).
0mencari nilai yang benar-benar sama dengan nilai_yang_dicari.
Tabel tidak harus dalam keadaan terurut.
-1
mencari nilai terkecil yang lebih besar dari atau sama dengan
nilai_yang_dicari. Tabel harus dalam keadaan descending order
(urut dari nilai terkecil ke nilai terbesar: …2,1,0,-1,-2,…, Z-A).
Jika MATCH tidak berhasil menemukan nilai_yang_dicari, maka nilai yang akan
dihasilkan adalah #N/A. Jika jenis diisi dengan 0 dan nilai_yang_dicari berjenis
teks, maka kita bisa menggunakan karakter wildcard (? untuk mewakilkan satu
karakter bebas dan * untuk mewakilkan beberapa karakter bebas).
Contoh : Jika kita memiliki worksheet seperti di bawah ini :
A B C1 Pendapatan (Yen) U.S. Dollar Tax Rate2 JPY 5,365,000.00 $37,000 21.50%3 JPY 5,510,000.00 $38,000 21.67%4 JPY 5,655,000.00 $39,000 21.84%5 JPY 5,800,000.00 $40,000 21.99%6 JPY 5,945,000.00 $41,000 22.14%
=MATCH(39000,B2:B6,1) menghasilkan 3
=MATCH(38000,B2:B6,0) menghasilkan 2
=MATCH(39000,B2:B6,-1) menghasilkan #N/A, karena range B2:B8 tidak dalam
Production Engineering Department
34
Programming in Microsoft Excel 2000
keadaan descending order, melainkan ascending order
Jika range A2:A8 diberi nama Yen, range A2:C8 diberi nama YenDollar, dan
sebuah cell yang berisi nilai JPY 6,031,126.33 diberi nama MyIncome, maka :
=“Your tax rate is ” & VLOOKUP(MyIncome,YenDollar,3) & “, which
places you in tax bracket number ” & MATCH(MyIncome,Yen) & “.”
menghasilkan “Your tax rate is 22.41%, which places you in tax bracket number
7.”
OFFSET
Penjelasan : Mereferensikan ke alamat cell/range tertentu berdasarkan posisi baris dan kolom
dari cell/range tertentu. Referensi yang dihasilkan dapat berupa cell tunggal atau
range. Kita juga bisa menentukan jumlah baris dan kolom yang ingin dihasilkan.
Syntax : OFFSET(alamat_awal,pos_baris,pos_kolom,tinggi,lebar)
alamat_awal harus diisi dengan alamat cell/range awal sebagai panduan.
alamat_awal harus diisi dengan alamat cell/range yang berdekatan; jika tidak
maka OFFSET akan menghasilkan nilai #VALUE!.
pos_baris diisi dengan jumlah baris pergerakan, ke atas (bilangan negatif) atau
ke bawah (bilangan positif). pos_kolom diisi dengan jumlah kolom pergerakan,
ke kiri (bilangan negatif) atau ke kanan (bilangan positif). Jika pos_baris dan
pos_kolom melewati batas-batas sebuah worksheet, maka OFFSET akan
menghasilkan nilai #REF!
tinggi dan lebar masing-masing menyatakan jumlah baris dan jumlah kolom
yang ingin dihasilkan. Jika tinggi dan lebar dihilangkan, maka OFFSET akan
menjadikan hasilnya memiliki baris dan kolom yang sama dengan alamat_awal.
Contoh : =OFFSET(C3,2,3,1,1) menghasilkan isi cell F5
=OFFSET(C3:E5,-1,0,3,3) menghasilkan isi cell C2:E4
=OFFSET(C3:E5,0,-3,3,3) menghasilkan isi cell #REF!
=SUM(OFFSET(C2,1,2,3,1)) sama dengan =SUM(E3:E5)
ROW
Penjelasan : Menghasilkan nomor baris berdasarkan alamat yang diberikan.
Syntax : ROW(alamat)
Contoh : =ROW(A3) menghasilkan 3
Jika dibuat sebagai array formula di 3 cell berderet horizontal, maka :
=ROW(A3:C5) menghasilkan {3,4,5}
Jika fungsi ROW dimasukkan di cell C5, maka :
=ROW() sama dengan =ROW(C5) dan menghasilkan 5
ROWS
Penjelasan : Menghasilkan banyaknya baris dalam alamat yang diberikan.
Syntax : ROWS(alamat)
Contoh : =ROWS(A1:C4) menghasilkan 4
=ROWS({1,2,3;4,5,6}) menghasilkan 2
CATATAN : Tanda , (koma) digunakan sebagai pemisah kolom dan tanda ; (titik koma) digunakan
sebagai pemisah baris.
TRANSPOSE
Penjelasan : Mengubah range vertical menjadi range horizontal, dan begitu juga sebaliknya.
Production Engineering Department
35
Programming in Microsoft Excel 2000
TRANSPOSE harus dimasukkan sebagai array formula.
Syntax : TRANSPOSE(alamat)
Contoh : Misalkan kita memiliki range A1:C1 berisi nilai 1, 2, dan 3. Dan jika kita
memasukkan array formula berikut ke dalam range A3:A5 :
=TRANSPOSE(A1:C1) maka range A3:A5 akan berisi nilai 1, 2, dan 3.
VLOOKUP
Penjelasan : Mencari nilai yang terdapat di kolom paling kiri dari suatu tabel, dan menghasilkan
nilai yang terdapat pada baris yang sama (dengan nilai yang kita cari). Gunakan
HLOOKUP jika nilai yang dibandingkan terdapat pada baris paling atas tabel dan
ingin mencari data pada baris di bawahnya. Gunakan VLOOKUP jika nilai yang
dibandingkan terdapat pada kolom paling kiri tabel dan ingin mencari data pada
kolom di kanannya. Fungsi VLOOKUP ini tidak case-sensitive.
Syntax : VLOOKUP(nilai_yang_dicari, tabel,kolom_diinginkan,range_lookup)
tabel harus diisi dengan nama atau alamat sumber data. Nilai pada kolom
pertama pada tabel dapat berupa teks, bilangan, atau nilai logika. Jika
range_lookup diisi dengan TRUE, maka nilai pada kolom paling kiri harus dalam
keadaan ascending order (urut dari nilai terkecil ke nilai terbesar: …-2,-1,0,1, 2,
…, A-Z). Jika range_lookup diisi dengan FALSE, maka nilai pada kolom paling kiri
tidak harus dalam keadaan urut.
baris_diinginkan diisi dengan nomor kolom yang datanya akan diambil. Jika
diisi dengan 1, maka nilai yang dikembalikan akan diambil dari kolom pertama
dalam tabel, dan begitu juga seterusnya. Jika diisi dengan nilai yang lebih kecil
dari 1, maka VLOOKUP akan mengembalikan nilai #VALUE!; sedangkan jika diisi
dengan nilai yang lebih besar dari jumlah kolom yang ada dalam tabel, maka
VLOOKUP akan menghasilkan nilai #REF!.
range_lookup bisa diisi dengan TRUE (default) maka VLOOKUP akan mencari
dengan metode approximate match, dimana jika nilai_yang_dicari tidak
ditemukan dalam tabel, maka yang akan dihasilkan adalah nilai terdekat
dengan nilai_yang_dicari (nilai terbesar yang kurang dari nilai_yang_dicari). Jika
diisi dengan FALSE maka VLOOKUP akan mencari dengan metode exact match,
dimana jika nilai_yang_dicari tidak ditemukan dalam tabel, maka yang akan
dihasilkan adalah nilai #N/A.
Contoh : Seandainya kita memiliki worksheet seperti di bawah ini :
A B C1 pn# u/m qty2 ABDAA kg 123003 NAAAA roll 504 NRAAB kg 258005 WTAAAAAZ pcs 12500067 NRAAAB
Lalu cell A6 diisi dengan formula berikut :
=VLOOKUP(“NAAAA”,A2:C5,3) menghasilkan 50
=VLOOKUP(A7,A2:C5,2,TRUE) menghasilkan “kg”
=VLOOKUP(“Abcaa”,A2:C5,3) menghasilkan #N/A
=VLOOKUP(“nraaa”,A2:C5,2,TRUE) menghasilkan roll
=VLOOKUP(“NRAAC”,A2:C5,2,FALSE) menghasilkan #N/A
Production Engineering Department
36
Programming in Microsoft Excel 2000
Beberapa Fungsi Information dalam Excel
Berikut adalah fungsi Information dalam Excel yang sering digunakan dalam pekerjaan :
CELL
Penjelasan : Menghasilkan informasi yang berisi formatting, lokasi, atau isi cell paling kiri atas
dari referensi alamat yang kita masukkan. Fungsi CELL ini biasanya digunakan
untuk menjaga kompatibilitas dengan pengolah lembar kerja (spreadsheet) lain,
seperti Lotus 123, Quattro Pro, dan lain-lain.
Syntax : CELL(jenis_info,alamat)
jenis_info nilai yang dikembalikan
“address” alamat cell pertama dalam alamat, sebagai teks.
“col” nomor kolom cell pertama dalam alamat
“color”1 jika cell diformat warna untuk bilangan negatif; sebaliknya
akan mengembalikan 0 (nol).
“contents” isi dari cell pertama dalam alamat
“filename”nama file (full path) alamat yang bersangkutan. Mengem-
balikan teks kosong (“”) jika filenya belum disimpan.
“format”
teks yang merupakan number format dari cell yang
bersangkutan.Teks untuk masing-masing format dapat
dilihat pada tabel di bawah. Jika cell diformat warna untuk
bilangan negatif, maka pada akhir teks akan ditambahkan
karakter “-”. Jika cell diformat menggunakan tanda kurung
untuk bilangan positif atau bilangan lain, maka pada akhir
teks akan ditambahkan karakter “()”.
“parentheses”1 jika cell diformat menggunakan tanda kurung untuk
bilangan positif atau bilangan lain, sebaliknya 0 (nol).
“prefix”
teks yang merupakan label prefix dari cell yang bersang-
kutan. Mengembalikan tanda kutip tunggal (') jika cell berisi
teks rata kiri, kutip ganda (") jika cell berisi teks rata kanan,
caret (^) jika cell berisi teks rata tengah, backslash (\) jika
cell berisi pengulangan karakter, dan teks kosong (“”) jika
cell berisi yang lain.
“protect” 0 jika cell tidak dikunci dan 1 jika cell dikunci.
“row” nomor baris cell pertama dalam alamat
“type”
teks yang merupakan jenis data yang terdapat dalam cell.
Mengembalikan “b” (blank) jika cellnya kosong, “l” (label)
jika cell berisi teks, dan “v” (value) jika berisi yang lain.
width” lebar cell dibulatkan ke bawah
alamat disini adalah cell yang kita ingin dapatkan informasinya. Jika
dikosongkan, maka akan diambil cell yang terakhir kali kita ubah.
Daftar berikut ini adalah nilai yang akan dikembalikan oleh fungsi CELL jika
jenis_info diisi dengan “format” dan alamat adalah cell yang berisi bilangan
dan memiliki number format (yang sudah disediakan Excel).
Jika formatnya adalah CELL menghasilkan
Production Engineering Department
37
Programming in Microsoft Excel 2000
General "G"
0 "F0"
#,##0 ",0"
0.00 "F2"
#,##0.00 ",2"
$#,##0_);($#,##0) "C0'
$#,##0_);[Red]($#,##0) "C0-"
$#,##0.00_);($#,##0.00) "C2"
$#,##0.00_);[Red]($#,##0.00) "C2-"
0% "P0"
0.00% "P2"
0.00E+00 "S2"
# ?/? atau # ??/?? "G"
m/d/yy atau m/d/yy h:mm atau mm/dd/yy
"D4"
d-mmm-yy atau dd-mmm-yy "D1"
d-mmm atau dd-mmm "D2"
mmm-yy "D3"
mm/dd "D5"
h:mm AM/PM "D7"
h:mm:ss AM/PM "D6"
h:mm "D9"
h:mm:ss "D8"
Jika info_type diisi dengan “format”, dan cell baru diformat kemudian dengan
custom format, maka kita harus melakukan kalkulasi ulang (calculation) agar
hasil perubahan dikenal oleh fungsi CELL.
Contoh : =CELL(“row”,A20) menghasilkan 20
Jika cell B12 diformat “d-mmm”, maka =CELL(“format”,B12) hasilkan “D2”
ERROR.TYPE
Penjelasan : Menghasilkan bilangan berdasarkan nilai kesalahan yang diberikan. Kita dapat
menggunakan fungsi ini dan menggabungkannya dengan fungsi IF untuk
memeriksa nilai kesalahan dan menampilkan pesan yang kita tentukan.
Syntax : ERROR.TYPE(nilai_kesalahan)
nilai_kesalahan nilai yang dikembalikan
#NULL! 1
#DIV/0! 2
#VALUE! 3
#REF! 4
#NAME? 5
#NUM! 6
#N/A 7
selain di atas #N/A
Contoh : Formula berikut ini digunakan untuk memeriksa cell E50 apakah isinya nilai
kesalahan #NULL! atay #DIV/0!. Jika benar, maka tampilkan pesan kesalahan.
Production Engineering Department
38
Programming in Microsoft Excel 2000
=IF(ERROR.TYPE(E50)<3,CHOOSE(ERROR.TYPE(E50),“Range tidak terhu-
bung”,“Terjadi pembagian dengan 0”))
INFO
Penjelasan : Menghasilkan informasi yang berhubungan dengan lingkungan operasi yang aktif.
Syntax : INFO(jenis_info)
jenis_info nilai yang dikembalikan
“directory” path dari directory/folder yang aktif.
“memavail” jumlah memory yang bisa digunakan, dalam byte
“memused”jumlah memory yang digunakan untuk keperluan
data di Excel.
“numfile” jumlah worksheet yang aktif.
“origin”alamat (dalam bentuk absolut) paling kiri atas
dari worksheet yang aktif.
“osversion” nama dan versi sistem operasi yang digunakan.
“recalc” mode Calculation (“Automatic” atau “Manual”).
“release” versi dari Microsoft Excel, sebagai teks.
“system”
nama dari lingkungan operasi.
Macintosh = “mac”
Windows = “pcdos”
“totmem”total memory yang ada di komputer (termasuk
yang sedang digunakan), dalam byte.
Contoh : Formula berikut ini akan menghasilkan nilai 2 jika ada dua worksheet yang
dibuka bersamaan : =INFO(“numfile”)
IS…
Penjelasan : Terdapat sembilan jenis fungsi IS… yang digunakan untuk memeriksa jenis atau
keadaan suatu nilai atau alamat. Masing-masing fungsi akan menghasilkan nilai
TRUE atau FLASE tergantung dari masukkan yang diberikan. Sebagai contoh
fungsi ISBLANK akan menghasilkan nilai TRUE jika cell yang diberikan kosong.
Syntax : ISBLANK(nilai)
ISERR(nilai)
ISERROR(nilai)
ISLOGICAL(nilai)
ISNA(nilai)
ISNONTEXT(nilai)
ISNUMBER(nilai)
ISREF(nilai)
ISTEXT(nilai)
nilai yang kita masukkan dapat berupa cell kosong, nilai
kesalahan, logika, teks, bilangan, atau nama/alamat cell/range.
fungsi menghasilkan TRUE jika
ISBLANK nilai/cell-nya kosong.
ISERR memiliki nilai kesalahan selain #N/A.
ISERRORmemiliki nilai kesalahan #N/A, #VALUE!, #REF!, #DIV/0!,
#NUM!, #NAME?, atau #NULL!.
ISLOGICAL memiliki nilai berjenis logika (TRUE atau FALSE).
Production Engineering Department
39
Programming in Microsoft Excel 2000
ISNA memiliki nilai kesalahan #N/A.
ISNONTEXTmemiliki nilai berjenis selain teks. Jika nilainya kosong maka
fungsi ini juga akan menghasilkan nilai TRUE.
ISNUMBER memiliki nilai berjenis bilangan.
ISREF memiliki nilai berjenis referensi/alamat.
ISTEXT memiliki nilai berjenis teks.
Contoh : =ISNUMBER(19) menghasilkan TRUE
=ISNUMBER(“19”) menghasilkan FALSE
=ISLOGICAL(TRUE) menghasilkan TRUE
=ISLOGICAL(“TRUE”) menghasilkan FALSE
Jika range C1:C5 berisi nilai “Gajah”,“Tunggal”, #REF!,$330.92, #N/A, maka :
=ISBLANK(C1) menghasilkan FALSE
=ISTEXT(C2) menghasilkan TRUE
=ISERROR(C3) menghasilkan TRUE
=ISNA(C3) menghasilkan FALSE
=ISERR(C5) menghasilkan FALSE
=ISNUMBER(C4) menghasilkan TRUE (jika $330.92 dimasukkan sebagai bilangan
dan bukan teks)
=ISREF(Daerah1) menghasilkan TRUE (jika Daerah1 adalah nama range)
Contoh yang lain adalah jika kita, misalnya, ingin menghitung rata-rata range A1:A4, tetapi kita
tidak yakin apakah semua cell di A1:A4 berisi bilangan. Formula =AVERAGE(A1:A4) akan
menghasilkan #DIV/0! jika di range A1:A4 sama sekali tidak terdapat bilangan. Untuk mengatasi
hal ini kita bisa menggunakan formula di bawah ini :
=IF(ISERROR(AVERAGE(A1:A4)),“Tidak ada bilangan”,AVERAGE(A1:A4))
TYPE
Penjelasan : Mengembalikan jenis data dari nilai yang kita berikan. TYPE ini sangat berfungsi
ketika kita akan menggunakan fungsi yang bisa menerima jenis data yang
berbeda-beda. Kita juga bisa menggunakan TYPE ini untuk mencari tahu jenis
data yang dikembalikan oleh fungsi atau formula tertentu. Kita tidak bisa
menentukan apakah suatu cell berisi formula atau tidak, kita hanya bisa
menentukan jenis nilai yang dihasilkan oleh formula tersebut.
Syntax : TYPE(nilai)
nilai yang kita masukkan dapat berupa nilai kesalahan, logika,
teks, bilangan, atau nama/alamat cell/range.
jenis nilai nilai yang dihasilkan
bilangan 1
teks 2
logika 4
kesalahan 16
array 64
Contoh : Jika cell A1 berisi “Kodok”, maka :
=TYPE(A1) atau =TYPE(“Smith”) menghasilkan 2
=TYPE(2+A1) sama dengan =TYPE(#VALUE!) menghasilkan 16
=TYPE({1,2,3,4}) menghasilkan 64
Production Engineering Department
40
Programming in Microsoft Excel 2000
MegaFormula
Terkadang lembar kerja yang kita buat memerlukan intermediate formula (formula perantara)
untuk menghasilkan keluaran tertentu. Misalnya untuk menghasilkan nilai Z, kita harus membuat
formula dengan nilai A yang menghasilkan nilai B, lalu kita buat formula lagi dengan nilai B yang
menghasilkan nilai C, dan begitu seterusnya hingga menghasilkan nilai Z. Dengan kata lain,
sebuah formula terkadang bergantung kepada hasil dari formula lain. Setelah kita—mungkin—
merasa yakin bahwa seluruh formula yang kita buat benar, kita bisa saja menghilangkan semua
intermediate formula dan menciptakan satu megaformula, yaitu satu formula besar yang
merupakan gabungan dari banyak formula. Keuntungannya ? Kita bisa menghemat jumlah cell
yang terpakai, dan perhitungan (calculation) yang dilakukan oleh Excel akan berjalan lebih cepat.
Lagipula, tentu orang lain akan kagum terhadap kemampuan membuat formula yang kita miliki.
Kerugiannya ? Formulanya menjadi rumit dan sulit untuk dimengerti dan diubah.
Perhatikan contoh berikut: Bayangkan kita memiliki worksheet yang berisi nama-nama orang lalu
kita diminta untuk menghilangkan nama tengah masing-masing orang. Dengan mengubah satu
persatu cell tentunya akan memakan waktu banyak, dan penyelesaian satu-satunya adalah
dengan menggunakan formula. Dan formula yang dibutuhkan melibatkan beberapa intermediate
formula. Coba lihat worksheet di bawah ini yang terdiri dari 6 intermediate formula (kolom B
sampai kolom G). Nama awalnya terdapat di kolom A dan hasil akhirnya terdapat di kolom H.
A B C D E F G H1 John Q. Public John Q. Public 5 8 8 John Public John Public2 Bob Smith Bob Smith 4 #VALUE
!4 Bob Smith Bob Smith
3 Jill Marie Jackson Jill Marie Jackson 5 11 11 Jill Jackson Jill Jackson4 Amy Young Amy Young 4 #VALUE
!4 Amy Young Amy Young
5 R.J. Smith R.J. Smith 5 #VALUE!
5 R.J. Smith R.J. Smith
6 R. Jay Smith R. Jay Smith 3 7 7 R. Smith R. Smith
Intermediate Formula yang ditulis pada baris pertamaCell Intermediate Formula MaksudB1 =TRIM(A1) Menghilangkan spasi lebihC1 =FIND(“ ”,B1,1) Mencari spasi pertamaD1 =FIND(“ ”,B1,C1+1) Mencari spasi keduaE1 =IF(ISERROR(D1),C1,D1) Gunakan spasi pertama jika tidak ada spasi keduaF1 =LEFT(B1,C1) Ambil nama depanG1 =RIGHT(B1,LEN(B1)-E1) Ambil nama belakangH1 =F1&G1 Gabungkan kedua nama
Sebenarnya kita bisa saja menghilangkan seluruh intermediate formula lalu menciptakan
megaformula yang langsung menghasilkan nilai akhir yang diinginkan sebagai berikut :
=LEFT(TRIM(A1),FIND(“ ”,TRIM(A1),1))&RIGHT(TRIM(A1),LEN(TRIM(A1))-
IF(ISERROR(FIND(“ ”,TRIM(A1),FIND(“ ”,TRIM(A1),1)+1)),
FIND(“ ”,TRIM(A1),1),FIND(“ ”,TRIM(A1),FIND(“ ”,TRIM(A1),1)+1)))
Ketika kita sudah puas dan yakin bahwa megaformula yang kita ciptakan berjalan dengan baik,
kita bisa menghapus semua intermediate formula yang ada karena sudah tidak digunakan lagi.
Megaformula di atas melakukan hal yang sama dengan semua intermediate formula yang ada—
walaupun terlihat sangat sulit sekali dipahami maksudnya, bahkan oleh penulis sekalipun. Untuk
lebih amannya, copy-lah seluruh intermediate formula ke tempat lain sehingga jika ada
Production Engineering Department
41
Programming in Microsoft Excel 2000
perubahan atau terdapat kesalahan pada formula yang kita susun, kita dapat dengan mudah
mengubahnya.
CATATAN …Untuk menciptakan megaformula, mulailah dari formula yang terakhir lalu ubahlah setiap parameter yang ada menjadi urutan
formula sebelumnya dan begitu seterusnya hingga dicapai cell yang berisi nilai awal atau nilai yang tidak bisa diurai lagi.
Keterbatasan megaformula adalah bahwa formula dalam Excel hanya mampu menampung 1024 karakter.
Mungkin kita beranggapan bahwa penggunaan megaformula akan memperlambat proses
perhitungan yang dilakukan oleh Excel, karena megaformula terlihat sangat kompleks.
Sebenarnya tidak juga. Untuk lebih jelasnya lihatlah perbandingan pada tabel di bawah ini yang
memperbandingkan worksheet yang menggunakan megaformula sebanyak 65,536 kali,
worksheet yang menggunakan 6 intermediate formula, dan yang menggunakan fungsi VBA.
Intermediate Formula versus MegaformulaMetode Waktu perhitungan Ukuran fileIntermediate formula 7 detik 23.2 MBMegaformula 5 detik 8.2 MBfungsi di VBA 66 detik 800 MB
LATIHAN
Jika kita memiliki worksheet yang berisi status stok harian material X, seperti ini :
A B C D1 Tanggal Masuk Keluar Stok2 1/1/2002 503 2/1/2001 20 30 404 3/1/20015 4/1/20016 5/1/20017 6/1/2001
Buatlah formula untuk mengisi kolom Stok secara otomatis jika kolom Masuk dan
kolom Keluar diisi secara manual !
Jika kita memiliki daftar material sebagai berikut :
A B C1 Product Class Part Number Nama Material2 AIAR BRDCA AIAR BRDCA3 AIBF CBAAC4 AIDC ALCBA5 AIEC SCJCA6 AIGV VBAMA
Buatlah formula untuk menggabungkan nama Product Class dan Part Number
dan tampilkan hasilnya di kolom Nama Material !
Buatlah sebuah formula untuk menampilkan tanggal hari ini dengan bentuk “Tanggal Hari Ini
Adalah : 1-Jan-2002” !
Jika kita memiliki daftar kenaikan nilai berdasarkan persentase sebagai berikut :
A B C1 Persentase : 5 %2 103 10.5
Buatlah daftar otomatis kenaikan nilai (10 baris saja) berdasarkan isi cell C1 !
Perhatikan worksheet daftar komputer di bawah ini :
A B C D1 PC Code Statu
sActiv
eRAM
Production Engineering Department
42
Programming in Microsoft Excel 2000
2 PC001 W A 32 MB3 PC002 A NA 16 MB
Buatlah formula untuk menghitung jumlah Workstation (Status=“W”) dan Stand
Alone (Status=“A”) ! Buat juga formula untuk mengetahui jumlah Workstation yang
aktif (Active=“A”) dan yang tidak aktif (Active=“NA”) ! Setelah itu, hitung total RAM
yang ada untuk Stand Alone yang sudah tidak aktif lagi !
Buatlah array formula untuk menghitung jumlah baris yang berada di range B5:C25 dimana
range B5:B25 harus berisi teks “Aku” dan range C5:C25 berisi teks “Dia” !
Seorang staff Gudang Bahan diharuskan membuat lembar order material untuk bulan ini yang
terdiri dari data :
rata-rata pemakaian bulan lalu (AC)
stok bulan lalu (LS)
safety stock per material dalam persentase (SS)
jumlah material yang harus diorder untuk bulan ini (O)
Jika kondisi untuk pengorderan material adalah sebagai berikut :
“Jika jumlah AC ditambah dengan jumlah SS lebih besar
dari LS, maka lakukan pengorderan dimana O sama
dengan AC ditambah dengan SS dikurangi LS. Sebaliknya
jangan lakukan pengorderan.”
Buatlah daftar perhitungan pengorderan 5 material seperti kondisi di atas !
Sekarang kita akan mencoba untuk membuat sebuah worksheet yang berisi rencana produksi
satu shift yang biasa disusun oleh PPC. Kita diharapkan membuat sebuah sheet yang berisi
data sebagai berikut :
safety stock untuk seluruh ban (SS)
kebutuhan masing-masing ban (REQ)
stok masing-masing ban yang ada (S)
rencana produksi hasil perhitungan sementara/kasar (CSC), yang memiliki ketentuan
perhitungan sebagai berikut :
“Jika S lebih besar dari REQ ditambah SS maka jangan buat
rencana produksi, sebaliknya buat rencana produksi dengan
perhitungan REQ ditambah SS dikurangi S.”
rencana produksi akhir (SCH) yang akan menentukan berapa jumlah ban yang akan
diproduksi, dimana memiliki perhitungan :
“Jika total S dari seluruh ban yang ada kurang dari 1 maka isi
SCH dengan nilai 0. Jika (REQ kurang dari 1 dan S lebih besar
dari 0, maka isi SCH dengan nilai “#Stock?”. Jika CSC kurang
dari atau sama dengan 1 maka isi SCH dengan nilai 1. Jika tidak
memenuhi ketiga kriteria sebelumnya, maka isi SCH dengan
CSC.
Sekarang susunlah formula-formula rencana produksi yang dibutuhkan worksheet di
atas untuk, misalkan, 5 jenis ban saja !
(credits given to ppc plant d for their inputs)
Production Engineering Department
43
Programming in Microsoft Excel 2000
Modul 2 : Pengenalan VBA
VBA (Visual Basic for Application) merupakan bahasa pemrograman yang bisa digunakan
untuk melakukan manipulasi objek dan proses yang terdapat di dalam Excel. VBA merupakan
kembangan dari bahasa BASIC (Beginner’s All-purpose Symbolic Instruction Code) yang dari
namanya pun kita sudah ketahui bukan bahasa profesional. BASIC mengalami ‘evolusi’ dan
perkembangan yang pesat khususnya tahun 1991 ketika Microsoft memperkenalkan bahasa
Visual Basic untuk sistem operasi Windows.
Excel 5 merupakan produk pertama yang menggunakan VBA sebagai bahasa pemrogramannya.
VBA dikenal sebagai ‘bahasa ibu’ untuk program-program aplikasi Microsoft, yang juga diserta-
kan pada paket Microsoft Office 2000—dan bahkan juga aplikasi dari vendor lain. Sehingga, jika
kita menguasai VBA dengan Excel, kita bisa juga untuk memprogram aplikasi lain dari Microsoft
(seperti Word) dan non-Microsoft (seperti AutoCad 2000). Bahkan, kita bisa membuat program
VBA yang saling berhubungan antar aplikasi yang berbeda.
Sekilas Pemrograman VBA
Program (biasa disebut kode) VBA yang kita tulis, disimpan dalam sebuah modul VBA.
Modul VBA disimpan di dalam workbook Excel bersama dengan worksheet dan objek
lain, dan jika kita ingin melihat atau menyuntingnya kita harus masuk ke dalam menu
Tools Macro Visual Basic Editor.
Modul VBA terdiri dari prosedur-prosedur (procedures). Sebuah prosedur adalah
sekumpulan kode untuk melakukan tugas atau aksi tertentu. Berikut adalah contoh
prosedur sederhana yang bernama Test :
Sub Test()
Sum = 1 + 1
MsgBox “Hasilnya adalah ” & Sum
End Sub
Modul VBA juga dapat terdiri dari prosedur fungsi (function). Fungsi adalah jenis
prosedur yang bisa mengembalikan nilai tertentu. Fungsi bisa dipanggil dari prosedur
VBA lain atau formula di dalam worksheet. Ini adalah contohnya, fungsi Tambah :
Function Tambah(Nilai1, Nilai2)
Tambah = Nilai1 + Nilai2
End Function
VBA berfungsi untuk memanipulasi objek (object) yang terdapat di dalam Excel. Excel
menyediakan lebih dari 1000 objek untuk dimanipulasi. Contoh objek antara lain
workbook, worksheet, range, atau chart.
Objek di dalam Excel disusun secara hirarki. Objek dapat berfungsi sebagai penampung
objek yang lain. Sebagai contoh Excel adalah objek yang disebut Application, yang
didalamnya terdiri dari objek lain, seperti Workbook dan CommandBar. Objek Workbook
terdiri dari objek lain seperti Worksheet dan Chart. Objek Worksheet terdiri dari objek
lain seperti Range, PivotTable, dan lain-lain.
Production Engineering Department
44
Programming in Microsoft Excel 2000
Objek yang sejenis membentuk suatu koleksi (collection). Contoh, koleksi Worksheets
terdiri dari semua worksheet yang ada di dalam workbook. Koleksi CommandBars terdiri
dari semua objek CommandBar. Koleksi itu sendiri sebenarnya merupakan objek juga.
Ketika kita ingin menggunakan ‘anggota’ dari suatu objek atau koleksi, kita harus
memisahkan objek dan ‘anggota’nya dengan menggunakan tanda titik (.). Dan tentu
saja, pemisahan ini harus sesuai dengan hirarki yang ada. Contoh, untuk mengakses ke
workbook yang bernama Book1.xls, kita menggunakan kode :
Application.Workbooks(“Book1.xls”)
Kode di atas menggunakan workbook Book1.xls di dalam koleksi Workbooks yang
terdapat di dalam objek Application. Turun ke level selanjutnya, kita bisa
menggunakan Sheet1 di dalam Book1, seperti :
Application.Workbooks(“Book1.xls”).Worksheets(“Sheet1”)
Kita juga bisa turun ke level selanjutnya untuk menggunakan cell A1 sebagai berikut :
Application.Workbooks(“Book1.xls”).Worksheets(“Sheet1”).Range(“A1”)
Jika kita menghilangkan penggunaan objek tertentu, maka Excel akan mengambil objek
yang saat itu sedang aktif. Jadi jika Book1 adalah workbook yang aktif, kode
sebelumnya dapat disederhanakan menjadi :
Worksheets(“Sheet1”).Range(“A1”)
Dan jika kita tahu bahwa Sheet1 adalah worksheet yang aktif, kita juga bisa menyeder-
hanakan kode sebelumnya menjadi :
Range(“A1”)
Sebuah objek memiliki properti (properties). Properti adalah setting, sifat, atau nilai
yang dikandung oleh suatu objek. Sebagai contoh, objek Range memiliki properti Value
untuk mengakses nilai yang dimilikinya. Kita bisa menggunakan kode VBA untuk
mengubah nilai suatu properti. Untuk mengakses properti suatu objek, kita bisa
menggabungkan objek dengan propertinya dengan dipisahkan oleh tanda titik. Sebagai
contoh, jika kita ingin menggunakan nilai yang terdapat di dalam cell A1, maka kodenya
sebagai berikut :
Worksheets(“Sheet1”).Range(“A1”).Value
Kita juga bisa mengambil atau memberikan nilai dari/ke suatu properti. Berikut adalah
contoh untuk mengambil nilai cell A1 dan menaruhnya di variabel Interest dan contoh
untuk mengisi nilai cell A1 dengan suatu bilangan :
Interest = Worksheets(“Sheet1”).Range(“A1”).Value
Worksheets(“Sheet1”).Range(“A1”).Value = 7
Selain properti, objek juga memiliki metode (methods). Metode adalah kegiatan atau
aksi tertentu yang dilakukan suatu objek. Sebagai contoh, salah satu metode yang
dimiliki oleh objek Range adalah ClearContents yang berfungsi untuk menghapus isi
suatu Range. Untuk mengakses metode suatu objek, kita bisa menggabungkan objek
dengan metodenya dengan dipisahkan oleh tanda titik. Contoh di bawah ini akan
menghapus isi cell A1 :
Range(“A1”).ClearContents
VBA juga mendukung semua struktur pemrograman modern, seperti larik (array),
pengulangan (looping), dan sebagainya.
Percaya atau tidak, penjabaran singkat di atas mencakup sebagian besar penjelasan tentang
VBA. Sekarang hanya tinggal masalah mempelajari detil yang ada, yang akan dibahas pada
bagian-bagian berikutnya.
Sebuah Analogi
Production Engineering Department
45
Programming in Microsoft Excel 2000
Jika kita merasa agak kesulitan dalam memahami pengertian tentang ‘tetek-bengek’ objek ini, mungkin analogi di bawah ini
bisa membantu. Kita akan mencoba membandingkan Excel dengan pabrik manufaktur.
Objek dasar yang dimiliki oleh Excel adalah Workbook. Sedangkan analogi yang kita miliki dapat berupa sebuah pabrik
tunggal. Dalam Excel, kita bisa menambahkan atau menutup workbook, dan semua workbook yang terbuka merupakan
suatu koleksi Workbooks. Sama saja dengan analogi kita, manajemen perusahaan dapat menambah pabrik baru atau
menutup pabrik yang sudah ada—dan semua pabrik yang ada tergabung dalam koleksi Pabrik.
Workbook dalam Excel adalah sebuah objek, dan juga sebagai penampung objek lain seperti Worksheet, Chart, dan
sebagainya. Lebih jauh, sebuah objek di dalam Workbook dapat terdiri dari objek-objek lain. Misalnya, objek Worksheet terdiri
dari objek Range, PivotTable, dan sebagainya. Dan di dalam analogi kita, sebuah Pabrik dapat terdiri dari objek Produksi,
Pekerja, dan lain-lain. Dan lagi, manajemen dapat menambah atau menghilangkan objek yang terdapat dalam Pabrik.
Sebagai contoh, manajemen dapat menambah objek Taman. Masing-masing objek ini bisa terdiri dari objek lain lagi. Misalnya,
objek Produksi memiliki objek Mesin, Lori, dan sebagainya.
Sejauh ini, sepertinya analogi yang kita buat bisa diterima. OK, akan kita lanjutkan.
Objek di dalam Excel memiliki properti. Contoh, objek Range memiliki properti Value serta Name, dan objek Shape memiliki
properti Width dan Height. Begitu juga dengan objek-objek di dalam Pabrik. Mesin memiliki properti Suhu ataupun Berat.
Selain properti, objek di dalam Excel juga memiliki metode, untuk melakukan suatu kegiatan atau aksi tertentu. Contoh,
metode ClearContents akan menghapus isi yang terdapat dalam objek Range. Begitu juga dengan objek analogi kita, Mesin
memiliki metode Nyalakan atau Putar.
Dalam Excel, terkadang metode dapat mengubah isi suatu properti. Metode ClearContents dalam objek Range, contohnya,
akan mengubah properti Value dalam objek Range itu sendiri. Begitu juga dengan metode Nyalakan dalam objek Mesin akan
mengubah properti Suhu dalam objek Mesin itu sendiri.
Sudah jelas sekarang ?
Visual Basic Editor
Dalam Excel, kita bisa menggunakan Visual Basic Editor (VBE) untuk melihat atau menyunting
modul VBA. Kita tidak bisa menjalankan VBE tanpa membuka Excel terlebih dahulu, karena VBE
merupakan satu kesatuan dengan Excel. Untuk berpindah ke VBE, kita bisa melakukan satu di
antara cara berikut :
Tekan Alt+F11
Pilih menu Tools Macro Visual Basic Editor
Klik tombol VBE , yang ada di toolbar Visual Basic
CATATAN …Jangan keliru antara VBE dengan Microsoft Script Editor yang digunakan untuk menyunting kode HTML.
Tampilan dari VBE bisa dilihat pada gambar 2.1 di bawah ini, yang terdiri dari komponen MenuBar
dan ToolBar yang berbeda dengan menubar Excel, Project Explorer, Code Window, dan
Immediate Window. Di dalam Project Explorer kita bisa menambah modul VBA baru,
menghapus modul VBA yang sudah ada ataupun export/import modul VBA dari lain file.
Sedangkan di Code Window, kita bisa memasukkan kode program.
Production Engineering Department
46
Programming in Microsoft Excel 2000
Gambar
2.1
VBE
Bisa dilihat pada Project Explorer, terdapat berbagai macam objek yang masing-masing memiliki
Code Window tersendiri. Secara garis besar objek yang terdapat di sini adalah :
Workbook itu sendiri (ThisWorkbook di dalam Project Explorer atau PE)
Worksheet atau chart di dalam workbook (contoh: Sheet1, Chart1 di dalam PE)
Modul VBA
Class Module (modul khusus yang memungkinkan kita menciptakan kelas objek baru)
UserForm
Membuat kode VBA
Secara umum, Code Window dapat menampung empat jenis kode VBA :
Procedure
Function
Property procedure
Declaration, yang berisi informasi tentang variabel yang dibutuhkan oleh kode VBA. Kita juga bisa
menentukan jenis data untuk variabel yang kita deklarasikan.
Pengaturan modul-modul VBA adalah semuanya terserah pada pribadi masing-masing. Beberapa
orang memilih untuk menaruh seluruh kode dalam satu modul VBA, dimana sebagian orang
memilih untuk memisah-misah kode ke dalam beberapa modul.
Kita bisa membuat kode VBA dalam tiga cara, yaitu :
Memasukkan kode dengan cara biasa—mengetiknya dengan keyboard.
Menggunakan fasilitas macro recorder milik Excel untuk merekam tindakan dan aksi kita untuk
kemudian mengubahnya menjadi kode VBA.
meng-copy kode dari modul lain dan mem-paste ke dalam modul yang sedang kita kerjakan.
Memasukkan kode dengan cara biasa
Production Engineering Department
47
Programming in Microsoft Excel 2000
Memasukkan dan menyunting teks untuk kode VBA sama persis dengan penyuntingan teks yang
biasa kita lakukan dengan Word atau Excel. Kita bisa melakukan operasi cut, copy, atau paste.
Satu kode perintah dalam VBA bisa sepanjang yang kita inginkan. Tetapi biasanya untuk
kenyamanan dalam membaca, satu perintah yang panjang dipecah menjadi beberapa baris
dengan menggunakan tanda underscore (_). Untuk lebih jelasnya perhatikan contoh berikut :
MsgBox “File yang anda inginkan tidak terdapat dalam ” & _
ThisWorkbook.Path & vbCrLf & vbCrLf & _
“Pastikan untuk meng-copy-nya kembali”, vbCritical
Perhatikan bahwa dua baris terakhir kode diatas ditulis agak menjorok ke dalam. Ini dimaksud-
kan bahwa baris-baris tersebut merupakan kelanjutan dari baris sebelumnya.
Coba ini : Masukkan kode program di bawah ini ke dalam salah satu modul
VBA :
Sub Ucapan() Msg = “Apakah nama anda ” & Application.UserName & “?” Ans = MsgBox(Msg, vbYesNo) If Ans = vbNo Then MsgBox “Oh,... Maaf” Else MsgBox “Saya pasti cenayang” End IfEnd Sub
CATATAN …Ketika kita memasukkan kode program, terkadang VBE melakukan perubahan atas teks yang kita masukkan. Sebagai contoh,
ketika kita tidak mengetik spasi sebelum dan sesudah tanda sama dengan (=), VBE akan secara otomatis menambahkan spasi,
dan warna teks-teks tertentu akan berubah.
Semua itu adalah sangat normal, dan kita akan memahami fungsi dan keuntungannya jika sudah terbiasa dengan kode VBA.
Untuk menjalankan prosedur Ucapan, pastikan untuk memposisikan pointer di sembarang tempat
pada kode yang kita masukkan. Lalu lakukan salah satu dari langkah-langkah berikut :
Tekan F5
Pilih menu RunRun Sub/UserForm
Klik tombol Run Sub/UserForm , yang terdapat pada toolbar Standard
Jika kode yang kita masukkan benar, maka akan tampil kotak dialog seperti terlihat pada gambar
2.2 di bawah ini.
Gambar 2.2
Hasil dari contoh kode di atas
Kode program di atas, sebagai catatan, menggunakan konsep berikut ini :
Deklarasi prosedur (Sub Ucapan())
Production Engineering Department
48
Programming in Microsoft Excel 2000
Memberi nilai ke dalam variabel (Msg dan Ans)
Menggabungkan string (dengan menggunakan operator &)
Menggunakan fungsi VBA yang sudah tersedia (MsgBox)
Menggunakan konstanta VBA yang sudah tersedia (vbYesNo dan vbNo)
Menggunakan struktur pemrograman If-Then-Else-End If
Mengakhiri prosedur (End Sub)
Cukup bagus untuk seorang pemula, bukan ?
Memasukkan kode dengan Macro Recorder
Cara lain untuk membuat kode VBA adalah dengan menggunakan fasilitas dari Excel yang diberi
nama macro recorder. Merekam macro bisa dibilang sangat berguna, walaupun banyak
keterbatasannya (contohnya kita tidak akan pernah bisa membuat kode VBA sebelumnya dengan
menggunakan macro recorder). Pada kenyataannya, ketika kita merekam macro kita sering
membuat penyesuaian kode ataupun menghapus beberapa kode secara manual.
Contoh berikut akan menunjukkan cara sederhana merekam macro dimana Page Setup akan
diubah orientasinya menjadi Landscape. Kita mulai dengan menyiapkan satu workbook kosong,
dan ikuti langkah-langkah berikut :
Aktifkan sembarang worksheet.
Pilih menu ToolsMacroRecord New Macro…. Excel kemudian akan menampilkan kotak dialog
Record Macro.
Klik OK untuk menerima setting yang default. Excel secara otomatis akan menambahkan modul VBA
ke dalam projek kita. Mulai langkah ini, Excel akan mengubah aksi atau tindakan kita menjadi kode
VBA. Selama dalam proses perekaman, Excel akan menampilkan kata Recording di status bar dan
menampilkan floating toolbar yang berisi dua tombol (Stop Recording dan Relative Reference).
Pilih menu FilePage Setup…. Excel lalu akan menampilkan kotak dialog Page Setup.
Pilih opsi Landscape, dan klik OK untuk menutup kotak dialog.
Klik tombol Stop Recording atau pilih menu ToolsMacroStop Recording.
Excel akan berhenti merekam kegiatan aksi kita.
Untuk melihat hasil perekaman macro-nya, aktifkan VBE, lalu klik pada Module1 untuk
menampilkan kodenya (jika projek yang ada sudah memiliki Module1, maka macro yang baru kita
ciptakan tadi akan diberi nama Module2). Berikut adalah listing program hasil perekaman macro
yang baru kita lakukan :
Sub Macro1() With ActiveSheet.PageSetup .PrintTitleRows = "" .PrintTitleColumns = "" End With ActiveSheet.PageSetup.PrintArea = "" With ActiveSheet.PageSetup .LeftHeader = "" .CenterHeader = "" .RightHeader = "" .LeftFooter = "" .CenterFooter = "" .RightFooter = "" .LeftMargin = Application.InchesToPoints(0.75) .RightMargin = Application.InchesToPoints(0.75) .TopMargin = Application.InchesToPoints(1) .BottomMargin = Application.InchesToPoints(1) .HeaderMargin = Application.InchesToPoints(0.5) .FooterMargin = Application.InchesToPoints(0.5)
Production Engineering Department
49
Programming in Microsoft Excel 2000
.PrintHeadings = False .PrintGridlines = False .PrintComments = xlPrintNoComments .PrintQuality = 600 .CenterHorizontally = False .CenterVertically = False .Orientation = xlLandscape .Draft = False .PaperSize = xlPaperA4 .FirstPageNumber = xlAutomatic .Order = xlDownThenOver .BlackAndWhite = False .Zoom = 100 End WithEnd Sub
Wow… kita mungkin terkejut dengan jumlah kode yang begitu banyak hanya dengan satu
perintah. Walaupun kita hanya mengubah satu opsi sederhana di kotak dialog Page Setup, Excel
menghasilkan kode yang menggambarkan seluruh opsi yang ada di dalam kotak dialog. Jika kita
ingin macro yang kita buat hanya mengubah opsi Landscape, kita bisa menyederhanakan
dengan menghapus beberapa kode yang tidak dibutuhkan sehingga lebih
mudah dibaca dan lebih cepat ketika dilaksanakan, menjadi sebagai berikut :
Sub Macro1() With ActiveSheet.PageSetup .Orientation = xlLandscape End WithEnd Sub
Seperti bisa dilihat di atas, kita sudah menghapus semua kode kecuali kode yang berhubungan
dengan properti Orientation. Bahkan sebenarnya, kode di atas bisa lebih disederhanakan lagi
karena struktur With-End With tidak perlu digunakan jika hanya ada satu properti
saja :
Sub Macro1() ActiveSheet.PageSetup.Orientation = xlLandscapeEnd Sub
Dalam contoh diatas, macro akan mengubah properti Orientation di objek PageSetup di sheet
yang aktif. Omong-omong, sebenarnya xlLandscape adalah konstanta yang sudah disediakan
oleh Excel (built-in constant) untuk memudahkan dalam melakukan pemrograman. xlLandscape
memiliki nilai 2, dan xlPortrait memiliki nilai 1. Sebagian besar programmer lebih senang
menggunakan konstanta nama ini daripada harus menghapalkan nilai-nilai. Kita bisa mengguna-
kan fasilitas Help yang disediakan oleh Excel untuk mengetahui nama seluruh built-in constant
yang terdapat dalam Excel.
Kita juga bisa memasukkan kode di atas secara langsung tanpa harus menggunakan macro
recorder. Tetapi, kita harus tahu jenis objek, properti yang ada, dan metode yang harus
digunakan untuk melaksanakan tugas yang kita inginkan. Kenyataannya, memang lebih cepat
untuk membuat program dengan menggunakan macro recorder, dan juga kita bisa mendapatkan
‘bonus lain’ : kita menjadi tahu bahwa objek PageSetup memiliki beberapa properti seperti di
atas, yang mungkin nanti perlu kita gunakan.
CATATAN …
Production Engineering Department
50
Programming in Microsoft Excel 2000
Penulis merasa bahwa menggunakan macro recorder adalah cara yang terbaik dalam belajar VBA. Ketika kita merasa ragu dan
tidak begitu yakin perintah apa yang harus ditulis, cobalah menggunakan macro recorder. Walaupun hasilnya mungkin tidak
sesuai dengan yang kita inginkan, tetapi hasil akhirnya akan selalu benar.
Kita juga bisa menggunakan fasilitas Help yang disediakan untuk mengetahui lebih lanjut tentang suatu objek.
Relative atau Absolute
Ketika sedang merekam tindakan dan aksi kita, Excel secara default akan membuat
pengalamatan absolute jika terdapat tindakan yang berhubungan dengan cell atau range.
Perhatikan contoh berikut ini :
Aktifkan sembarang worksheet dan nyalakan macro recorder.
Aktifkan cell B1 dan masukkan kata Jan.
Pindah ke cell C1 dan masukkan kata Feb.
teruskan langkah di atas sampai kita sudah memasukkan nama 6 bulan di range B1:G1.
Klik cell B1 untuk mengaktifkannya kembali dan hentikan macro recorder.
Excel kemudian akan menghasilkan kode berikut ini :
Sub Macro1() Range("B1").Select ActiveCell.FormulaR1C1 = "Jan" Range("C1").Select ActiveCell.FormulaR1C1 = "Feb" Range("D1").Select ActiveCell.FormulaR1C1 = "Mar" Range("E1").Select ActiveCell.FormulaR1C1 = "Apr" Range("F1").Select ActiveCell.FormulaR1C1 = "May" Range("G1").Select ActiveCell.FormulaR1C1 = "Jun" Range("B1").SelectEnd Sub
Lalu coba jalankan macro di atas dengan memilih menu ToolsMacroMacros… (atau tekan
Alt+F8), pilih Macro1 (atau apapun nama yang kita berikan), dan klik tombol Run.
Ketika dijalankan, macro akan mengulang aksi yang sama dengan saat ketika kita merekamnya.
Hasil yang didapat ketika kita menjalankan berulang-ulang adalah sama tidak peduli di cell mana
kita sedang berada. Merekam macro dengan menggunakan pengalamatan absolute (absolute
reference) akan selalu menghasilkan hasil yang sama.
Terkadang kita menginginkan untuk merekam macro yang tindakannya relatif terhadap posisi cell
yang aktif. Sebagai contoh, misalkan kita ingin merekam macro untuk mengisi nama-nama bulan
mulai dari cell yang aktif. Untuk kasus ini, kita bisa menggunakan pengalamatan relatif (relative
reference).
Seperti sudah kita ketahui, ketika sedang merekam macro, muncul floating toolbar yang berisi
tombol Stop Recording dan Relative Reference. Tombol terakhir inilah yang digunakan untuk
berpindah antara relative reference dan absolute reference. Ketika dalam posisi ditekan, yang
aktif adalah relative reference, sebaliknya absolute reference. Kita bisa berpindah jenis
pengalamatan setiap saat, bahkan ketika sedang merekam macro. Untuk melihat kerja dari
tombol ini, hapus isi cell B1:G1, dan lakukan langkah berikut ini :
Aktifkan cell B1.
Aktifkan sembarang worksheet dan nyalakan macro recorder.
Klik tombol Relative reference untuk berpindah ke pengalamatan relatif.
Production Engineering Department
51
Programming in Microsoft Excel 2000
Masukkan nama 6 bulan pada range B1:G1, seperti contoh sebelumnya.
Klik cell B1 untuk mengaktifkannya kembali dan hentikan macro recorder.
Excel kemudian akan menghasilkan kode berikut ini :
Sub Macro2() ActiveCell.FormulaR1C1 = "Jan" ActiveCell.Offset(0, 1).Range("A1").Select ActiveCell.FormulaR1C1 = "Feb" ActiveCell.Offset(0, 1).Range("A1").Select ActiveCell.FormulaR1C1 = "Mar" ActiveCell.Offset(0, 1).Range("A1").Select ActiveCell.FormulaR1C1 = "Apr" ActiveCell.Offset(0, 1).Range("A1").Select ActiveCell.FormulaR1C1 = "May" ActiveCell.Offset(0, 1).Range("A1").Select ActiveCell.FormulaR1C1 = "Jun" ActiveCell.Offset(0, -5).Range("A1").SelectEnd Sub
Sekarang kita bisa menjalankan macro ini pada cell tertentu untuk mulai menulis hasilnya di cell
yang bersangkutan. Perlu diperhatikan juga, bahwa sebelum merekam macro kita harus memilih
cell tertentu terlebih dahulu sebagai cell awalnya. Ini merupakan langkah penting dalam
perekaman macro jika kita ingin menggunakan suatu cell sebagai cell awal.
Walaupun macro di atas terlihat cukup aneh, sebenarnya cukup sederhana. Baris pertama akan
memasukkan Jan ke dalam cell yang aktif. Beris berikutnya menggunakan metode Offset untuk
berpindah ke cell di sebelah kanannya. Beris berikutnya memasukkan teks lagi, dan begitu
seterusnya. Dan yang terakhir, cell awalnya dipilih dengan menggunakan pemindahan cell secara
relatif ketimbang alamat cell absolut.
CATATAN …Kita bisa perhatikan bahwa Excel menghasilkan kode di atas dengan menggunakan pengalamatan cell A1—yang mana terlihat
aneh karena macro kita sebenarnya tidak memiliki hubungan apapun dengan cell A1. Ini bisa dikatakan sebagai efek samping dari
perekaman macro yang dijalankan.
Sampai saat ini, yang perlu kita ketahui adalah macronya bekerja dengan benar.
Sebenarnya, kode yang dihasilkan Excel bisa dibilang terlalu kompleks dari yang seharusnya.
Macro berikut ini dibuat secara manual dan merupakan cara yang lebih efisien
dan sederhana untuk melakukan aksi yang sama. Contoh berikut ini juga
mendemonstrasikan bahwa VBA tidak selalu harus memilih cell tertentu
sebelum menulis data.
Sub Macro3() ActiveCell.Offset(0, 0) = “Jan” ActiveCell.Offset(0, 1) = “Feb” ActiveCell.Offset(0, 2) = “Mar” ActiveCell.Offset(0, 3) = “Apr” ActiveCell.Offset(0, 4) = “May” ActiveCell.Offset(0, 5) = “Jun”End Sub
Bahkan kita bisa lebih menyederhanakan lagi kode di atas menjadi lebih efisien dengan
menggunakan struktur With-End With sebagai berikut :
Sub Macro4() With ActiveCell .Offset(0, 0) = “Jan” .Offset(0, 1) = “Feb” .Offset(0, 2) = “Mar”
Production Engineering Department
52
Programming in Microsoft Excel 2000
.Offset(0, 3) = “Apr” .Offset(0, 4) = “May” .Offset(0, 5) = “Jun” End WithEnd Sub
Personal Macro WorkbookJika kita merasa bahwa macro-macro yang kita buat sangat berguna dan akan sering digunakan di worksheet lain, kita bisa
menaruh macro-macro tersebut di dalam Personal Macro Workbook (PMW). Workbook ini (Personal.xls) harus ditaruh di
folder XLStart. Kapan saja kita memulai Excel, workbook ini akan dipanggil secara otomatis dan tersembunyi sehingga
tidak bisa disunting. Ketika kita membuat macro, salah satu opsi yang ada mengizinkan kita untuk menyimpannya di PMW.
Yang perlu dicatat adalah Personal Macro Workbook ini tidak akan tercipta jika tidak ada macro yang disimpan di dalamnya.
Membersihkan hasil perekaman macro
Dalam contoh sebelumnya, kita bisa melihat bahwa hanya dengan satu aksi sederhana (merubah
opsi Landscape) bisa dihasilkan kode VBA yang begitu banyak. Memang, dalam kebanyakan
kasus, kode VBA hasil perekaman macro mengandung kode ‘ekstra’ (yang tidak dibutuhkan) yang
tentu bisa kita hapus.
Perlu dimengerti juga bahwa kode yang dihasilkan oleh macro recorder tidak selalu menghasilkan
kode yang paling efisien. Jika kita meneliti beberapa kode yang dihasilkan oleh macro recorder,
kita bisa lihat bahwa Excel menghasilkan kode berdasarkan objek yang sedang dipilih dan
menggunakan objek Selection pada kode-kode selanjutnya. Sebagai contoh, di bawah adalah
kode yang dihasilkan macro recorder ketika kita memilih range tertentu lalu mengubah number
formatting dan menebalkan (bold) dan memiringkan (italic) huruf melalui toolbar
Formatting :
Range(“A1:C5”).SelectSelection.NumberFormat = “#,##0.00”Selection.Font.Bold = TrueSelection.Font.Italic = True
CATATAN …Jika kita menggunakan kotak dialog Formatting dalam merekam macro ini, kita akan mendapatkan lebih banyak lagi kode ekstra.
Merekam macro dengan menggunakan tombol di toolbar akan menghasilkan kode yang lebih efisien.
Kode di atas sebenarnya bisa disederhanakan lagi dengan menggunakan struktur With-End With
menjadi sebagai berikut :
Range(“A1:C5”).SelectWith Selection .NumberFormat = “#,##0.00” .Font.Bold = True .Font.Italic = TrueEnd With
Atau kita bisa menghilangkan penggunaan metode Selection dan menulis seperti ini :
With Range(“A1:C5”) .NumberFormat = “#,##0.00” .Font.Bold = True .Font.Italic = TrueEnd With
Production Engineering Department
53
Programming in Microsoft Excel 2000
Kita, tentu saja, harus mengerti VBA terlebih dahulu sebelum mulai untuk membersihkan kode
VBA hasil rekaman. Tapi untuk sekarang ini, kita perlu tahu bahwa kode VBA hasil rekaman
dengan macro recorder bukanlah yang terbaik.
Objek dan Koleksi
Jika kita membaca modul 2 ini dari bagian pertama, kita tahu bahwa Excel terdiri dari komponen
yang disebut object (objek) dan collection (koleksi). Kita juga tahu bahwa Excel memiliki hirarki
dalam penyusunan objek dan koleksi yang ada. Contohnya Worksheet adalah objek dari koleksi
Worksheets. Jika kita ingin mengakses salah satu anggota objek dari suatu koleksi, Worksheet
misalnya, kita bisa melakukannya dengan cara :
Worksheets(“Sheet1”) menunjuk ke Worksheet bernama Sheet1
Atau :
Worksheets(1) menunjuk ke Worksheet dengan urutan pertama
CATATAN …Selain itu ada satu koleksi yang bernama Sheets, merupakan koleksi dari seluruh sheet yang ada (Worksheet atau Chartsheet).
Ketika kita mereferensikan objek dengan menggunakan VBA, kita harus menggunakan tanda titik
(disebut juga ‘operator titik – dot operator) sebagai penghubung antara objek. Sekarang
bagaimana jika terdapat dua workbook yang terbuka dan masing-masing memiliki worksheet
yang namanya sama-sama Sheet ? Penyelesaiannya adalah dengan menambahkan referensi
objek penampung (container) yang dimiliki objek tersebut sebagai berikut :
Workbooks(“Book1”).Worksheets(“Sheet1”).Range(“A1”)
atau
Application.Workbooks(“Book1”).Worksheets(“Sheet1”).Range(“A1”)
CATATAN …Berbeda dengan dugaan kita, Excel tidak menyediakan objek Cell yang menunjuk ke satu cell tunggal.
Satu cell adalah sama saja denga objek Range yang hanya memiliki satu elemen.
Kita juga sudah tahu bahwa objek memiliki properties (properti). Contohnya objek Range yang
memiliki properti Value, dimana dengan properti ini kita bisa mendapatkan nilai
dari range tertentu atau mengisi nilai ke range tertentu. Perhatikan contoh
aplikasinya :
Sub TampilkanNilai() Answer = Workbooks(“Book1”).Worksheets(“Sheet1”).Range(“A1”) MsgBox AnswerEnd Sub
Sub UbahNilai() Workbooks(“Book1”).Worksheets(“Sheet1”).Range(“A1”) = 123End Sub
Selain properti, objek juga memiliki methods (metode). Contohnya objek Range yang memiliki
metode Clear untuk menghapus isi range tertentu atau metode Copy untuk meng-copy isi
range tertentu ke range yang lainnya. Perhatikan contoh aplikasinya :
Production Engineering Department
54
Programming in Microsoft Excel 2000
Sub HapusRange() Workbooks(“Book1”).Worksheets(“Sheet1”).Range(“A1:C3”).ClearEnd Sub
Sub CopyRange() Workbooks(“Book1”).Worksheets(“Sheet1”).Range(“A1”).Copy _ Workbooks(“Book1”).Worksheets(“Sheet1”).Range(“B1”)End Sub
Menentukan argumen untuk Metode dan PropertiSalah satu hal yang kadang bisa membuat bingung programmer adalah penggunaan argumen/parameter yang dibutuhkan
oleh metode dan properti. Metode terkadang memerlukan argumen sebagai bantuan dalam menjalankan proses yang
terdapat di dalamnya, dan properti memerlukan argumen sebagai bantuan dalam pengubahan nilai yang dikandungnya.
Untuk beberapa metode dan properti, penggunaan argumen bersifat opsional.
Untuk metode yang menggunakan argumen, tempatkan argumen setelah nama metode dengan dipisahkan tanda koma
untuk masing-masing argumen. Jika metodenya menggunakan argumen yang opsional, kita bisa menyisipkan argumen
kosong. Contohnya adalah metode Protect milik objek Workbook. Coba buka fasilitas Help milik Excel, dan kita bisa melihat
bahwa metode Protect memiliki 3 argumen : Password, Structure, dan Windows. Argumen tersebut merujuk ke opsi yang
ada di kotak dialog Protect Workbook. Berikut adalah contoh penggunaan argumen untuk metode Protect :
Workbook(“MyBook.xls”).Protect “xxx”, True, True
Jika kita tidak ingin memberi password, maka kita bisa menggunakan perintah seperti :
Workbook(“MyBook.xls”).Protect , True, True
Perhatikan bahwa argumen pertama dihilangkan pada perintah di atas tetapi tetap menyertakan tanda koma sebagai
pemisah dengan argumen berikutnya.
Tetapi ada pendekatan yang lebih baik yang menjadikan kode VBA kita mudah dibaca, yaitu dengan menggunakan nama
argumen yang bersangkutan. Ini contoh yang lain dari perintah sebelumnya :
Workbook(“MyBook.xls”).Protect Structure:=True, Windows:=True
Penggunaan nama argumen seperti di atas dapat sangat membantu, khususnya jika berhubungan dengan metode yang
memiliki banyak argumen dan kita hanya perlu menggunakan sedikit saja.
Untuk properti yang memerlukan argumen, kita harus menempatkan argumen tersebut dengan diapit oleh tanda kurung.
Sebagai contoh, properti Address yang dimiliki oleh objek Range memiliki lima argumen, dan semuanya adalah opsional.
Perintah berikut ini adalah salah karena tanda kurungnya dihilangkan :
MsgBox Range(“A1”).Address False ‘perintah yang salah
Yang benar adalah yang menggunakan tanda kurung sebagai berikut :
MsgBox Range(“A1”).Address(False)
Atau dengan menyertakan nama argumen seperti berikut :
MsgBox Range(“A1”).Address(rowAbsolute:=False)
Konsep ini akan semakin kita pahami nanti dengan ‘menyelam’ lebih jauh ke dalam VBA.
Menggunakan Sistem Help ExcelCara termudah untuk mendapatkan informasi dan bantuan mengenai suatu objek, properti, atau metode adalah dengan
mengetik kata yang bersangkutan di Code Window lalu menekan F1. Jika kata yang kita ketik memiliki banyak kesamaan
topik bantuan, maka akan tampil kotak dialog yang berisi daftar topik dimana kita bisa memilih topik mana yang akan kita
tampilkan. Tapi sayangnya terkadang daftar yang diberikan tidak begitu jelas maksudnya, sehingga kita perlu untuk
mencoba satu-persatu hingga ketemu topik yang kita inginkan.
Contohnya adalah jika kita mengetik kata Comment maka akan muncul dua daftar topik, yang pertama adalah objek Comment
dan yang kedua adalah properti Comment.
Mengetahui Objek yang Aktif
Seperti kita tahu, ketika kita bekerja dengan Excel, hanya satu workbook dan satu sheet yang
bisa aktif dalam satu waktu, dan terkadang hanya satu cell yang aktif dalam satu waktu.
VBA mengizinkan kita untuk mengakses objek yang aktif dengan cara yang mudah. Ini terkadang
sangat berguna karena kita tidak selalu tahu workbook, worksheet, atau range mana yang aktif
dan sedang digunakan. VBA menangani ini dengan menyediakan beberapa properti yang
terdapat di dalam objek Application. Misalnya ActiveCell yang digunakan untuk
Production Engineering Department
55
Programming in Microsoft Excel 2000
mengetahui cell yang aktif. Perintah berikut ini akan memberikan nilai 1 ke
cell yang aktif :
ActiveCell.Value = 1
Perhatikan bahwa penggunaan objek Application dihilangkan pada perintah di atas, karena
sebenarnya sudah digunakan secara default. Dan perlu diperhatikan bahwa perintah di atas akan
gagal jika sheet yang aktif bukan worksheet. Jika VBA menjalankan perintah di atas ketika
chartsheet sedang aktif, maka kita akan menerima pesan kesalahan. Dan jika yang aktif adalah
range, maka cell yang berada di sudut pertama (sudut yang dipilih tergantung akan bagaimana
cara kita memilih range yang bersangkutan) akan dipilih. Dengan kata lain, ActiveCell akan
selalu mengambil satu cell tunggal.
Objek Application juga memiliki properti Selection yang mengembalikan referensi ke segala
jenis objek, yang dapat berupa cell tunggal, range, atau objek lain seperti ChartObject, TextBox,
atau Shape. Tabel di bawah ini memberikan beberapa properti milik Application yang berguna
ketika kita bekerja dengan cell dan range.
Beberapa properti milik objek ApplicationProperti Objek yang dikembalikanActiveCell Cell yang aktif.ActiveSheet Sheet (worksheet atau chartsheet) yang aktif.ActiveWindow Jendela yang aktif.ActiveWorkbook Workbook yang aktif.RangeSelection Range/cell (saja) yang dipilih di worksheet dalam jendela
tertentu, tidak termasuk objek grafik yang ada.Selection Objek yang dipilih (dapat berupa Range, Shape, dan lain-lain).ThisWorkbook Workbook dimana kode VBA yang sedang dijalankan berada.
Keuntungan dari menggunakan properti di atas adalah kita tidak perlu tahu
cell, worksheet, atau workbook mana yang sedang aktif. Perhatikan contoh-
contoh berikut ini :
ActiveCell.ClearContents 'menghapus isi suatu cell yang sedang aktif.MsgBox ActiveSheet.Name 'menampilkan nama sheet yang sedang aktif.MsgBox ActiveWorkbook.Name 'menampilkan nama workbook yang sedang aktif.
Jika suatu range dalam worksheet sedang dipilih, kita bisa mengisi seluruh cell yang ada di range
tersebut dengan suatu nilai hanya menggunakan satu perintah. Properti Selection pada contoh
berikut akan mengembalikan objek Range yang sedang dipilih dan mengubah properti Value
dengan suatu nilai :
Selection.Value = 12
Perlu diperhatikan juga bahwa jika yang sedang dipilih bukan objek Range (seperti ChartObject
atau Shape), maka kemungkinan VBA akan menghasilkan pesan kesalahan karena tidak semua
objek memiliki properti Value. Sekarang perhatikan contoh berikut yang hanya mengisi nilai 12
ke dalam objek Range terakhir sebelum objek non-Range dipilih. Jika kita mencarinya di fasilitas
Help, kita bisa melihat bahwa properti ini hanya bekerja di objek Window saja.
ActiveWindow.RangeSelection.Value = 12
Bekerja dengan objek Range
Production Engineering Department
56
Programming in Microsoft Excel 2000
Sebagian besar hal yang akan terlibat jika kita bekerja dengan VBA adalah cell dan range di
dalam worksheet. Ada 3 cara dalam mereferensikan objek Range di dalam kode VBA, yaitu :
menggunakan properti Range;
menggunakan properti Cells; dan
menggunakan properti Offset.
Properti Range
Jika kita melihat fasilitas Help, properti Range memiliki dua syntax, yaitu :
object.Range(cell1)
object.Range(cell1, cell2)
Jika kita menggunakan syntax pertama, maka alamat range ditulis secara langsung di argumen
cell1, tetapi jika menggunakan syntax kedua, maka cell kiri atas range ditulis di argumen cell1
dan cell kanan bawah range ditulis di argumen cell2. Berikut adalah contoh-contoh penggunaan
properti Range yang terdapat pada objek Worksheet :
Worksheets(“Sheet1”).Range(“A1”).Value = 1 ‘memberi nilai 1 di cell A1Worksheets(“Sheet1”).Range(“Input”).Value = 1 ‘memberi nilai 1 di alamat InputActiveSheet.Range(“A1:B10”).Value = 2 ‘memberi nilai 2 di range A1:B10Range(“A1”, “B10”) = 2 ‘memberi nilai 2 di range A1:B10Range(“C1:C10 A6:E6) = 3 ‘memberi nilai 3 pada cell perpotongan range C1:C10 dengan A6:E6Range(“A1,A3,A5,A7,A9”) = 4 ‘memberi nilai 4 pada cell yang berbeda-beda
Sejauh ini kita sudah mengetahui beberapa contoh penggunaan properti Range yang terdapat
pada objek Worksheet. Seperti yang sudah saya sebutkan sebelumnya, kita juga bisa mengguna-
kan properti Range yang terdapat pada objek Range. Bingung ? Perhatikan penjelasan berikut.
Berikut adalah contoh dimana sebuah range dipilih (anggap saja B2:C5) pada worksheet yang
aktif, dan jika kita menggunakan properti ActiveCell maka ia akan menunjuk pada cell
B2. Lalu kita ingin mengisi cell C3 dengan nilai 10, maka perintahnya dapat
seperti ini :
ActiveCell.Range(“B1”).Value = 10
Bisa dilihat di atas bahwa ActiveCell menunjuk pada cell B2, dan jika kita menggunakan
properti Range(“B1”) maka yang akan dirujuk adalah satu cell di kanan bawah cell B2, yaitu cell
C3. Jadi pengalamatan Range(“B1”) di atas adalah relatif terhadap cell B2. Untuk
lebih jelasnya, coba perhatikan beberapa contoh di bawah ini :
Range("C3").Range("A1") ‘sama dengan Range(“C3”)Range("C3").Range("E2") ‘sama dengan Range(“G4”)Range("C3:E7").Range("E2") ‘sama dengan Range(“G4”)Range("C3:E7").Range("A1:D3") ‘sama dengan Range(“C3:F5”)
Masih bingung ? Untung masih ada satu cara yang lebih mudah untuk pengalamatan relatif, yaitu
dengan menggunakan properti Offset yang akan kita bahas kemudian.
Properti Cells
Production Engineering Department
57
Programming in Microsoft Excel 2000
Cara lain untuk mengakses alamat pada objek Range adalah dengan menggunakan properti
Cells. Sama seperti properti Range, properti Cells juga terdapat dalam objek Worksheet dan
Range. Bukalah sistem Help, dan kita bisa melihat bahwa terdapat 3 syntax properti Cells :
object.Cells(rowindex,columnindex)
object.Cells(rowindex)
object.Cells
Seperti kita tahu bahwa satu worksheet di dalam Excel terdiri dari 256 kolom (nomor urut 1-256
atau A-IV) dan 65536 baris (nomor urut 1-65536). Nah, kita akan melihat beberapa contoh
penggunaan properti Cells yang menggunakan dua argumen sebagai berikut :
Worksheets(“Sheet1”).Cells(1,1) = 9 ‘mengisi cell A1ActiveSheet.Cells(3,4) = 7 ‘mengisi cell D3ActiveCell.Cells(2,1) = 5 ‘mengisi cell yang terletak dua baris di bawah dan satu kolom di kanan cell yang aktif.
Syntax kedua dari properti Cells adalah yang menggunakan satu argumen yang
berkisar antara 1 sampai 16777216 (angka ini merupakan total keseluruhan
cell yang dalam worksheet : 256 kolom x 65536 baris). Nomor urutan cell
dimulai dari cell A1 dan lanjut ke kanan lalu ke bawah menuju baris
berikutnya. Cell ke-256 adalah cell IV1; ke-257 adalah cell A2. Berikut ini
contoh untuk memasukkan nilai 2 ke cell H3 (yang merupakan cell ke-520) di
worksheet yang aktif :
ActiveSheet.Cells(520) = 2 ‘mengisi cell H3Range(“A1:D10”).Cells(5) = 2000 ‘mengisi cell A2
Syntax ketiga dari properti Cells adalah yang tidak menggunakan argumen apapun. Syntax ini
digunakan untuk mengembalikan seluruh cell yang terdapat dalam satu
worksheet. Misalnya kode berikut digunakan untuk menghapus seluruh cell
yang ada di dalam worksheet yang aktif :
ActiveSheet.Cells.ClearContents
Properti Offset
Properti Offset (sama seperti properti Range dan Cells) juga mengembalikan objek Range.
Hanya bedanya, properti Offset hanya terdapat dalam objek Range tapi tidak terdapat dalam
objek Worksheet. Syntaxnya adalah sebagai berikut :
object.Offset(rowOffset,columnOffset)
Properti Offset membutuhkan dua argumen yang menentukan posisi relatif kolom dan baris dari
cell kiri atas pada objek Range yang bersangkutan. Kedua argumen yang
dibutuhkan bisa berupa bilangan negatif atau positif atau nilai 0. Contoh
berikut ini akan memperjelas maksudnya :
ActiveCell.Offset(1,0).Value = 12 ‘mengisi satu cell di bawah cell yang aktifActiveCell.Offset(-1,0).Value = 12 ‘mengisi satu cell di atas cell yang aktif
Production Engineering Department
58
Programming in Microsoft Excel 2000
CATATAN …Jika posisi cell hasil dari properti Offset berada di luar batas maka Excel akan menampilkan pesan kesalahan. Contohnya :
MsgBox Range(“C1”).Offset(-1,0).Address ‘error
LATIHAN
Buatlah prosedur untuk membuat 6 nama bulan berturut-turut yang ditempatkan
mulai dari cell A1 lalu bergerak diagonal ke B2 dan seterusnya !
Modifikasilah program nomor 1 sehingga ketika dijalankan hasilnya tidak dimulai di
cell A1, melainkan di cell yang aktif saat itu.
Buatlah program untuk mengisi satu cell tertentu dengan sembarang nilai lalu copy-
lah isi cell tersebut ke kanan sebanyak 5 kolom dan ke kiri sebanyak 5 baris dengan
menggunakan properti Range di dalam objek Range !
Modifikasilah program nomor 3 dengan menggunakan properti Offset !
Buatlah program untuk mengisi nilai 1 – 12 pada range A1:D3 dengan menggunakan
properti Cells (dengan satu parameter) di dalam objek Range !
Modifikasilah program nomor 5 agar hasilnya tidak selalu pada range A1:D3
melainkan pada range mana saja yang memiliki ukuran 4 kolom x 3 baris !
Pemrograman Dasar VBA
Pada bagian sebelumnya, kita sudah berkenalan dengan VBA, sekarang kita akan memasuki
dunia pemrograman VBA yang lebih mendalam. Pada bagian ini kita akan membahas beberapa
elemen dan konsep pemrograman dalam VBA. Bagi yang sudah belajar bahasa pemrograman
tertentu, mungkin akan cepat menyesuaikan. Dan bagi yang belum, siap-siap saja memasuki
‘dunia lain’ dari ilmu komputer.
Bahasa VBA : Sekilas Pandang
Dalam bagian ‘Sekilas Pemrograman VBA’ sudah kita bahas beberapa penggunaan objek,
properti, dan metode. Tetapi kita belum membahas bagaimana cara memanipulasi objek-objek
tersebut sehingga menjadi sesuatu yang berguna. Nah, bagian ini akan ‘mengupas’ dan
membantu kita ‘menjelajahi’ elemen-elemen bahasa VBA, perintah, dan struktur pemrograman
VBA yang akan kita gunakan dalam menyusun modul-modul VBA.
Untuk memulainya, kita akan coba melihat pada prosedur sederhana yang
tersimpan dalam modul VBA. Prosedur di bawah ini yang memiliki fungsi
untuk menghitung total nilai 1 sampai 100. Ketika sudah selesai, prosedur ini
akan menampilkan pesan yang berisi hasilnya.
Sub VBA_Demo() ' Ini adalah contoh VBA yang sederhana Total = 0 For I = 1 To 100 Total = Total + I
Production Engineering Department
59
Programming in Microsoft Excel 2000
Next I MsgBox TotalEnd Sub
Prosedur di atas menggunakan beberapa elemen bahasa pemrograman standar, yaitu :
Komentar (Comment), yaitu baris yang didahului oleh tanda kutip tunggal (');
Variabel (Variable), yaitu Total;
Dua perintah pemberian nilai (Assignment), yaitu Total = 0 dan Total = Total + I;
Struktur pengulangan (Looping Structure), yaitu For—Next; dan
Perintah VBA, yaitu MsgBox.
Cara Memasukkan Kode VBAKode VBA, yang terdapat dalam modul VBA, terdiri dari perintah-perintah. Sebagai latihan, langkah yang paling baik adalah
memasukkan satu perintah per satu baris. Tetapi, bagaimanapun, ini bukan suatu keharusan; kita bisa menggunakan tanda
titik dua (:) untuk memisahkan dua perintah dalam satu baris. Contoh berikut ini menggunakan 4 perintah dalam 1 baris :
Sub SatuBaris()
x = 1: y = 2: z = 3: MsgBox x+y+z
End Sub
Sebagian besar programmer lebih memilih untuk memasukkan satu perintah per satu baris seperti di bawah ini :
Sub BanyakBaris()
x = 1
y = 2
z = 3
MsgBox x+y+z
End Sub
Masing-masing baris dapat sepanjang yang kita suka; Code Window akan secara otomatis menggulung jika kode yang diketik
terlalu panjang. Tetapi jika kita memiliki satu perintah yang panjang sekali, kita bisa menggunakan tanda penghubung
perintah dalam VBA yaitu tanda underscore (_) dengan didahului oleh spasi. Contohnya :
Sub BarisBersambung()
NilaiTotal = _
Worksheets(“Sheet1”).Range(“A1”).Value + _
Worksheets(“Sheet2”).Range(“A1”).Value
End Sub
Ketika kita merekam macro, terkadang Excel menggunakan underscore untuk memisahkan perintah panjang menjadi
beberapa baris.
Setelah kita memasukkan suatu kode perintah, VBA secara otomatis akan melakukan langkah-langkah berikut untuk
mempermudah pembacaan perintah :
VBA akan menyisipkan spasi antara operator. Jika kita mengetik Jawab=1+2 (tanpa spasi), sebagai contoh, VBA
akan mengubahnya menjadi :
Ans = 1 + 2
VBA akan mengubah besar/kecilnya huruf untuk kata kunci (keywords), properti, dan metode. Jika kita mengetik
result=activesheet.range(“a1”).value=12, VBA akan mengubahnya menjadi :
Result = ActiveSheet.Range(“a1”).Value = 12
Karena penamaan variabel dalam VBA tidak case-sensitive, maka VBA secara otomatis akan mengubah nama
variabel dengan besar kecilnya huruf disamakan dengan besar kecilnya huruf variabel yang terakhir diketik.
Sebagai contoh, jika pertama kali kita mengetikkan nama variabel nilaiku (semuanya huruf kecil) lalu pada
perintah berikutnya kita mengetikkan NilaiKu, maka VBA secara otomatis akan mengubah seluruh nama
variabel nilaiku menjadi NilaiKu. Pengecualian jika kita mendeklarasikan variabel (dengan menggunakan Dim,
Private, atau Public); dalam hal ini seluruh besar kecilnya huruf nama variabel tersebut akan disesuaikan
dengan besar kecilnya huruf nama variabel yang dideklarasikan.
VBA akan memindai setiap perintah akan adanya syntax error. Jika VBA menemukan syntax error dalam suatu
perintah, maka perintah tersebut akan diberi warna yang berbeda dan akan menampilkan pesan yang menjelas-
kan kesalahan tersebut. Sebagai catatan, agar VBA melakukan pemeriksaan syntax error, aktifkan opsi Auto
Syntax Check yang terdapat dalam tab Editor di kotak dialog ToolsOptions….
Komentar
Production Engineering Department
60
Programming in Microsoft Excel 2000
Comment (komentar) adalah teks yang berfungsi sebagai penjelas yang ditaruh ke dalam kode
VBA kita. Komentar ini nantinya akan diabaikan oleh VBA. Komentar hanya digunakan sebagai
pemerjelas atau sebagai gambaran terhadap perintah yang ada.
Komentar ditandai dengan tanda kutip tunggal (') atau dengan keyword Rem. Kita bisa
menggunakan satu baris penuh sebagai komentar, atau kita bisa menyisipkannya di akhir setiap
perintah dalam baris yang sama (khusus untuk penggunaan tanda kutip). VBA akan mengabaikan
segala teks yang berada setelah komentar—kecuali jika tanda komentar tersebut berada di
antara tanda kutip ganda (sebagai jenis string). Contohnya, perintah berikut ini tidak
mengandung komentar, walaupun terdapat tanda kutip tunggal : Msg = “Hari Jum’at”
Contoh berikut ini menunjukkan prosedur VBA dengan tiga buah komentar :
Sub Komentar() Rem Prosedur ini untuk mengisi nilai 1 x = 1 'x diisi nilai 1 'Tampilkan hasilnya MsgBox xEnd Sub
Dalam menyusun komentar, perlu diperhatikan hal-hal berikut ini :
Gunakan komentar untuk menggambarkan tujuan setiap prosedur yang kita buat.
Gunakan komentar jika terjadi perubahan logika atau kode di dalam prosedur.
Gunakan komentar untuk menjelaskan fungsi dan tujuan masing-masing variabel. Jadi kita dan orang
lain dapat mudah memahami maksud dari masing-masing variabel.
Jangan gunakan komentar pada setiap perintah. Gunakan komentar pada perintah yang memerlukan
penjelasan saja.
Tulislah komentar sebelum kode ditulis dan jangan sesudah kode ditulis.
CATATAN …Terkadang kita ingin mencoba menggunakan perintah yang baru untuk menggantikan perintah yang lama dalam prosedur yang
kita buat. Dan kita ingin memastikan apakah perintah yang baru tersebut berhasil dengan baik sehingga perintah yang lama harus
dihilangkan. Nah, daripada perintah yang lama dihapus, lebih baik jika perintah yang lama tersebut diberi tanda komentar,
sehingga jika terjadi kesalahan kita masih bisa mengambil perintah yang lama tersebut.
VBA akan mengabaikan perintah jika diberi tanda komentar. Untuk mengembalikannya lagi, hilangkan saja komentarnya.
Variabel, Jenis Data, dan Konstanta
Tujuan utama dari VBA adalah memanipulasi data. Sebagian data terdapat dalam objek, seperti
range dalam worksheet. Data lainnya tersimpan dalam variabel yang bisa kita ciptakan.
Variables (variabel) adalah tempat penyimpanan data yang memiliki nama tertentu yang
terdapat di dalam memori komputer. Variabel dapat menampung jenis data yang berbeda-beda—
mulai dari nilai Boolean (True atau False) hingga bilangan desimal dengan presisi ganda.
Salah satu hal yang kita harus perhatikan dalam pembuatan nama variabel adalah dengan
memberi nama sejelas-jelasnya. VBA memiliki aturan dalam pembuatan nama variabel, yaitu :
Kita bisa menggunakan huruf, angka, dan beberapa tanda baca untuk nama variabel, tetapi karakter
pertama harus berupa huruf.
VBA tidak case-sensitive dalam masalah penamaan variabel. Untuk menjadikan nama variabel lebih
mudah dibaca, programmer biasanya menggabungkan antara huruf besar dan huruf kecil (sebagai
contoh : StokBarang daripada stokbarang).
Production Engineering Department
61
Programming in Microsoft Excel 2000
VBA tidak mengizinkan kita untuk menggunakan spasi atau tanda titik dalam penamaan variabel.
Untuk menjadikan lebih mudah dibaca, programmer biasanya menggunakan tanda underscore (contoh
: Stok_Barang dan bukannya Stok Barang).
Karakter tertentu (#, $, %, &, atau !) tidak dapat digunakan dalam penamaan variabel.
Panjang nama variabel tidak boleh lebih dari 254 karakter—lagupula belum pernah ada orang yang
mau membuat nama variabel sepanjang itu.
Berikut adalah contoh pemberian nilai ke variabel tertentu yang
menggunakan jenis data yang berbeda-beda. Nama variabel terletak pada
sebelah kiri tanda sama dengan, dan nilai yang diberikan terletak pada
sebelah kanan tanda sama dengan.
x = 1SafetyStock = 0.75Daily_Stock = 123450SudahSelesai = Falsex = x + 1NilaiKu = NilaiMu * 1.25NamaUser = “Aya Brea”TanggalMulai = #3/14/2001#
Yang perlu diingat adalah VBA banyak memiliki reserved word yang tidak boleh digunakan
sebagai nama variabel. Jika kita mencoba menggunakannya, maka VBA akan mengeluarkan
pesan kesalahan. Contohnya adalah jika kita mengetik : Next = 132, maka VBA akan
mengeluarkan pesan kesalahan karena kata Next merupakan reserved word yang digunakan
struktur For—Next. Sayangnya, pesan kesalahan yang diberikan tidak menggam-barkan
kesalahan yang sebenarnya. pesan kesalahan yang muncul adalah: Compile Error: Expected:
variable. Mungkin akan lebih ‘mengena’ jika pesannya seperti : Reserved word used as a
variable. Jadi jika menerima pesan kesalahan yang agak aneh, cobalah periksa sistem Help
untuk memastikan bahwa kita tidak menggunakan reserved word.
Menentukan Jenis Data
Setiap variabel yang kita deklarasikan sebaiknya memiliki jenis tertentu, apakah itu bilangan atau
teks. Jika kita tidak mendeklarasikan variabel dengan jenis data tertentu, maka VBA akan
menggunakan jenis data Variant yang bisa menampung semua jenis data. Berikut adalah tabel
yang memuat jenis-jenis data yang sudah disediakan oleh VBA sebelumnya.
Jenis Data yang sudah disediakan VBAJenis Data Byte Batasan Kandungan Isi/NilaiByte 1 byte 0 s/d 255Boolean 2 byte True atau FalseInteger 2 byte -32,768 s/d 32,767Long 4 byte -2,147,483,648 s/d 2,147,483,647Single 4 byte -3.402823E38 s/d –1.401298E-45 (untuk bilangan negatif)
1.401298E-45 s/d 3.402823E38 (untuk bilangan positif)Double 8 byte -1.79769313486232E308 s/d –4.94065645841247E-324 (untuk
bilangan negatif); 4.94065645841247E-324 s/d
1.79769313486232E308 (untuk bilangan positif)Currency 8 byte -922,337,203,685,477.5808 s/d 922,337,203,685,477.5807Decimal 14 byte +/- 79,228,162,514,264,337,593,543,950,335 tanpa nilai
desimal; +/- 7.9228162514264337593543950335 dengan 28bilangan desimal
Date 8 byte January 1, 0100 s/d December 31, 9999Object 4 byte Semua referensi ke segala macam objekString(variable-length)
10 byte +panjang string
0 hingga rata-rata 2 milyar karakter
String(fixed-length)
Panjang string 1 hingga rata-rata 65,400 karakter
Production Engineering Department
62
Programming in Microsoft Excel 2000
Variant(with numbers)
16 byte Semua jenis bilangan dengan batasan jenis data Double
Variant(with characters)
22 byte +panjang string
0 hingga rata-rata 2 milyar karakter
User defined Beragam tergantung elemen yang terdapat di dalamnyaPerhatikan : tanda , digunakan sebagai pemisah ribuan dan tanda . digunakan sebagai pemisah desimal. Dan tanda En = 10n.
CATATAN …Sebaiknya kita hanya menggunakan jenis data yang membutuhkan byte terkecil tetapi mampu menampung semua nilai yang kita
inginkan. Ketika VBA bekerja dengan data, kecepatan proses dipengaruhi oleh jumlah byte yang dibutuhkan, jadi semakin sedikit
byte yang dibutuhkan maka proses akan menjadi semakin cepat.
Jenis data Decimal adalah jenis data baru yang terdapat dalam Excel 2000. Jenis data ini adalah bukan jenis data biasa karena
jenis data ini tidak bisa dideklarasikan.
Kita bisa menggunakan fungsi VBA CDec untuk mengubah jenis data Variant menjadi Decimal.
Mendeklarasikan Variabel
Jika kita tidak mendeklarasikan suatu variabel yang akan digunakan dalam program, VBA akan
menggunakan jenis data default, yaitu Variant. Data yang disimpan dalam jenis Variant bersifat
seperti bunglon: ia dapat berubah jenis, tergantung apa yang akan kita lakukan dengannya.
Prosedur di bawah ini menunjukkan bagaimana suatu variabel dapat berubah jenisnya.
Sub DemoVariant() MyVar = “123” MyVar = MyVar / 2 MyVar = “Nilai = ” & MyVar MsgBox MyVarEnd Sub
Dalam prosedur di atas, MyVar bermula dengan jenis string. Lalu string ini dibagi dua dan menjadi
jenis bilangan. Selanjutnya, MyVar digabungkan dengan string, dan menyebabkan MyVar kembali
menjadi jenis string. Dan perintah MsgBox akan menampilkan pesan : Nilai = 61.5.
Menentukan Jenis Data
Kita bisa menggunakan fungsi VBA TypeName untuk mengetahui jenis data suatu variabel. Berikut
adalah modifikasi program sebelumnya yang menambahkan fungsi TypeName pada tiap langkah
untuk mengetahui jenis data yang dihasilkan per langkah.
Sub DemoVariant2() MyVar = “123” MsgBox TypeName(MyVar) MyVar = MyVar / 2 MsgBox TypeName(MyVar) MyVar = “Nilai = ” & MyVar MsgBox TypeName(MyVar) MsgBox MyVarEnd Sub
Keuntungan Deklarasi VariabelDengan mendeklarasikan suatu variabel beserta jenis datanya, kita akan mendapatkan dua keuntungan, yaitu :
Program kita akan berjalan lebih cepat dan menggunakan memori lebih efisien. Jenis data default VBA, Variant,
menyebabkan VBA melakukan pemeriksaan jenis data berulang-ulang dan menggunakan memori lebih dari yang biasanya.
Jika VBA mengetahui jenis data suatu variabel, maka pemeriksaan jenis data yang berulang-ulang tersebut tidak akan
dilakukan, dan akan menghemat penggunaan memori.
Dapat menghindari masalah akibat kesalahan pengetikan nama variabel. Misalnya kita memiliki variabel yang tidak
dideklarasikan bernama CurrentRate. Lalu, pada baris tertentu di bawahnya kita menyisipkan perintah CurentRate = 0.75.
Production Engineering Department
63
Programming in Microsoft Excel 2000
Kesalahan seperti inilah yang sulit dilacak, dan akan menyebabkan program kita menghi-tung dan menghasilkan nilai yang
salah.
Memaksa Pendeklarasian Semua Variabel
Untuk memaksa kita mendeklarasikan semua variabel yang kita gunakan,
tambahkan perintah berikut ini dalam modul VBA kita.
Option Explicit
Perintah di atas akan menyebabkan program untuk berhenti ketika VBA menemukan nama
variabel yang belum dideklarasikan sebelumnya. VBA kemudian akan menampilkan pesan
kesalahan, dan kita harus mendeklarasikan variabel tersebut.
CATATAN …Agar perintah Option Explicit ditambahkan secara otomatis oleh VBA ketika kita membuat modul VBA baru. Aktifkan opsi yang
terletak di ToolsOptions…EditorRequire Variable Declaration.
Lingkup Suatu Variabel
Lingkup/jangkauan (scope) suatu variabel menentukan modul dan prosedur mana saja yang bisa
menggunakan variabel tersebut. Lingkup suatu variabel dapat salah satu di antara :
Lingkup VariabelLingkup Bagaimana Variabel tersebut harus
dideklarasikanSatu prosedur Gunakan perintah Dim atau Static (dalam pendeklara-
sian) di dalam prosedur yang bersangkutan.Satu modul Gunakan perintah Dim atau Private sebelum prosedur
pertama di dalam modul.Seluruh modul Gunakan perintah Public sebelum prosedur pertama di
dalam modul.
Contoh berikut ini menggambarkan deklarasi beberapa variabel lokal (local variables) yang
hanya dikenal di satu prosedur saja.
Sub MySub() Dim x As Integer Dim UserName As String * 20 Dim NilaiKu Dim Nilai1 As Single Dim InterestRate As SingleEnd Sub
Kita juga bisa mendeklarasikan beberapa variabel dalam satu baris,
misalnya :
Dim x As Integer, y As Integer, z As IntegerPrivate Nilai1 As Long, Nilai2 As Long
CATATAN …Tidak seperti bahasa pemrograman lain, VBA tidak mengizinkan pendeklarasian beberapa variabel terhadap satu jenis data
dengan menggunakan tanda koma sebagai pemisahnya. Sebagai contoh, perintah berikut, walaupun sah, tidak mendeklarasikan
seluruh variabel berjenis Integer :
Dim i, j, k As Integer
Production Engineering Department
64
Programming in Microsoft Excel 2000
Dalam VBA, hanya variabel k saja dideklarasikan sebagai Integer; sisanya dideklarasikan sebagai Variant.
Sedangkan untuk mendeklarasikan variabel agar dikenal oleh seluruh
prosedur yang terdapat dalam satu modul tertentu, perhatikan contoh
deklarasi variabel di bawah ini :
Dim CurrentValue As IntegerPrivate RunningValue As Long
Sub Sub_1() ...End Sub
Sub Sub_2() ...End Sub
Untuk mendeklarasikan variabel agar dikenal oleh seluruh modul dan seluruh
prosedur yang terdapat di dalamnya, perhatikan contoh deklarasi variabel di
bawah ini :
Public CurrentRate As Long
Sub Sub_1() ...End Sub
Sub Sub_2() ...End Sub
Cara Lain Mendeklarasikan VariabelSeperti bahasa BASIC pendahulunya, VBA mengizinkan kita untuk menambahkan karakter tertentu pada nama variabel
untuk mengindikasikan jenis datanya. Sebagai contoh, kita bisa mendeklarasikan variabel MyVar sebagai jenis Integer
dengan cara : Dim MyVar%
Berikut adalah karakter untuk mendeklarasikan jenis data yang didukung VBA.
Jenis Data Karakter deklarasi
Integer %
Long &
Single !
Double #
Currency @
String $
Sebenarnya metode penggunaan karakter untuk pendeklarasian jenis data ini adalah untuk menjaga kompatibilitas dengan
bahasa BASIC yang lama; sebaiknya metode ini dihindari dan gunakan cara pendeklarasian yang biasa saja.
Selain penggunaan perintah Private, Public, dan Dim, terdapat satu perintah deklarasi variabel
lain yaitu Static (statis). Jenis variabel ini harus ditaruh di dalam suatu prosedur dan ketika
keluar dari prosedur tersebut, nilai yang dikandung tidak akan hilang dan akan disimpan selama
program berjalan. Biasanya jenis ini digunakan untuk membuat counter (variabel yang
menyimpan nilai perhitungan yang bertambah atau berkurang secara konstan).
Konsep ini berbeda dengan deklarasi variabel yang menggunakan Private atau Dim, di mana
data yang disimpan akan hilang jika keluar dari prosedur. Untuk lebih jelasnya
perhatikan contoh berikut ini :
Sub Hitung1() Static Counter As Integer Counter = Counter + 1 MsgBox Counter
Sub Hitung2() Dim Counter As Integer Counter = Counter + 1 MsgBox Counter
Production Engineering Department
65
Programming in Microsoft Excel 2000
End Sub
Sub Utama1() Hitung1 Hitung1 Hitung1End Sub
End Sub
Sub Utama2() Hitung2 Hitung2 Hitung2End Sub
Kedua program di atas terlihat hampir sama. Perbedaannya hanya ada di deklarasi variabel
Counter antara prosedur Hitung1 dan Hitung2. Jika kita menjalankan Utama1 maka VBA akan
menampilkan pesan dengan MsgBox yang isinya 1, lalu 2, lalu 3. Tetapi jika kita menjalankan
Utama2 maka VBA akan menampilkan pesan dengan MsgBox yang isinya 1, lalu 1, lalu 1. Jelas ?
Konstanta
Suatu variabel nilainya bisa, bahkan sering dilakukan, berubah-ubah ketika suatu perintah atau
prosedur mengaksesnya. Terkadang, kita membutuhkan suatu data yang nilainya tidak bisa
diubah-ubah. Jenis data ini disebut konstanta (constant).
Kita bisa mendeklarasikan konstanta dengan menggunakan perintah Const seperti berikut :
Const JumlahKuartal As Integer = 4Const Rate = 0.275, Period = 12Public Const ModName As String = “Budget Macros”Private Const AppName = “Budget Application”
CATATAN …Jika kita mencoba untuk mengubah isi suatu konstanta, maka VBA akan menampilkan pesan kesalahan.
Excel dan VBA memiliki banyak sekali konstanta yang sudah dideklarasikan (predefined
constants) yang bisa kita gunakan tanpa harus mendeklarasikan lagi. Konstanta ini biasanya
digunakan untuk memudahkan pengguna menggunakan suatu nilai hanya dengan menghapalkan
nama harfiahnya. Contohnya : Application.Calculation = xlManual. Sebenarnya konstanta
xlManual ini memiliki nilai yaitu –4135—yang mungkin agak sulit untuk dihapalkan.
Jenis Data String
Seperti layaknya Excel, VBA juga bisa memanipulasi data berjenis bilangan dan teks (string). Ada
dua jenis string di VBA, yaitu :
Fixed-length string, string yang dideklarasikan dengan jumlah karakter tertentu. Panjang maksimal
string ini adalah 65,535 karakter. Contohnya :
Dim MyString As String * 50
Variable-length string, string yang dideklarasikan dengan jumlah karakter bebas. Panjang maksimal
string ini adalah, secara teori, 2 milyar karakter. Contohnya :
Dim YourString As String
Jenis Data Date
Kita sebenarnya bisa saja menaruh data tanggal di dalam variabel jenis string, tetapi kita tidak
akan bisa memprosesnya dengan perhitungan-perhitungan khas data tanggal. Nah, untuk itulah
Production Engineering Department
66
Programming in Microsoft Excel 2000
VBA menyediakan data berjenis tanggal (date). Dalam VBA kita bisa mengisi variabel jenis date
dengan mengapitnya dengan tanda pound (#) seperti contoh berikut :
Dim StartDate As DateConst FirstDay As Date = #1/1/2001#Const SiangHari = #12:00:00#
StartDate = Now
CATATAN …Batasan data tanggal minimal yang mampu ditangani Excel lebih kecil jika dibandingkan dengan VBA. Jika VBA mampu
menampung tanggal terkecil hingga January 1, 0100, Excel hanya mampu menampung hingga January 1, 1900.
Jadi kita harus berhati-hati jika kita ingin mengisikan tanggal ke worksheet Excel melalui VBA.
Operator Perhitungan, Logika dan Perbandingan
Seperti kita tahu, kita bisa mengisikan suatu nilai ke dalam suatu variabel dengan menggunakan
tanda sama dengan (=). Nilai yang berada di sisi kanan tanda sama dengan tidak harus nilai
tunggal melainkan bisa berupa gabungan beberapa nilai yang menggunakan perantara operator,
Berikut diberikan daftar beberapa operator yang sering digunakan dalam proses.
Operator PerhitunganOperator Maksud Contoh+ Penjumlahan 10 + 2 12- Pengurangan 2 – 3 -1* Perkalian -4 * 5 -20/ Pembagian 10 / 3 3.33333333\ Pembagian bulat 10 \ 3 3^ Pemangkatan 2 ^ 3 8& Penggabungan teks “a” & “b” “ab”Mod Sisa hasil bagi 10 Mod 3 1
Operator PerbandinganOperator Maksud Contoh= sama dengan 2 = 3 False> lebih besar dari 7 > 3 True< lebih kecil dari 7 < 7 False>= lebih besar atau
sama dengan dari8 >= 7 True
<= lebih kecil atau sama dengan dari
-1 <= -5 False
<> tidak sama dengan “a” <> “b” True
Operator Logika (0 = False; 1 = True)A B A And B A Or B Not A A Xor B A Eqv
BA Imp B
0 0 0 0 1 0 1 10 1 0 1 1 1 0 11 0 0 1 0 1 0 01 1 1 1 0 0 1 1
CATATAN …Urutan perhitungan dalam VBA sama seperti dalam Excel. Lihat “Urutan Proses Perhitungan” dalam Modul 1 untuk lebih jelasnya.
Array
Production Engineering Department
67
Programming in Microsoft Excel 2000
Array (larik) adalah sekumpulan data yang berjenis sama dan memiliki nama yang sama.
Masing-masing komponen dalam array diakses melalui nomor indeks. Misalkan kita memiliki
array NamaBulan yang berukuran 12, maka untuk mengakses komponen pertama kita bisa
mengambil dari NamaBulan(0), komponen kedua NamaBulan(1), dan seterusnya.
Untuk mendeklarasikan array cukup sederhana yaitu dengan menggunakan perintah Dim.
Dalam mendeklarasikan array, kita hanya harus menentukan indeks
teratasnya, di mana VBA akan mengasumsikan secara otomatis indeks
terendahnya adalah 0. Contohnya :
Dim NamaBulan(12) As String ' NamaBulan(0) s/d NamaBulan(12)Dim ArrayKu(0 To 100) As Integer ' ArrayKu(0) s/d ArrayKu(100)Dim ArrayKu(1 To 100) As Long ' ArrayKu(1) s/d ArrayKu(100)
Jika kita ingin VBA secara otomatis mengasumsikan bahwa indeks terendah
adalah 1 untuk semua arrray yang hanya mendeklarasikan indeks teratasnya
saja, tambahkan perintah berikut ini sebelum prosedur pertama di dalam
modul tertentu.
Option Base 1
Array yang sebelumnya kita bahas di atas adalah array satu dimensi (one-dimensional arrays).
Array juga bisa dideklarasikan secara multidimensi (multidimensional arrays). Array di
dalam VBA bisa menampung hingga 60 dimensi, walaupun sangat jarang
sekali kita membutuhkan array lebih dari 3 dimensi. Kita bisa
menggambarkan array 2 dimensi sebagai bujursangkar yang terdiri dari
bujursangkar-bujursangkar kecil berisi komponen, dan array 3 dimensi
sebagai kubus yang di dalamnya terdapat kubus-kubus kecil. Contoh berikut
ini berhubungan dengan deklarasi array 2 dimensi dan penggunaannya :
Dim ArrayKu(1 To 10, 1 To 10) As Integer
ArrayKu(3,4) = 125 ' akses komponen baris ke 3 kolom ke 4
Array 1 Dimensi (1) (2) (3) (4) (5) …… (n-2) (n-1) (n)Dimensi = (1 To n)
Array 2 Dimens
i
(1,1) (1,2) (1,3) (1,4) …… (1,n-1) (1,n)(2,1) (2,2) (2,3) (2,4) …… (2,n-1) (2,n)(3,1) (3,2) (3,3) (3,4) …… (3,n-1) (3,n)(4,1) (4,2) (4,3) (4,4) …… (4,n-1) (4,n)
……
(m-1,1) (m-1,2) (m-1,3) (m-1,4) …… (m-1,n-1) (m-1,n)(m,1) (m,2) (m,3) (m,4) …… (m,n-1) (m,n)
Dimensi = (1 To m, 1 To n)
Array 3 dimensi
Production Engineering Department
68
Programming in Microsoft Excel 2000
Dimensi = (1 To m, 1 To n,1 To p)
Kita juga bisa membuat array yang mampu berubah-ubah ukuran dimensinya setiap kali kita
inginkan. Array ini disebut dynamic arrays (array dinamis). Deklarasi array dinamis
adalah deklarasi array biasa tanpa menggunakan indeks terendah ataupun
teratas, seperti :
Dim ArrayKu() As Integer
Tapi, dengan adanya deklarasi array di atas bukan berarti kita langsung bisa menggunakan array
tersebut, melainkan kita harus mendeklarasikan ulang dengan perintah ReDim. Untuk lebih
jelasnya perhatikan prosedur di bawah ini :
Sub DynArray() Dim ArrayKu() As Integer i = 5 ReDim ArrayKu(1 To i) As Integer ArrayKu(i) = 99 i = i + 5 ReDim ArrayKu(1 To i) As Integer ArrayKu(i) = 999End Sub
Jika ingin agar isi array yang lama tidak hilang ketika kita mendeklarasikan ulang ukuran array
tersebut, maka kita harus menambahkan perintah Preserve pada Redim, seperti :
Redim Preserve ArrayKu(15) As Integer
Variabel Objek
Variabel objek (object variables) adalah variabel yang berisi referensi ke suatu objek, seperti
range atau worksheet. Keuntungan yang didapat dari penggunaan variabel objek adalah :
dapat menyederhanakan kode.
dapat menjalankan program dengan lebih cepat.
Variabel objek, sama sepeti variabel lain, bisa dideklarasikan dengan menggunakan perintah Dim,
Private, atau Public. Perhatikan kedua contoh di bawah ini dan pelajari
perbedaannya :Sub NoObjVar() Worksheets(“Sheet1”).Range(“A1”).Value = 124 Worksheets(“Sheet1”).Range(“A1”).Font.Bold = True Worksheets(“Sheet1”).Range(“A1”).Font.Italic = TrueEnd Sub
Sub ObjVar() Dim MyCell As Range Set MyCell = Worksheets(“Sheet1”).Range(“A1”) MyCell.Value = 124 MyCell.Font.Bold = True MyCell.Font.Italic = TrueEnd Sub
Production Engineering Department
69
Programming in Microsoft Excel 2000
CATATAN …Setelah suatu objek direferensikan ke suatu variabel, VBA dapat mengaksesnya dengan lebih cepat daripada penggunaan
referensi objek yang biasa dan panjang. Jadi jika kita menginginkan kecepatan program, gunakan variabel objek!
Satu hal yang berhubungan dengan masalah ini adalah adanya proses di dalam VBA yang disebut “proses titik” (dot
processing). Setiap kali VBA menemukan titik dalam referensi objek, seperti dalam Sheets(1).Range(“A1”), ia akan melakukan
pemeriksaan terhadap objek yang bersangkutan. Nah, dengan menggunakan variabel objek, penggunaan titik dapat dikurangi.
Semakin sedikit titik yang ada, semakin cepat program berjalan.
Cara lain untuk mengurangi penggunaan titik yang banyak adalah dengan menggunakan perintah With...End With.
Built-In Function
Salah satu keunggulan yang dimiliki VBA adalah beragamnya built-in function (fungsi yang
sudah tersedia sebelumnya) yang disediakan untuk mempermudah perhitungan dan operasi-
operasi tertentu. Bahkan terkadang fungsi-fungsi tersebut mampu melakukan sesuatu yang sulit
atau tidak mungkin dilakukan oleh kita. Banyak fungsi VBA yang sejenis dengan fungsi di dalam
Excel, misalnya fungsi UPPER dalam Excel sama dengan fungsi UCase dalam VBA.
Seluruh built-in function yang ada sebenarnya tergabung dalam objek VBA, namun kita bisa
menggunakan fungsi-fungsi tersebut tanpa harus menyertakan referensi VBA. Contohnya
VBA.MsgBox “Test” hasilnya akan sama dengan MsgBox “Test”.
CATATAN …Karena begitu banyaknya built-in function yang terdapat dalam VBA yang tidak mungkin dijelaskan satu persatu di sini, maka
cara yang terbaik untuk mempelajarinya adalah dengan menggunakan sistem Help yang ada di dalam VBA. Cukup ketikkan fungsi
yang ingin kita pelajari lalu posisikan kursor pada fungsi tersebut, dan tekan F1.
Untuk melihat seluruh built-in function yang terdapat dalam VBA, cukup ketikkan VBA diikuti dengan tanda titik (.).
Fungsi MsgBoxFungsi MsgBox digunakan untuk menampilkan pesan tertentu dan merupakan salah satu fungsi yang penting dan sering
digunakan di dalam VBA. Banyak contoh di dalam modul ini menggunakan fungsi MsgBox untuk menampilkan isi variabel
tertentu. Jika sebelumnya kita menggunakan MsgBox hanya sebagai prosedur (tidak mengembalikan suatu nilai), sekarang
kita akan mencoba menggunakan MsgBox sebagai fungsi (mengembalikan suatu nilai).
Fungsi MsgBox selain mengembalikan nilai tombol yang ditekan , tetap menampilkan pesan seperti prosedur MsgBox yang
sudah kita bahas sebelumnya. Bentuk umum fungsi MsgBox memiliki lima argumen/parameter sebagai berikut (parameter
yang diberi tanda kurung siku bersifat opsional) :
MsgBox(prompt[, buttons][, title][, helpfile, context])
prompt – pesan yang akan ditampilkan dalam kotak pesan.
buttons – nilai yang menyatakan tombol apa saja dan jenis icon, yang akan ditampilkan dalam kotak pesan. Kita bisa
menggunakan konstanta yang sudah disediakan oleh VBA—misalnya vbYesNo.
title – judul kotak pesan yang akan ditampilkan. Nilai default-nya adalah Microsoft Excel.
helpfile dan context – nama file dan identitas bantuan yang akan digunakan dalam kotak pesan.
Perhatikan contoh berikut ini untuk lebih jelasnya :
Ans = MsgBox(“Lanjutkan proses ?”, vbYesNo + vbQuestion, “Konfirmasi”)
If (Ans = vbNo) Then Exit Sub
Perintah di atas akan menampilkan kotak pesan yang memiliki tombol Yes dan No dengan icon Question. Lalu hasil dari
fungsi MsgBox disimpan dalam variabel Ans. Ans nantinya akan berisi nilai tombol yang ditekan. Pada perintah di bawahnya,
terdapat kondisi jika yang ditekan adalah tombol No, maka proses akan berhenti. Selain cara di atas kita juga bisa
menggunakan fungsi MsgBox secara langsung tanpa menggunakan variabel sebagai berikut :
If (MsgBox(“Lanjutkan proses ?”, vbYesNo + vbQuestion, “Konfirmasi”) = vbNo) Then Exit Sub
Hasil untuk kedua contoh di atas adalah sebagai berikut :
Production Engineering Department
70
Programming in Microsoft Excel 2000
LATIHAN
Jika cell A1 berisi panjang suatu komponen ban dan cell A2 berisi toleransinya, buatlah satu
prosedur VBA untuk mengisi cell D1 dan E1 dengan panjang minimal dan maksimal yang
diizinkan !
Buatlah satu prosedur VBA untuk memanipulasi cell yang aktif dengan mengubah lebar
kolomnya menjadi 15 dan tinggi barisnya menjadi 25.
Dalam matematika terdapat persamaan ax2+bx+c = 0, dan untuk mencari akarnya
digunakan rumus : x1 = -b + √((b2-4ac)/2a) dan x2 = -b - √((b2-4ac)/2a). Buatlah prosedur
untuk mencari akar x1 dan x2 dari nilai a, b, dan c yang ada di cell tertentu dan menaruh
hasilnya di cell yang lain ! Pastikan juga agar nilai hasil yang berada di dalam tanda √(……)
tidak negatif, karena bilangan negatif tidak dapat diakarkan !
Struktur Dasar Pemrograman
Dalam ‘dunia’ pemrograman banyak sekali struktur bahasa yang mutlak harus kita kuasai agar
kita bisa membuat program yang baik, fleksibel, efektif dan efisien, serta terstruktur. Secara garis
besar struktur bahasa pemrograman bisa dikategorikan menjadi 3, yaitu :
pengulangan (looping) proses;
penyeleksian kondisi (conditioning) proses; dan
pemecahan program menjadi beberapa modul (modulling).
With-End With
Struktur With-End With mengizinkan kita untuk melakukan beberapa operasi dengan hanya
menggunakan satu referensi objek saja. Untuk lebih jelasnya perhatikan contoh berikut ini, yang
digunakan untuk mengubah lima properti pem-format-an pada Range yang aktif :
Sub ChangeFont1() Selection.Font.Name = “Times New Roman” Selection.Font.FontStyle = “Bold Italic” Selection.Font.Size = 12 Selection.Font.Underline = xlSingle Selection.Font.ColorIndex = 5End Sub
Prosedur di atas bisa diubah dengan menggunakan struktur With-End With sebagai berikut :
Sub ChangeFont2() With Selection.Font .Name = “Times New Roman” .FontStyle = “Bold Italic” .Size = 12
Production Engineering Department
71
Programming in Microsoft Excel 2000
.Underline = xlSingle .ColorIndex = 5 End WithEnd Sub
Tujuan dari penggunaan struktur With-End With adalah untuk menghemat penulisan program
dan agar program dapat berjalan lebih cepat. Itulah sebab mengapa ketika kita melakukan
perekaman macro, Excel akan selalu menggunakan struktur With-End With jika memungkinkan.
For-Next
Struktur For-Next yang sederhana digunakan untuk mengulang proses dari nilai yang satu
hingga mencapai nilai yang lainnya. Syntax-nya adalah :
For counter = start To end [Step stepval]
[instructions]
Next [counter]
Dimana proses instructions akan diulang mulai dari nilai start hingga nilai end dengan
lompatan nilai stepval dimana nilai yang berulang itu sendiri disimpan di variabel counter.
Perhatikan contoh berikut yang digunakan untuk menghitung total hasil akar
1 sampai 100 :
Sub SumAkar()Dim Sum As DoubleDim Hitung As Integer Sum = 0 For Hitung = 1 To 100 Sum = Sum + Sqr(Hitung) Next Hitung MsgBox SumEnd Sub
Pada contoh di atas, Hitung (variabel pengulangan) dimulai dari nilai 1 lalu bertambah 1 setiap
kali terjadi pengulangan. Variabel Sum lalu akan mengakumulasikan akar dari masing-masing nilai
Hitung. Kita juga bisa menggunakan perintah Step untuk menentukan lompatan nilai
pengulangan. Berikut adalah modifikasi program sebelumnya yang digunakan
untuk menghitung total hasil akar bilangan yang ganjil saja mulai dari 1
sampai 100 :
Sub SumAkarGanjil()Dim Sum As DoubleDim Hitung As Integer Sum = 0 For Hitung = 1 To 100 Step 2 Sum = Sum + Sqr(Hitung) Next Hitung MsgBox SumEnd Sub
Pada contoh di atas Hitung akan dimulai dari 1 lalu 3, 5, 7 dan seterusnya hingga nilai akhir 99.
Berikut adalah contoh lain dari penggunaan For-Next, cobalah analisa maksud dan
fungsi dari prosedur tersebut :
Sub ContohForNext()Dim NilaiAwal As Integer, BanyakCell As Integer, I As Integer NilaiAwal = Val(InputBox(“Masukkan Nilai Awal :”)) BanyakCell = Val(InputBox(“Banyaknya Cell :”)) For I = 0 To BanyakCell – 1 ActiveCell.Offset(I, 0).Value = NilaiAwal + I Next IEnd Sub
Production Engineering Department
72
Programming in Microsoft Excel 2000
Pada contoh-contoh sebelumnya, pengulangan yang dilakukan relatif sederhana karena hanya
ada satu pengulangan. Sebenarnya kita bisa menyusun struktur For-Next di dalam struktur For-
Next yang lainnya. Perhatikan contoh berikut yang digunakan untuk mengisi
nilai –1 ke dalam setiap elemen array berukuran 10 x 10 x 10 :
Sub ContohForNext()Dim ArrayKu(1 To 10, 1 To 10, 1 To 10) As IntegerDim I As Integer, J As Integer, K As Integer For I = 1 To 10 For J = 1 To 10 For K = 1 To 10 ArrayKu(I, J, K) = -1 Next K Next J Next IEnd Sub
CATATAN …Untuk menghentikan proses pengulangan dan keluar dari struktur For-Next, gunakanlah perintah Exit For.
Selain bentuk For-Next sederhana, terdapat juga bentuk yang lain yaitu For Each-Next yang
digunakan untuk mengakses semua objek yang terdapat dalam suatu koleksi. Dengan perintah
For Each-Next ini kita tidak perlu mengetahui jumlah objek yang terdapat dalam suatu koleksi.
Syntaxnya adalah :
For Each element In group
[instructions]
Next [element]
Dimana proses instruction akan dilaksanakan untuk seluruh objek element yang tergabung
dalam group. Untuk lebih jelasnya perhatikan contoh berikut ini :
Sub Macro1()Dim Nilai(5) As Single, I As IntegerDim N As Variant For I = 0 To 5 Nilai(I) = Rnd Next I For Each N In Nilai Debug.Print N Next NEnd Sub
Program di atas akan mengisi array berukuran 5 x 1 dengan bilangan acak (fungsi Rnd
menghasilkan bilangan acak yang yang lebih kecil dari 1 dan lebih besar atau sama dengan 0,
atau bisa dikatakan 0 ≤ Rnd < 1) lalu menampilkannya di jendela Immediate.
CATATAN …Variabel yang digunakan oleh struktur For Each-Next yang mengakses komponen dalam array harus berjenis Variant.
Berikut adalah contoh lain penggunaan For Each-Next yang digunakan untuk
menampilkan pesan nama semua worksheet yang ada di dalam workbook
yang aktif :
Sub x() Dim Item As Worksheet
Production Engineering Department
73
Programming in Microsoft Excel 2000
For Each Item In ActiveWorkbook.Worksheets MsgBox Item.Name Next ItemEnd Sub
LATIHAN
Buatlah prosedur untuk memeriksa apakah di dalam suatu workbook ada worksheet yang
tersembunyi. Jika ada, maka tampilkan nama worksheet tersebut dengan perintah MsgBox !
Buatlah prosedur untuk menutup semua workbook yang ada selain workbook yang sedang
aktif !
Buatlah prosedur untuk mengubah isi semua cell yang terdapat pada range yang dipilih
menjadi huruf besar semua !
Analisalah prosedur di bawah ini dan tentukan maksud dan fungsinya :
Sub SoalNomor4() Tertinggi = Application.WorksheetFunction.Max(Range(“A:A”)) For Baris = 1 To 65536 Set CellNya = Range(“A1”).Offset(Baris – 1, 0) If (CellNya.Value = Tertinggi) Then MsgBox “Nilai Tertinggi terdapat dalam baris ” & Baris CellNya.Activate Exit For End If Next BarisEnd Sub
Buatlah prosedur untuk menghitung nilai rata-rata yang terdapat dalam suatu range yang
dipilih dengan menggunakan perintah For-Next atau For Each-Next !
Buatlah prosedur untuk menukar isi dua buah array berukuran 5 x 5 lalu jumlahkan masing-
masing elemen array tersebut dan simpan hasilnya dalam array lain !
Do-While
Beda dengan pengulangan For-Next yang memiliki batas nilai awal dan nilai akhir, struktur
pengulangan Do-While digunakan jika yang diketahui hanya kondisi dilaksanakannya
pengulangan. Secara harfiah, Do-While jika diartikan menjadi Lakukan-Selama. Jadi selama
kondisi terpenuhi, pengulangan akan terus dilaksanakan. Syntaxnya adalah :
Do [While condition]
[instructions]
Loop
atau
Do
[instructions]
Loop [While condition]
Seperti bisa dilihat di atas, kita dapat meletakkan kondisi pada awal atau akhir blok. Perbedaan
antara kedua syntax di atas adalah pada syntax yang pertama, ada kemungkinan instructions
tidak pernah dijalankan, sedangkan pada syntax yang kedua, instructions akan dijalankan
sedikitnya 1 kali.
Untuk lebih jelasnya perhatikanlah contoh berikut ini yang digunakan untuk
mengosongkan isi cell mulai dari cell yang aktif lalu ke bawah hingga ditemui
cell yang kosong :
Sub DemoDoWhile1()
Production Engineering Department
74
Programming in Microsoft Excel 2000
Do While Not IsEmpty(ActiveCell) ActiveCell.Value = 0 ActiveCell.Offset(1, 0).Select LoopEnd Sub
Jika programnya diubah menjadi sebagai berikut maka pengulangan akan
dilaksanakan minimal satu kali, walaupun cell yang pertama itu kosong :
Sub DemoDoWhile2() Do ActiveCell.Value = 0 ActiveCell.Offset(1, 0).Select Loop While Not IsEmpty(ActiveCell)End Sub
Berikut adalah contoh lain yang digunakan untuk membuka dan membaca suatu file teks lalu
mengubah setiap baris menjadi huruf besar semua dan ditaruh di worksheet. Proses ini akan
terus berulang hingga dicapai akhir file (dengan menggunakan fungsi EOF). Dan perintah
terakhir akan menutup file.
Sub DemoDoWhile3() Open “c:\data\textfile.txt” For Input As #1 Baris = 0 Do While Not EOF(1) Input #1, HasilBaca Range(“A1”).Offset(Baris, 0) = UCase(HasilBaca) Baris = Baris + 1 Loop Close #1End Sub
Do-Until
Pengulangan Do-Until memiliki fungsi yang hampir sama dengan Do-While. Jika diartikan secara
harfiah, Do-Until akan menjadi Lakukan-Sampai. Jadi pengulangan Do-Until ini akan terus
dilaksanakan selama kondisinya tidak terpenuhi, jika kondisinya terpenuhi maka pengulangan
akan berakhir.
CATATAN …Struktur pengulangan Do-While akan terus dilaksanakan selama kondisinya bernilai True, sedangkan struktur pengulangan
Do-Until akan terus dilaksanakan selama kondisinya bernilai False.
Syntax yang dimiliki oleh Do-Until ada dua, yaitu :
Do [Until condition]
[instructions]
Loop
atau
Do
[instructions]
Loop [Until condition]
Seperti bisa dilihat di atas, kita dapat meletakkan kondisi pada awal atau akhir blok. Perbedaan
antara kedua syntax di atas adalah pada syntax yang pertama, ada kemungkinan instructions
tidak pernah dijalankan, sedangkan pada syntax yang kedua, instructions akan dijalankan
sedikitnya 1 kali.
Production Engineering Department
75
Programming in Microsoft Excel 2000
Berikut adalah contoh yang digunakan untuk membuka dan membaca suatu file teks lalu
mengubah setiap baris menjadi huruf besar semua dan ditaruh di worksheet. Proses ini akan
terus berulang hingga dicapai akhir file (dengan menggunakan fungsi EOF). Dan perintah terakhir
akan menutup file. Contoh ini merupakan modifikasi dari program sebelumnya yang
menggunakan Do-While. Coba cari dan analisa perbedaannya !
Sub DemoDoUntil() Open “c:\data\textfile.txt” For Input As #1 Baris = 0 Do Until EOF(1) Input #1, HasilBaca Range(“A1”).Offset(Baris, 0) = UCase(HasilBaca) Baris = Baris + 1 Loop Close #1End Sub
CATATAN …Untuk menghentikan proses pengulangan dan keluar dari struktur Do-While atau Do-Until, gunakanlah perintah Exit Do.
LATIHAN
Buatlah prosedur untuk menghasilkan deret bilangan sebagai berikut (boleh dengan For-
Next, Do-While, atau Do-Until) :
1 2 4 8 16 ……… 1024
1 3 5 7 9 ……… 21
1 3 2 4 3 5 4 6 5 7 6 8 7 9 8 10 9 11 10 12
Buatlah program sederhana untuk memeinta masukkan pessword ! Program akan terus
berulang hingga dimasukkan password yang benar.
If-Then
Mungkin struktur If-Then merupakan struktur yang sangat penting dan yang akan sering
digunakan dalam pemrograman. Struktur If-Then memungkinkan program kita menjadi fleksibel
dan mampu mengambil keputusan dari masukkan tertentu dan menghasilkan keluaran yang
berbeda. Syntax dasar dari If-Then ini adalah :
If condition Then true_instruction [Else false_instruction]
Struktur di atas akan menguji condition. Jika hasilnya True, maka true_instruction akan
dijalankan, sebaliknya jika hasilnya False, maka false_instruction akan dijalankan. Perlu
diperhatikan juga bahwa penggunaan Else bersifat opsional. Perhatikan contoh
berikut ini untuk lebih jelasnya :
Sub Ucapan() If Time < 0.5 Then MsgBox “Selamat Pagi”End Sub
Prosedur di atas digunakan untuk menampilkan ucapan berdasarkan waktu yang aktif (fungsi
Time akan mengembalikan waktu yang aktif berisikan nilai desimal—sebagai contoh, tengah hari
dinyatakan dengan nilai 0.5). Pada prosedur di atas, jika Time menghasilkan nilai lebih besar dari
0.5, maka tidak akan dilaksanakan apa-apa. Jika kita ingin menampilkan ucapan setelah tengah
hari, maka tambahkan perintah If-Then lagi seperti berikut :
Sub Ucapan()
Production Engineering Department
76
Programming in Microsoft Excel 2000
If Time < 0.5 Then MsgBox “Selamat Pagi” If Time >= 0.5 Then MsgBox “Selamat Siang/Sore”End Sub
Prosedur di atas menambahkan satu perintah If Time >= 0.5 untuk menangani waktu setelah
jam 12:00 siang. Pendekatan lain bisa dilakukan dengan menggunakan Else sebagai
berikut :
Sub Ucapan() If Time < 0.5 Then MsgBox “Selamat Pagi” Else _ MsgBox “Selamat Siang/Sore”End Sub
Jika kita ingin agar prosedur kita bisa menangani 3 ucapan (misalnya pagi,
siang/sore, dan malam), maka kita bisa menggunakan 3 perintah If-Then
sebagai berikut :
Sub Ucapan() If Time < 0.5 Then MsgBox “Selamat Pagi” If Time >= 0.5 And Time < 0.75 Then MsgBox “Selamat Siang/Sore” If Time >= 0.75 Then MsgBox “Selamat Malam”End Sub
Nilai 0.75 di atas menandakan jam 06:00 sore. Perhatikan modifikasi program di bawah ini yang
menggunakan struktur If-Then-Else bertingkat :
Sub Ucapan() If Time < 0.5 Then MsgBox “Selamat Pagi” Else _ If Time >= 0.5 And Time < 0.75 Then MsgBox “Selamat Siang/Sore” Else _ If Time >= 0.75 Then MsgBox “Selamat Malam”End Sub
Prosedur-prosedur di atas bisa kita lihat hanya menggunakan satu perintah sederhana saja pada
masing-masing blok If dan Else, sehingga struktur If-Then-Else cukup dituliskan dalam satu
baris saja. Namun bagaimana jika perintah yang harus dilaksanakan dalam blok If dan Else
lebih dari satu perintah? Syntax If-Then-Else lain untuk program yang lebih kompleks adalah
sebagai berikut :
If condition Then
[true_instructions]
[ElseIf condition-n Then
[alternate_instructions]]
[Else
[default_instructions]]
End If
Berikut adalah modifikasi program terakhir (yang agak sulit dibaca) dengan menggunakan syntax
If-Then-Else di atas :
Sub Ucapan() If Time < 0.5 Then MsgBox “Selamat Pagi” ElseIf Time >= 0.5 And Time < 0.75 Then MsgBox “Selamat Siang/Sore” ElseIf Time >= 0.75 Then MsgBox “Selamat Malam” End IfEnd Sub
Production Engineering Department
77
Programming in Microsoft Excel 2000
LATIHAN
Buatlah prosedur-prosedur untuk meminta masukkan dengan InputBox untuk jumlah barang
yang akan dibeli. Lalu adakan pengkondisian untuk diskon berdasarkan jumlah barang yang
dibeli sebagai berikut :
1 ≤ jumlah < 25, maka diskon = 10 %25 ≤ jumlah < 50, maka diskon = 15 %50 ≤ jumlah < 75, maka diskon = 20 % jumlah ≥ 75, maka diskon = 25 %
Lalu tampilkan besarnya diskon dengan MsgBox !
Catatan : Buatlah dua program ! Satu dengan syntax pada hal. 76 dan satu dengan syntax pada hal. 77.
Fungsi IifVBA menawarkan alternatif lain untuk menggantikan struktur If-Then: fungsi IIf. Fungsi ini memiliki tiga argumen/
parameter dan bekerja sama persis dengan fungsi IF dalam worksheet Excel. Syntaxnya adalah :
IIf(condition, true_value, false_value)
Jika condition bernilai True, maka nilai true_value akan akan dikembalikan, sebaliknya jika condition bernilai False, maka
nilai false_value akan dikembalikan.
Perintah berikut mendemonstrasikan penggunaan fungsi IIf untuk menampilkan pesan “Nol” jika cell A1 berisi nilai 0 atau
tidak ada isinya, sebaliknya akan menampilkan pesan “Bukan Nol”.
MsgBox IIf(Range(“A1”).Value = 0, “Nol”, “Bukan Nol”)
Select-Case
Select-Case sangat berguna untuk melakukan penyeleksian terhadap 3 kondisi atau lebih dan
merupakan alternatif yang lebih baik daripada penggunaan If-Then-Else untuk kondisi yang
banyak. Syntax untuk Select-Case adalah sebagai berikut :
Select Case testexpresion
[Case expressionlist-n
[instructions]]
[Case Else
[default_instructions]]
End Select
Kita bisa memasukkan nama variabel atau ekspresi lain yang menghasilkan nilai pada
testexpression dan nilainya pada expressionlist-n. Bagian Case Else akan dikerjakan jika
nilainya tidak ada yang memenuhi expressionlist-n. Berikut adalah modifikasi dari prosedur
terakhir yang menggunakan If-Then-Else :
Sub Ucapan() Select Case Time Case Is < 0.5 Msg = “Selamat Pagi” Case 0.5 To 0.75 Msg = “Selamat Siang/Sore” Case Else Msg = “Selamat Malam” End Select MsgBox MsgEnd Sub
Berikut adalah contoh dari penggunaan Select-Case bertingkat :
Sub AppWindow() Select Case Application.WindowState Case xlMaximized: MsgBox “App Maximized” Case xlMinimized: MsgBox “App Minimized” Case xlNormal: MsgBox “App Normal”
Production Engineering Department
78
Programming in Microsoft Excel 2000
Select Case ActiveWindow.WindowState Case xlMaximized: MsgBox “Book Maximized” Case xlMinimized: MsgBox “Book Minimized” Case xlNormal: “Book Normal” End Select End SelectEnd Sub
LATIHAN
Ubahlah prosedur pada latihan sebelumnya yang menggunakan If-Then-Else menjadi
menggunakan Select-Case !
Bekerja Dengan Prosedur
Prosedur adalah sekumpulan kode VBA yang berada di dalam modul VBA, yang bisa diakses
melalui Visual Basic Editor. Sebuah modul dapat menampung beberapa prosedur. Fungsi adalah
prosedur yang dapat mengembalikan nilai. Prosedur dapat dijalankan melalui menubar atau
toolbar melalui fungsi Assign Macro. Sedangkan fungsi dapat digunakan langsung pada
worksheet Excel. Misalkan kita memiliki prosedur Proc1 dan fungsi Func1, maka kita bisa
membuat menu untuk mengakses Proc1 (akan dibahas kemudian) dan menulis rumus di cell
seperti =Func1() (akan dibahas kemudian).
Mendeklarasikan Prosedur
Prosedur dideklarasikan dengan kata Sub yang syntaxnya adalah sebagai berikut :
[Private | Public][Static] Sub name [(arglist)]
[instructions]
End Sub
Private (opsional) menandakan bahwa prosedur yang bersangkutan hanya bisa diakses
oleh prosedur yang terletak pada modul yang sama. Jika sebuah prosedur
bersifat Private, ia tidak akan bisa diakses melalui kotak dialog Macro.
Public (opsional) menandakan bahwa prosedur yang bersangkutan bisa diakses oleh
semua prosedur di dalam modul yang berada pada workbook yang sama.
Secara default prosedur memiliki lingkup Public.
Static (opsional) menandakan bahwa variabel yang terdapat pada prosedur nilainya
tidak akan berubah walaupun proses di prosedur tersebut sudah selesai.
Sub menandakan awal prosedur.
name menandakan nama prosedur.
arglist (opsional) daftar variabel argumen/parameter, yang terdapat di dalam tanda
kurung. Gunakan koma untuk memisahkan argumen/parameter.
instructions (opsional) perintah-perintah VBA.
End Sub menandakan akhir prosedur.
CATATAN …
Production Engineering Department
79
Programming in Microsoft Excel 2000
Untuk memaksa semua prosedur bersifat Private (termasuk prosedur yang menyertakan kata Public), tambahkan perintah
Option Private Module pada awal modul sebelum prosedur pertama.
Menjalankan Prosedur
Terdapat banyak cara untuk menjalankan prosedur, diantaranya adalah :
Melalui menu RunRun Sub/UserForm atau dengan menekan F5 di dalam VB Editor. Excel lalu akan
menjalankan prosedur dimana kursor berada. Tetapi metode ini tidak akan bekerja jika prosedur yang
bersangkutan memiliki argumen/parameter.
Melalui kotak dialog Macro yang dapat dibuka melalui menu ToolsMacroMacros… atau dengan
menekan tombol Alt+F8. Kotak dialog Macro akan menampilkan daftar seluruh prosedur yang bisa
dipanggil dimana kita bisa memilih salah satu macro lalu menekan tombol Run untuk
menjalankannya.
Gambar 2.3
Kotak dialog Macro
Dengan menggunakan tombol (shortcut) Ctrl yang dipasang ke prosedur yang bersangkutan. Misalkan
kita memiliki prosedur Update yang dipasang dengan tombol shortcut Ctrl+U, maka dengan menekan
Ctrl+U prosedur Update akan dijalankan secara otomatis. Ketika kita membuat macro dengan
menggunakan macro recorder, kita ditanyakan tombol shortcutnya. Akan tetapi kita bisa setiap saat
menentukan tombol shortcutnya. Untuk menentukan tombol shortcut suatu macro langkahnya
adalah :
Aktifkan Excel
Pilih menu ToolsMacroMacros… atau tekan tombol Alt+F8
Tekan tombol Options… yang akan menampilkan kotak dialog seperti gambar 2.4 di
bawah ini :
Production Engineering Department
80
Programming in Microsoft Excel 2000
Gambar 2.4
Kotak dialog Macro Options
Masukkan karakter pada teks bertuliskan Ctrl+. Jika kita memasukkan huruf kecil s, maka tombol
shortcutnya adalah Ctrl+S, jika kita memasukkan huruf besar S, maka tombol shortcutnya adalah
Ctrl+Shift+S.
Masukkan keterangannya pada teks bertuliskan Description (opsional).
Tekan tombol OK untuk menutup kotak dialog Macro Options, dan tekan tombol Close untuk menutup
kotak dialog Macro.
CATATAN …Jika kita memasang tombol shortcut yang sudah didefinisikan Excel sebelumnya, maka tombol shortcut tersebut akan mengambil
alih tombol shortcut Excel. Misalnya jika kita memasang suatu prosedur dengan tombol Ctrl+S, maka dengan menekan tombol
Ctrl+S yang dilakukan bukannya menyimpan file lagi, melainkan melakukan prosedur yang telah kita tentukan.
Melalui menubar yang sudah dipasang ke prosedur yang bersangkutan. Excel mengizinkan kita untuk
menambah menu baru pada menu bar yang ada, yang urut-urutannya adalah sebagai berikut :
Klik kanan pada daerah toolbar lalu pilih Customize… atau pilih menu
ViewToolbarsCustomize…. Excel kemudian akan menampilkan kotak
dialog Customize seperti gambar 2.5 di bawah.
Klik tab Commands lalu gulung daftar Categories ke bawah dan pilih Macros.
Di daftar Commands, geser (drag) item pertama yang bertuliskan Custom
Menu Item ke arah menu bar (misalnya bawa ke menu Data paling bawah)
untuk menambah sub-menu baru. (catatan : jika ingin menambahkan menu
baru pilih New Menu pada daftar Categories lalu geser item New Menu pada
daftar Commands ke—misalnya—kanan menu Help)
Klik kanan pada sub-menu yang baru tadi untuk menampilkan menu shortcut
dan berikan nama baru pada sub-menu tersebut misalnya &Ucapan seperti
terlihat pada gambar 2.6 di bawah.
Production Engineering Department
81
Programming in Microsoft Excel 2000
Gambar 2.5
Kotak dialog Customize
Gambar 2.6
Shortcut-menu untuk penambahan menu baru
Lalu pilih Assign Macro… pada menu shortcut tersebut dan pilih macro yang
kita inginkan dari daftar macro yang ada—misalnya macro Ucapan.
Setelah itu klik OK untuk menutup kotak dialog Assign Macro dan klik Close
untuk menutup kotak dialog Customize.
Sekarang menu baru tersebut sudah tersedia. Jika kita mengakses menu
tersebut maka macro Ucapan akan dijalankan.
Melalui tombol pada toolbar yang sudah dipasang ke prosedur yang bersangkutan. Excel mengizinkan
kita untuk menambah tombol baru pada toolbar yang ada, yang urut-urutannya adalah sebagai
berikut :
Production Engineering Department
82
Programming in Microsoft Excel 2000
Klik kanan pada daerah toolbar lalu pilih Customize… atau pilih menu
ViewToolbarsCustomize…. Excel kemudian akan menampilkan kotak
dialog Customize seperti gambar 2.5 di atas.
Klik tab Commands lalu gulung daftar Categories ke bawah dan pilih Macros.
Di daftar Commands, geser (drag) item kedua yang bertuliskan Custom
Button ke arah toolbar (misalnya bawa ke toolbar Formatting paling kanan)
untuk menambah tombol baru.
Klik kanan pada sub-menu yang baru tadi untuk menampilkan menu shortcut
dan berikan nama baru pada sub-menu tersebut misalnya Ucapan seperti
terlihat pada gambar 2.6 di atas. Nama ini nantinya akan tampil sebagai tooltip.
Jika kita mengosongkannya, maka tooltip akan menampilkan “Custom”.
Lalu pilih Assign Macro… pada menu shortcut tersebut dan pilih macro yang
kita inginkan dari daftar macro yang ada—misalnya macro Ucapan.
Setelah itu klik OK untuk menutup kotak dialog Assign Macro dan klik Close
untuk menutup kotak dialog Customize.
Sekarang menu baru tersebut sudah tersedia. Jika kita mengakses menu
tersebut maka macro Ucapan akan dijalankan.
Memanggil dari prosedur lain. Untuk memanggil suatu prosedur dari prosedur lain terdapat banyak
cara, diantaranya adalah :
Menggunakan nama prosedur langsung diikuti oleh
argumen/parameter yang masing-masing dipisahkan dengan
tanda koma. Contoh :
Sub MySub() ... UpdateSheet MonthNum ...End Sub
Sub UpdateSheet(MonthSeg) ...End Sub
Menggunakan perintah Call diikuti dengan nama prosedur lalu
argumen/ parameter-nya yang diapit oleh tanda kurung. Contoh
Sub MySub() ... Call UpdateSheet(MonthNum) ...End Sub
Sub UpdateSheet(MonthSeg) ...End Sub
Menggunakan metode Run yang terdapat dalam objek Application. Metode
ini sangat berguna jika nama prosedur yang akan kita jalankan
terdapat dalam suatu variabel dan bisa diubah-ubah. Contoh :
Sub MySub() ... Application.Run “UpdateSheet”, MonthNum ...End Sub
Sub UpdateSheet(MonthSeg) ...End Sub
Memanggil suatu prosedur dari modul lain. Seperti kita tahu bahwa jika kita
memanggil suatu prosedur yang tidak terdapat pada modul yang sama, VBA
Production Engineering Department
83
Programming in Microsoft Excel 2000
akan secara otomatis mencari prosedur tersebut (yang bersifat Public) di modul
lain dalam workbook yang sama. Jika suatu prosedur—misalnya prosedur B—
memanggil prosedur lain—misalnya prosedur A—dan prosedur A tersebut
terdapat di modul yang sama dan terdapat juga di modul lain sebagai prosedur
Public, maka kita harus menyertakan nama modulnya dalam
pemanggilan prosedur A tersebut. Perhatikan gambaran berikut
untuk lebih jelasnya :
Module1 Module2Sub A() ...End Sub
Sub A() ...End Sub
Sub B() Call A ‘ambiguous error Call Module1.A Call Module2.AEnd Sub
Memanggil suatu prosedur dari workbook lain. Kita juga bisa memanggil suatu
prosedur dari workbook lain dengan cara menyertakan nama projek VBA-nya
diikuti oleh nama modulnya lalu nama prosedurnya dan argumen/parameter-
nya jika ada, misalnya : ProjekKu.ModulKu.ProsedurKu atau bisa juga dengan
menggunakan perintah Call, misalnya : Call ProjekKu.ModulKu.ProsedurKu.
Cara lain untuk memanggil prosedur dari workbook lain adalah dengan
menggunakan metode Run yang terdapat di dalam objek Application dan
menyertakan nama workbook dan nama prosedurnya, misalnya :
Application.Run “‘budget macros.xls’!Consolidate”.
Dengan klik objek button atau shape yang ditaruh di dalam worksheet. Button atau shape tersebut
harus dipasang ke prosedur tertentu. Excel memiliki banyak objek yang bisa ditaruh ke dalam
worksheet dan dipasang ke prosedur tertentu. Objek-objek tersebut terletak di dalam tiga toolbar,
yaitu :
toolbar Drawing
toolbar Forms
toolbar Control Toolbox
CATATAN …Objek yang terdapat dalam toolbar Forms berbeda dengan yang terdapat di dalam toolbar Control Toolbox. Objek yang terdapat
di toolbar Control Toolbox adalah jenis objek ActiveX yang penggunaannya lebih umum (jumlahnya lebih banyak dan bisa
digunakan dimana saja selain Excel), sedangkan objek yang terdapat di toolbar Forms hanya dapat digunakan di dalam Excel
sekaligus untuk menjaga kompabilitas dengan Excel 5 dan Excel 95.
Sebaiknya kita tidak menggunakan objek yang terdapat di dalam toolbar Control Toolbox jika belum mengerti tentang ActiveX.
Untuk memasang prosedur ke suatu button, lakukan langkah-langkah sebagai berikut :
Pastikan toolbar Forms sudah aktif.
Klik objek Button (tombol) di toolbar Forms.
Geser atau klik di dalam worksheet untuk membuat objek button.
Excel lalu akan menampilkan kotak dialog Assign Macro (seperti gambar 2.3) dimana kita bisa
memasang prosedur yang kita inginkan. Atau jika kita ingin melewatkan langkah ini, kita tetap bisa
memasang prosedur ke objek yang bersangkutan dengan klik kanan lalu pilih Assign Macro….
Klik tombol OK.
Sekarang jika kita mengarahkan kursor ke arah tombol tersebut, maka kursor akan berubah menjadi
gambar tangan dan jika kita klik tombol tersebut maka prosedur yang kita pasang sebelumnya akan
dijalankan.
Untuk menambahkan sebuah objek shape, langkahnya kurang lebih sama dengan cara di
atas hanya kita harus mengambilnya dari toolbar Drawing.
Production Engineering Department
84
Programming in Microsoft Excel 2000
Melaksanakan prosedur ketika suatu event (kejadian) muncul. Yang dimaksud dengan event adalah
seluruh tindakan yang kita lakukan yang mengakibatkan adanya interaksi antara kita dengan program
(dalam hal ini Excel). Misalnya ketika kita meng-klik suatu cell, maka event SelectionChange akan
muncul. Ketika kita mengubah isi suatu cell, maka event Change akan muncul. Sebenarnya prosedur
yang dibangkitkan oleh event tertentu sudah disediakan oleh VBA, kita hanya tinggal menaruh
program di dalamnya. Sekarang kita akan masuk ke contoh : “Kita ingin agar setiap ada perubahan
data di cell A1, sejarah data-data yang pernah dibuat tercatat di kolom B”. Ikutilah langkah-langkah
berikut ini :
Aktifkan Visual Basic Editor.
Klik dua kali pada worksheet—dimana terdapat cell A1 yang dimaksud—dalam
Project Explorer, misalnya Sheet1.
Setelah Code Window muncul, pilih Worksheet dari kotak daftar yang awalnya
bertuliskan (General).
Lalu pilih item Change (karena kita ingin menjalankan program ketika terjadi
perubahan cell) dari kotak daftar yang awalnya bertuliskan SelectionChange.
Masukkan kode program berikut.
Private Sub Worksheet_Change(ByVal Target As Range)Static row As Integer If (Target.Address(False, False) = "A1") Then Range("B1").Offset(row, 0).Value = Range("A1").Value row = row + 1 End IfEnd Sub
CATATAN …Parameter Target pada event di atas diciptakan secara otomatis oleh VBA yang jenisnya adalah objek Range. Untuk mendapat-
kan alamat Target kita bisa menggunakan properti Address yang syntax sederhananya adalah sebagai berikut :
object.Address(rowabsolute,columnabsolute)
Jika rowabsolute atau columnabsolute diisi dengan True maka pengalamatan absolut akan diberikan (dengan tanda $) dan jika
diisi dengan False maka pengalamatan relatif akan diberikan. Contoh : misalnya cell C5 dipilih :
Target.Address(False,False) akan menghasilkan “C5”
Target.Address(False, True) akan menghasilkan “$C5”
Target.Address( True,False) akan menghasilkan “C$5”
Target.Address( True, True) akan menghasilkan “$C$5”
Menjalankan suatu prosedur dari Immediate Window. Untuk menjalankan suatu prosedur, kita juga
bisa melakukannya melalui Immediate Window dengan mengetikkan langsung nama prosedurnya
diikuti dengan argumen/parameternya lalu menekan Enter.
Bekerja Dengan Fungsi
Berbeda dengan prosedur yang berfungsi untuk menjalankan tugas tertentu tanpa perlu
mengembalikan nilai, fungsi akan menjalankan tugas tertentu dan juga mengembalikan nilai—
sama seperti fungsi worksheet dalam Excel (seperti SUM atau AVERAGE) atau fungsi VBA. Sama
seperti prosedur, fungsi juga dapat memiliki argumen/parameter.
Tanpa panjang lebar, berikut adalah contoh fungsi yang digunakan untuk
membalik suatu teks :
Function Balik(Kalimat) As String
Production Engineering Department
85
Programming in Microsoft Excel 2000
Dim PanjangKalimat As Integer, I As Integer Balik = “” PanjangKalimat = Len(Kalimat) For I = PanjangKalimat To 1 Step –1 Balik = Balik & Mid(Kalimat, I, 1) Next IEnd Function
Perhatikan bahwa fungsi dimulai dengan kata Function dan bukannya Sub diikuti oleh nama
fungsinya (Balik). Fungsi ini hanya menggunakan satu argumen (Kalimat). As String
menandakan bahwa hasil keluaran fungsi tersebut adalah jenis String. (Excel akan
menggunakan jenis data Variant sebagai nilai yang dihasilkan jika tidak dispesifikasikan.)
Fungsi Len digunakan untuk mendapatkan panjang suatu string. Sedangkan fungsi Mid digunakan
untuk mendapatkan bagian tertentu dari suatu teks (fungsinya sama dengan fungsi worksheet
Excel).
CATATAN …Jika kita ingin menciptakan suatu fungsi agar bisa digunakan dalam formula di worksheet, pastikan agar mereka terletak di dalam
satu modul VBA. Jika kita menaruhnya di modul Sheet atau ThisWorkbook, maka fungsi tersebut tidak akan bisa digunakan.
Jika kita sudah membuat suatu fungsi, maka kita bisa menggunakannya dalam formula di
worksheet seperti biasa, misalnya =Balik(A1). Berikut adalah contoh penggunaannya :
A B C1 Excel lecxE2 Kalimat Terbalik kilabreT tamilaK3 Malam di Makam makaM id malaM4 Kasur Rusak kasuR rusaK5 12345.678 876.543216 TRUE eurT7
Sekarang apa yang terjadi jika kita memasukkan formula =Balik(Balik(A1)) di cell C1 ?
Untuk memanggil fungsi dari prosedur atau fungsi VBA lain caranya sama
dengan memanggil prosedur hanya bedanya hasil dari fungsi tersebut harus
dimasukkan ke variabel tertentu atau diarahkan ke masukkan lain misalnya
sebagai argumen/parameter. Perhatikan contoh berikut ini untuk lebih
jelasnya :
Sub BalikKalimat() Masukkan = InputBox(“Masukkan Sembarang teks :”) MsgBox Balik(Masukkan) Kalimat = Balik(“Squall Leonhart”) MsgBox KalimatEnd Sub
Mendeklarasikan Fungsi
Fungsi dideklarasikan dengan kata Function yang syntaxnya adalah sebagai berikut :
[Private | Public][Static] Function name [(arglist)][As type]
[instructions]
[name = expression]
End Function
Production Engineering Department
86
Programming in Microsoft Excel 2000
Private (opsional) menandakan bahwa fungsi yang bersangkutan hanya bisa diakses
oleh prosedur/fungsi yang terletak pada modul yang sama. Fungsi juga tidak
akan tampil di dalam kotak dialog Paste Function ketika kita bekerja dengan
worksheet Excel.
Public (opsional) menandakan bahwa fungsi yang bersangkutan bisa diakses oleh
semua prosedur/fungsi di dalam modul yang berada pada workbook yang sama.
Secara default fungsi memiliki lingkup Public.
Static (opsional) menandakan bahwa variabel yang terdapat pada fungsi nilainya tidak
akan berubah walaupun proses di fungsi tersebut sudah selesai.
Function menandakan awal fungsi.
name menandakan nama fungsi.
arglist (opsional) daftar variabel argumen/parameter, yang terdapat di dalam tanda
kurung. Gunakan koma untuk memisahkan argumen/parameter.
type (opsional) jenis data yang akan dikembalikan sebagai hasil fungsi.
instructions (opsional) perintah-perintah VBA.
End Function menandakan akhir fungsi.
CATATAN …Sama halnya seperti memaksa semua prosedur untuk bersifat Private, untuk memaksa semua fungsi bersifat Private (termasuk
fungsi yang menyertakan kata Public), tambahkan perintah Option Private Module pada awal modul sebelum fungsi pertama.
Jika kita ingin berhenti secara paksa dari suatu prosedur, maka gunakan perintah Exit Sub. Sedangkan jika kita ingin berhenti
secara paksa dari suatu fungsi, maka gunakan perintah Exit Function.
Menjalankan Fungsi
Cara untuk menjalankan fungsi sama seperti menjalankan prosedur, diantaranya adalah :
Menjalankan dari prosedur atau fungsi lain. Misalnya, kita sudah membuat fungsi SumArray, maka kita
bisa memasukkan perintah pada salah satu prosedur/fungsi lain sebagai berikut :
Total = SumArray(ArrayKu)
Perintah di atas akan menjalankan fungsi SumArray dengan argumen/parameter ArrayKu
dan menghasilkan nilai yang dimasukkan ke variabel Total.
Memasukkannya ke dalam formula Excel. Sebelum kita menulis formula yang menggu-nakan fungsi
yang kita buat, kita harus memastikan bahwa fungsi tersebut bisa diakses oleh worksheet (jangan
memberikan perintah Private pada fungsi yang bersangkutan). Jika fungsi tersebut berada dalam
satu workbook yang sama, tidak ada masalah dalam penggunaannya. Tetapi jika berada dalam
workbook yang berbeda, kita harus ‘memberitahu’ Excel letak fungsi yang bersangkutan dengan cara
mendahului nama fungsinya dengan nama workbooknya, misalnya :
=DataUmum.xls!HitungRunningStock(A1:A1000)
Perintah di atas akan menjalankan fungsi HitungRunningStock yang terdapat di dalam
workbook DataUmum.xls.
Jika kita perhatikan, fungsi yang kita buat dengan VBA tidak akan tampil di dalam daftar kotak
dialog Macro ketika kita mengaktifkan menu ToolsMacroMacros…. Sebagai tambahan, kita
juga tidak bisa menjalankan fungsi dengan cara memposisikan kursor di fungsi tersebut (ketika
berada di dalam VB Editor) lalu memilih menu RunRun Sub/UserForm. Ini menjadikan kita
agak sulit untuk menguji fungsi tersebut karena kita tidak bisa menjalankannya secara langsung.
Satu cara yang cukup baik untuk menguji suatu fungsi adalah dengan membuat sebuah prosedur
dan hanya menaruh perintah untuk menjalankan fungsi tersebut di dalamnya.
Production Engineering Department
87
Programming in Microsoft Excel 2000
Argumen/Parameter
Prosedur/fungsi (selanjutnya kita sebut prosedur saja), seperti kita tahu, dapat memiliki
argumen/parameter (selanjutnya kita sebut argumen saja). Argumen adalah data yang dikirim
untuk digunakan pada perintah yang terdapat dalam prosedur. Argumen dapat berupa :
Variabel (termasuk array), misalnya : Call TampilkanData(ArrayData);
Konstanta, misalnya : j = CariDeterminan(1, 3, 2); atau
Objek, misalnya : HapusIsiSheet Sheet1.
Hubungan antara prosedur dan argumen dapat berupa sebagai berikut :
Prosedur dapat tidak memiliki argumen, misalnya RAND;
‘Contoh fungsi tanpa argumenFunction NamaUser() User = Application.UserNameEnd Function
Prosedur dapat memiliki argumen dalam jumlah yang tetap, misalnya COUNTIF yang
membutuhkan dua argumen;
‘Contoh prosedur dengan argumenSub Ucapan(Nama As String) MsgBox “Selamat Datang ” & NamaEnd Sub
Prosedur dapat memiliki argumen yang jumlahnya tidak terbatas, misalnya SUM; dan
‘Contoh fungsi dengan argumen tak terbatasFunction Total(ParamArray Nilai() As Variant)Dim I As Integer Total = 0 For I = 0 To Ubound(Nilai()) Total = Total + Nilai(I) Next IEnd Function
Prosedur dapat memiliki argumen yang opsional, misalnya PMT yang memiliki dua argumen
opsional.‘Contoh prosedur dengan argumen opsionalSub Alamat(Jalan As String, Optional Kota As Variant, Optional Negara As Variant = "Indonesia") If IsMissing(Kota) And IsMissing(Negara) Then MsgBox Jalan ElseIf IsMissing(Kota) Then MsgBox Jalan & “ ” & Negara Else MsgBox Jalan & “ ” & Kota & “ ” & Negara End IfEnd Sub
CATATAN …Jika kita menguji suatu fungsi melalui formula dalam worksheet dan menghasilkan nilai #VALUE!, maka fungsi kita memiliki
kesalahan di dalamnya. Kesalahan ini bisa disebabkan oleh logical error yang terdapat di dalam perintah kita atau mungkin juga
karena kita memberikan argumen yang salah.
Untuk lebih jelasnya mengenai penanganan kesalahan, lihat bagian “Penanganan Kesalahan”.
Antara Variabel Public dan Argumen ProsedurPada bagian sebelumnya kita sudah mempelajari bagaimana menggunakan argumen sebagai penghubung antar prosedur.
Sebenarnya terdapat cara lain untuk menghubungkan satu prosedur dengan prosedur lain, yaitu dengan menggunakan
variabel Public. Perhatikanlah perbedaan kedua contoh berikut untuk lebih
Production Engineering Department
88
Programming in Microsoft Excel 2000
jelasnya :‘Dengan menggunakan argumenSub Prosedur1() Dim Bulan As Integer Bulan = 4 Call ProsesBulanan(Bulan)End Sub
‘Dengan menggunakan variabel PublicPublic Bulan As IntegerSub Prosedur2() Bulan = 4 ProsesBulananEnd Sub
Karena pada blok sebelah kanan variabel Bulan berjenis Public, maka secara otomatis prosedur ProsesBulan akan
mengenalnya dan kita bisa menghilangkan argumen yang dibutuhkannya.
By Value atau By Reference ?
Sebagai informasi tambahan—sebuah argumen dapat dilewatkan ke prosedur dengan dua cara:
by value atau by reference. Dengan melewatkan argumen by reference (default), VBA akan
memberikan alamat memori dimana variabel tersebut berada—sehingga jika terdapat perintah
dalam prosedur yang mengubah isi argumen tersebut, maka perubahannya akan dibawa
walaupun setelah keluar dari prosedur yang bersangkutan. Jika melewatkan argumen by value,
VBA hanya akan mengirim duplikat variabel tersebut—sehingga jika terjadi perubahan isi,
hasilnya tidak akan dibawa keluar prosedur tersebut. Untuk mengetahui perbedaannya lebih
jelas, buatlah empat prosedur di bawah ini dan jalankan PanggilByVal dan PanggilByRef :
Sub ProcByVal(ByVal NilaiKu) MsgBox “Sebelum Proc =” & NilaiKu NilaiKu = NilaiKu + 10 MsgBox “Sesudah Proc =” & NilaiKuEnd Sub
Sub PanggilByVal()Dim Nilai As Integer Nilai = 10 MsgBox “Sebelum Panggil =” & Nilai ProcByVal Nilai MsgBox “Sesudah Panggil =” & NilaiEnd Sub
Sub ProcByRef(NilaiKu) MsgBox “Sebelum Proc =” & NilaiKu NilaiKu = NilaiKu + 10 MsgBox “Sesudah Proc =” & NilaiKuEnd Sub
Sub PanggilByRef()Dim Nilai As Integer Nilai = 10 MsgBox “Sebelum Panggil =” & Nilai ProcByRef Nilai MsgBox “Sesudah Panggil =” & NilaiEnd Sub
Contoh Prosedur dan Fungsi
Fungsi di bawah ini digunakan untuk menghasilkan nama user yang aktif dengan mengakses properti
UserName yang terdapat di dalam objek Application :
Function User() User = Application.UserNameEnd Function
Untuk menggunakannya dalam worksheet, kita hanya cukup memasukkan formula
=User() dalam suatu cell. MsgBox “User yang aktif adalah ” & User() adalah
contoh penggunaan di dalam VBA.
Fungsi di bawah ini digunakan untuk menghasilkan bilangan acak antara 0 hingga 1000 dengan
menggunakan fungsi Rnd :
Function Acak() Acak = Int(Rnd * 1000)End Function
Perlu diperhatikan bahwa nilai yang dihasilkan oleh fungsi di atas tidak akan berubah jika
ditaruh di dalam worksheet walaupun sudah dilakukan proses Recalculate. Berbeda
dengan fungsi worksheet yang sudah disediakan oleh Excel, yaitu RAND().
Production Engineering Department
89
Programming in Microsoft Excel 2000
Mengatur Proses Recalculation Suatu FungsiSuatu fungsi VBA akan di-recalculate jika terjadi perubahan nilai pada argumen milik fungsi tersebut. Fungsi Acak
sebelumnya tidak memiliki argumen, sehingga walaupun kita recalculate secara manual dengan menggunakan tombol F9,
hasilnya tidak akan pernah berubah. Untuk memaksa suatu fungsi agar melakukan recalculate kita bisa menambahkan
perintah Application.Volatile True.
Volatile yang terdapat di dalam objek Application bisa diberi argumen True atau False. Jika argumennya diisi dengan
True maka fungsi akan di-recalculate jika ada perubahan apa pun pada cell mana pun. Jika argumennya diisi dengan False
maka fungsi akan di-recalculate hanya jika terjadi perubahan nilai pada argumen fungsi yang bersangkutan.
Jadi kita bisa memodifikasi fungsi sebelumnya menjadi seperti berikut jika ingin menghasilkan nilai yang berbeda-beda setiap
ditekan tombol F9 :
Function Acak() Application.Volatile True Acak = Int(Rnd * 1000)End Function
Dalam kasus ini, seorang manajer departemen Sales menghadapi kesulitan dalam
menghitung komisi masing-masing sales terhadap hasil penjualannya per bulan.
Perhitungannya didasarkan atas tabel berikut ini :
Penjualan per Bulan Komisi$0 - $9,999 8.0%$10,000 - $19,999 10.5%$20,000 - $39,999 12.0%$40,000+ 14.0%
Sebenarnya masalah di atas bisa diselesaikan dengan menggunakan formula sederhana
sebagai berikut :
=IF(AND(A1>=0,A1<=9999.99),A1*0.08, IF(AND(A1>=10000,A1<=19999.99),A1*0.105, IF(AND(A1>=20000,A1<=39999.99),A1*0.12, IF(A1>=40000,A1*0.14, 0))))
Hanya masalahnya, formula di atas terlalu sulit untuk dibaca jika sudah
dimasukkan ke dalam worksheet karena Excel akan membuat formula
di atas menjadi satu baris panjang. Dan satu lagi, formula tersebut
agak sulit untuk dimodifikasi karena nilai komisinya tertanam secara
konstan. Pendekatan lain yang lebih baik adalah dengan membuat
fungsi sebagai berikut :Function KomisiSales(Penjualan) Const Komisi1 = 0.08, Komisi2 = 0.105, Komisi3 = 0.12, Komisi4 = 0.14 Select Case Penjualan Case 0 To 9999.99: KomisiSales = Penjualan * Komisi1 Case 10000 To 19999.99: KomisiSales = Penjualan * Komisi2 Case 20000 To 39999.99: KomisiSales = Penjualan * Komisi3 Case Is >= 40000: KomisiSales = Penjualan * Komisi4 End SelectEnd Function
Kita bisa menggunakan fungsi di atas dalam worksheet seperti =KomisiSales(25000)
atau menggunakannya di dalam prosedur VBA sebagai berikut :Sub TampilkanKomisi() Penjualan = Val(InputBox(“Masukkan Nilai Penjualan ($) :”)) Pesan = “Nilai Penjualan:” & vbTab & Format(Penjualan,“$#.##0”) & vbCrLf Pesan = Pesan & “Komisi:” & vbTab & Format(KomisiSales(Penjualan),“$#.##0”) Pesan = Pesan & vbCrLf & vbCrLf & “Mau Hitung Lagi ?” If (MsgBox(Pesan, vbYesNo) = vbYes) Then TampilkanKomisiEnd Sub
Hasilnya kurang lebih terlihat seperti gambar 2.7 di bawah ini.
Production Engineering Department
90
Programming in Microsoft Excel 2000
Gambar 2.7
Hasil dari contoh prosedur di atas
Fungsi di bawah ini dapat digunakan untuk menggantikan fungsi worksheet SUM() yang akan
menghitung seluruh komponen yang terdapat di dalam array :
Function SumArray(List) As Double SumArray = 0 For Each Item In List If Application.IsNumber(Item) Then _ SumArray = SumArray + Item Next ItemEnd Function
Fungsi IsNumber di atas akan memeriksa apakah suatu komponen (Item) yang terdapat
di dalam List berjenis bilangan atau bukan. Jika bilangan maka akan dijumlah ke
SumArray.
Selanjutnya kita bisa membuat formula worksheet seperti =SumArray(A1:C10) atau
membuat prosedur sebagai berikut :
Sub BuatDaftarAcak() Dim Num(1 To 100) As Double For i = 1 To 100 Num(i) = Rnd * 1000 Next i MsgBox SumArray(Num)End Sub
Mungkin kita bertanya-tanya bagaimana jika fungsi kita menerima argumen yang
salah dan kita ingin mengirim pesan kesalahan ke worksheet misalnya #N/A.
Berikut adalah modifikasi dari fungsi terdahulu yang digunakan untuk membalik
suatu teks :
Function Balik(Kalimat) As VariantDim PanjangKalimat As Integer, I As Integer If Application.WorksheetFunction.IsText(Kalimat) Then Balik = “” PanjangKalimat = Len(Kalimat) For I = PanjangKalimat To 1 Step –1 Balik = Balik & Mid(Kalimat, I, 1) Next I Else Balik = CVErr(xlErrNA) End IfEnd Function
Pertama, akan dilakukan pemeriksaan terhadap argumen yang dimasukkan apakah jenis
teks atau bukan (dengan menggunakan fungsi IsText). Jika jenisnya teks maka akan
dilakukan proses yang sama dengan fungsi terdahulu. Jika bukan, maka akan dihasilkan
nilai kesalahan dengan menggunakan fungsi CVErr dengan argumen xlErrNA. Argumen
fungsi CVErr bisa diisi dengan konstanta nilai kesalahan xlErrDiv0, xlErrNA,
xlErrName, xlErrNull, xlErrNum, xlErrRef, atau xlErrValue.
Production Engineering Department
91
Programming in Microsoft Excel 2000
Teknik Penanganan Kesalahan
Ketika kita menjalankan suatu prosedur, kesalahan (error) dapat muncul setiap saat—yang
bahkan tidak kita perkirakan sebelumnya. Kesalahan ini termasuk kesalahan sintaksis (syntax
errors) yang terjadi karena kita salah dalam memasukkan perintah VBA, ataupun kesalahan
yang terjadi ketika prosedur dijalankan (run-time errors). Pada bagian ini, yang akan dibahas
adalah penanganan run-time errors.
CATATAN …Agar penanganan kesalahan ini dapat bekerja, opsi Break on All Errors harus dimatikan. Untuk mengakses opsi ini masuk
ToolsOptions…tab General. Jika kita menyalakan opsi Break on All Errors, maka VBA akan mengabaikan kode penanganan
kesalahan yang kita buat.
Biasanya programmer selalu mengaktifkan opsi Break on Unhandled Errors.
Ketika error terjadi, VBA biasanya berhenti dan menampilkan kotak dialog yang menampilkan
kode kesalahan dan keterangan akan error tersebut. Suatu program yang baik tidak akan
membiarkan suatu pesan kesalahan terlihat oleh pengguna, melainkan akan ‘menangkap’ error
tersebut lalu mengambil tindakan tertentu. Sekurang-kurangnya program harus dapat
menampilkan pesan kesalahan yang lebih dimengerti oleh pengguna daripada pesan yang
diberikan oleh VBA.
‘Menangkap’ Error
Untuk menangkap error, kita bisa menggunakan perintah On Error yang memiliki dua teknik
penggunaan, yaitu :
Mengabaikan kesalahan yang ada dan mengizinkan VBA untuk melanjutkan proses. Kemudian pada
perintah selanjutnya kita bisa menambahkan proses untuk menganalisa jenis kesalahan yang timbul
dengan menggunakan objek Err, lalu mengambil tindakan tertentu jika diperlukan. Teknik ini
menggunakan perintah On Error Resume Next.
Melompat ke bagian khusus penanganan kesalahan untuk mengambil tindakan. Bagian ini biasanya
diletakkan pada akhir suatu prosedur, dan ditandai dengan alamat (label). Teknik ini menggunakan
perintah On Error Goto error_label.
On Error Resume Next
Agar VBA mengabaikan suatu kesalahan dan melanjutkan ke proses
berikutnya, tambahkan perintah berikut ini di awal suatu prosedur :
On Error Resume Next
Beberapa error mungkin dapat kita abaikan tanpa ‘memberitahu’ pengguna akan adanya suatu
error. Tetapi mungkin kita ingin mengambil tindakan jika terjadi error-error tertentu. Kita bisa
menggunakan objek Err yang memiliki properti Number (merupakan properti default) untuk
mendapatkan kode error yang timbul. Lalu kita bisa menggunakan fungsi Error untuk
mendapatkan keterangannya (bisa juga diakses melalui properti Description pada objek Err).
Production Engineering Department
92
Programming in Microsoft Excel 2000
Sebagai contoh, kedua baris perintah di bawah ini akan menampilkan pesan kesalahan yang
kurang lebih sama dengan yang ditampilkan oleh VBA ketika terjadi suatu error :
MsgBox “Error” & Err.Number & “: ” & Error(Err.Number)
atau
MsgBox “Error” & Err & “: ” & Err.Description
Berikut adalah contoh prosedur yang memiliki penanganan kesalahan dengan menggunakan On
Error Resume Next :
Sub ProsesFormula() On Error Resume Next Selection.SpecialCells(xlFormulas, xlNumbers).Select If (Err <> 0) Then MsgBox “Tidak ada formula yang dipilih” Else ‘proses... End IfEnd Sub
Pada prosedur diatas jika nilai Err tidak sama dengan 0 (nol), maka telah terjadi kesalahan dan
akan menampilkan pesan kesalahan.
On Error Goto error_label
Selain cara di atas, VBA menyediakan satu teknik lagi yaitu dengan melompat
ke bagian khusus yang menangani kesalahan. Agar VBA melakukan hal
tersebut, perlu ditambahkan perintah berikut ini pada awal prosedur :
On Error Goto error_label
error_label di atas adalah blok alamat program penanganan kesalahan yang
terletak dalam prosedur yang sama. Perhatikan contoh berikut :
Sub IsiNilai() On Error Goto tangani_error Selection.Value = 123 Exit Subtangani_error: MsgBox “Tidak bisa mengisi nilai”End Sub
Prosedur di atas mencoba untuk mengisi nilai ke objek yang dipilih (Selection). Jika yang dipilih
bukan range atau suatu sheet dalam keadaan diproteksi, maka perintah Selection.Value = 123
akan menimbulkan kesalahan. Perintah On Error sebelumnya sudah menentukan bahwa jika
terjadi kesalahan maka proses lompat ke tangani_error. Penggunaan Exit Sub ditujukan untuk
proses yang berjalan lancar tanpa menimbulkan suatu kesalahan agar tidak masuk ke dalam blok
penanganan kesalahan.
Keuntungan dari penggunaan teknik ini dibandingkan dengan teknik
sebelumnya adalah teknik ini memungkinkan untuk menulis satu penanganan
kesalahan untuk keseluruhan prosedur, sedangkan dengan teknik
sebelumnya kita harus menulis satu penanganan kesalahan untuk setiap
perintah yang memiliki kemungkinan terjadinya kesalahan. Untuk lebih
jelasnya perhatikan contoh berikut :
Production Engineering Department
93
Programming in Microsoft Excel 2000
‘contoh dengan on error resume nextSub ErrorDemo1()Dim Nilai As IntegerDim Kondisi As Boolean On Error Resume Next Nilai = “Salah” If (Err.Number <> 0) Then _ MsgBox “Salah mengisi nilai” Err.Clear Kondisi = “Benar” If (Err.Number <> 0) Then _ MsgBox “Salah mengisi nilai”End Sub
‘contoh dengan on error goto ...Sub ErrorDemo2()Dim Nilai As IntegerDim Kondisi As Boolean On Error Goto periksa Nilai = “Salah” Kondisi = “Benar” Exit Subperiksa: If (Err.Number <> 0) Then _ MsgBox “Salah mengisi nilai” Err.Clear Resume NextEnd Sub
CATATAN …Sebagian besar programmer cenderung menggunakan teknik On Error Resume Next, walaupun
Biasanya programmer selalu mengaktifkan opsi Break on Unhandled Errors.
Manfaat ‘Menangkap’ Kesalahan
Terkadang, kita bisa mendapatkan keuntungan dari ‘menangkap’ kesalahan
misalnya untuk mendapatkan informasi. Contoh berikut ini digunakan untuk
memeriksa apakah suatu workbook sedang dibuka atau tidak :
Sub CheckForFile1()Dim FileName As String, FileExist As BooleanDim book As Workbook FileName = “BUDGET.XLS” FileExist = False For Each book In Workbooks If UCase(book.Name) = UCase(FileName) Then _ FileExist = True Next book If FileExist Then _ MsgBox FileName & “ sedang dibuka” Else _ MsgBox FileName & “ tidak sedang dibuka”End Sub
Pada prosedur di atas perintah For Each-Next akan melakukan looping proses untuk semua
workbook yang sedang dibuka. Jika workbook yang dimaksud sedang dibuka (UCase(book.Name)
= UCase(FileName)) maka variabel FileExist diisi dengan nilai True. Prosedur di atas bisa
disusun ulang dengan menggunakan On Error Resume Next sebagai berikut :
Sub CheckForFile2()Dim FileName As String, Temp As String On Error Resume Next FileName = “BUDGET.XLS” Temp = UCase(Workbooks(FileName).Name) If (Err = 0) Then MsgBox FileName & “ sedang dibuka” Else MsgBox FileName & “ tidak sedang dibuka” End IfEnd Sub
Prosedur di atas mencoba untuk mengisi variabel Temp dengan nama dari workbook berdasarkan
FileName. Jika workbook yang bersangkutan sedang dibuka maka tidak ada error yang muncul
(Err = 0). Sebaliknya jika workbook yang bersangkutan tidak sedang dibuka maka error akan
muncul (Err <> 0).
Debugging
Production Engineering Department
94
Programming in Microsoft Excel 2000
Ketika kita membuat formula workseheet yang menggunakan fungsi yang sudah kita buat
sebelumnya, run-time errors tidak akan muncul dalam bentuk kotak dialog, melainkan fungsi
tersebut akan mengembalikan nilai kesalahan tersebut ke cell yang bersangkutan (misalnya
#VALUE!). Untuk mengatasi hal tersebut, kita harus membetulkan fungsi tersebut. Tapi,
bagimana kita tahu letak kesalahannya ? Berikut adalah cara untuk mengetahuinya :
Dengan menempatkan perintah MsgBox untuk menampilkan isi suatu variabel pada daerah yang
kita ‘curigai’. Lalu kita bisa menganalisa apakah isi variabel tersebut sudah benar atau belum. Jika
belum maka pasti terjadi kesalahan pada proses-proses sebelumnya. Akan tetapi, kita sebelumnya
harus memastikan terlebih dahulu bahwa hanya satu formula saja yang menggunakan fungsi yang
bersangkutan, jika tidak maka MsgBox akan dijalankan sebanyak formula yang ada di worksheet—dan
ini akan sangat mengganggu.
Menguji fungsi dengan menjalankannya dari prosedur dan bukannya dari formula worksheet.
Memasang breakpoint pada perintah yang kita ‘curigai’, lalu melangkah perintah per perintah dan
mengamati dimana letak kesalahannya.
Untuk memasang breakpoint, pilih baris perintah yang diinginkan lalu pilih menu Debug
Toggle Breakpoint (F9). Atau bisa juga dengan klik daerah abu-abu pada samping
kiri baris perintah. VBA kemudian akan menampilkan baris tersebut dengan warna
merah. Lalu jalankan prosedur seperti biasa dan proses akan berhenti pada baris dimana
kita memasang breakpoint tersebut (baris perintah tersebut belum dijalankan). Dan kita
bisa melangkah per perintah dengan memilih menu Debug Step Into (F8) atau
menjalankan lagi secara normal.
Menggunakan perintah Debug.Print di dalam prosedur untuk mencetak nilai suatu variabel dalam
Immediate window. Sebagai contoh, jika kita ingin memantau nilai yang berada di dalam suatu loop,
kita bisa menambahkan perintah sebagai berikut :
Function HitungVokal(Kalimat As String) As IntegerDim TotVokal As Integer, i As Integer, c As String * 1 TotVokal = 0 For i = 1 To Len(Kalimat) c = UCase(Mid(Kalimat, i, 1)) If (c Like “[AEIOU]”) Then TotVokal = TotVokal + 1 Debug.Print c, i End If Next i HitungVokal = TotVokalEnd Function
Jika kita menjalankan fungsi di atas dengan argumen “Gajah Tunggal”, maka Immediate
Window kurang lebih akan menjadi seperti gambar 2.8. di bawah.
Gambar 2.8
Immediate Window ketika kode di atas dijalankan
Production Engineering Department
95
Programming in Microsoft Excel 2000
LATIHAN
Ketika kita melakukan perekaman macro dengan macro recorder maka hasilnya
adalah seperti di bawah ini. Ubahlah prosedur copy di bawah ini menjadi lebih
sederhana lagi !
Sub Macro1() Range(“A1”).Select Selection.Copy Range(“B1”).Select ActiveSheet.Paste Application.CutCopyMode = FalseEnd Sub
Properti CurrentRegion milik objek Range digunakan untuk mendapatkan satu blok
range—yang dipisahkan oleh baris dan kolom kosong—dimana objek range yang
dimaksud terdapat di dalamnya. Jika dalam Sheet1 kita memiliki satu tabel yang
dimulai dari cell A1 dan selalu bertambah barisnya, buatlah prosedur untuk
melakukan proses copy dari Sheet1 ke Sheet2! Jika butuh keterangan lebih lanjut,
bukalah sistem Help VBA mengenai CurrentRegion !
Jadikanlah prosedur yang sudah dikerjakan pada nomor 2 di atas bisa diakses melalui
menubar, toolbar, dan shortcut Ctrl+Shift+* !
Buatlah fungsi yang menyerupai fungsi worksheet SUM() !
Range("B4").End(xlUp).Select digunakan untuk memilih cell paling atas—yang
berada pada daerah yang sama dengan cell B4—yang terdapat pada kolom B.
Range(ActiveCell, ActiveCell.End(xlDown)).Select digunakan untuk memilih
range mulai dari cell yang aktif hingga cell terbawah yang digunakan. Bisa kita
simpulkan bahwa properti End bekerja persis seperti tombol End dalam Excel dan
konstanta yang dapat digunakan adalah xlUp, xlDown, xlToLeft, dan xlToRight.
Buatlah sekumpulan menu beserta programnya seperti terlihat pada gambar 2.9 di
bawah ini ! Untuk informasi lebih lanjut, buka sistem Help yang ada di VBA !
Gambar 2.9
Menu yang harus
dibuat untuk latihan
nomor 5
Sebagian besar koleksi objek di dalam VBA memiliki properti Count yang digunakan
Production Engineering Department
96
Programming in Microsoft Excel 2000
untuk mendapatkan jumlah objek yang terdapat dalam koleksi tersebut. Misalnya
Selection.Cells.Count digunakan untuk menghitung jumlah cell yang sedang
dipilih. Sekarang buat sebuah tombol di dalam worksheet lalu buatlah sebuah
prosedur untuk menganalisa jumlah cell yang dipilih, jumlah baris dan kolom yang
dipilih, dan jumlah area yang dipilih !
Buatlah prosedur untuk menghapus baris yang tidak memiliki satu cell pun yang ada
isinya atau semua cellnya kosong !
Buatlah fungsi yang mampu menghasilkan jenis data suatu cell atau range (dengan
mengambil cell paling kiri atas) !
Buatlah prosedur atau fungsi untuk menghasilkan deret-deret berikut ini :
1, 2, 3, 4, 5, ……, 10
1, 3, 5, 7, 9, ……, 19
10 suku pertama dari 100, 95, 90, 85, 80, ……
10 suku pertama dari 7, 12, 20, 31, 45, 62, ……
1, 2, 4, 8, 16, ……, 1024
Program di bawah ini memiliki beberapa kesalahan. Perbaikilah program sehingga
bisa untuk menghasilkan deret bilangan sebagai berikut :
1, 3, 2, 4, 3, 5, 4, 6, 5, 7, 6, 8, 7, 9, 8, 10, 9, 11, 10, 12
Sub DeretSalah()Dim Nilai As Integer Nilai = 1 Do While (Nilai < 10) Debug Print Nilai; Nilai + 1; Nilai = Nilai + 2 LoopEnd Sub
Buatlah suatu prosedur untuk menukar isi dua buah bilangan ! Misalkan A = 7 dan B
= 5, lalu dilakukan Call Tukar(A, B), maka menjadi A = 5 dan B = 7.
Buatlah satu prosedur untuk melakukan langkah-langkah berikut :
menyediakan array berukuran 20;
mengisi masing-masing elemen array dengan bilangan acak antara 10
sampai 20;
menentukan nilai rata-rata, nilai maksimum, dan nilai minimum dari seluruh
elemen array; lalu
menampilkan hasilnya di Immediate Window atau dengan MsgBox.
Buatlah satu prosedur untuk melakukan langkah-langkah berikut :
menyediakan dua buah array—misalnya P dan Q—berukuran 3x4 (array dua
dimensi biasa disebut matriks);
mengisi masing-masing elemen matriks dengan bilangan acak genap antara
0 sampai 20;
jumlahkan matriks P dan Q dan simpan hasilnya di matriks R; lalu
tampilkan isi matriks R.
Buatlah satu prosedur untuk mengisi dua buah matriks berukuran 2x3 dengan
bilangan acak antara 1 sampai 10! Kemudian tukarlah semua elemen antara matriks-
matriks tersebut, matriks B ke dalam matriks A, dan sebaliknya! Tampilkan isi
matriks sebelum dan sesudah ditukar !
Production Engineering Department