Professional Documents
Culture Documents
Programming in
Microsoft
Excel 2000
Manufacturing
=(B4+25)/SUM(D5:F5)
Alamat range operator 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.
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
Comparison operators digunakan untuk memperbandingkan dua buah nilai yang hasil perbandingannya akan berupa nilai TRUE (Benar) atau FALSE (Salah).
Operator = > < >= <= <> sama dengan lebih besar dari lebih kecil dari lebih besar atau sama dengan dari lebih kecil atau sama dengan dari tidak sama dengan Maksud Contoh A1=B1 A1>B1 A1<B1 A1>=B1 A1<=B1 A1<>B1
Text concatenation operators digunakan untuk menggabungkan beberapa teks menjadi satu.
Operator & Maksud Menggabungkan dua teks menjadi satu Contoh "North" & "wind" menghasilkan "Northwind"
Reference operators digunakan untuk menggabung alamat beberapa cell/range menjadi satu.
Operator : , Maksud Operator range, yang menandakan satu alamat untuk seluruh cell yang terdapat di antara dua alamat cell, termasuk kedua cell tersebut Operator penggabungan banyak range menjadi satu range B5:B15 SUM(B5:B15,D5:D15) Contoh
Operator : (spasi) , % ^ * dan / + dan & = < > <= >= <>
Maksud operator reference (alamat cell/range) tanda negatif persentase pangkat perkalian dan pembagian penjumlahan dan pengurangan penggabungan teks perbandingan
Level + -
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 3 4 5 6 7 8 9 10 11 12 13 14 15 16 C D 1992 100.600 133.100 233.700 129.200 150.500 279.700 89.900 112.300 202.200 E 1997 161.000 198.200 359.200 160.700 190.100 350.800 153.900 190.700 344.600
Elektronik Eropa Amerika Total Elektronik Akustik Eropa Amerika Total Akustik Perlengkapan Studio Eropa Amerika Total Perlengkapan Studio =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 E
10 %
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 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. kelebihan suatu array formula, bahwa perubahannya tidak bisa per bagian, melainkan harus semua bagian. Jika kita menekan Enter ketika selesai mengetik formula
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 masingmasing 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.
3 4 5 6 7
12 36 48 60 72 84
16 48 64 80 96 112
18 54 72 90 108 126
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.
Lebar
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).
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
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 !
10
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.
cell/range adalah dengan mengubah di kotak isian Name box terletak di samping kiri formula bar).
yang
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 1 2 3 North South B Qtr1 311 193 C Qtr2 213 486 D Qtr3 112 398 E Qtr4 446 509 F
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.
11
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)
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.
12
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.
#DIV/0!
#N/A
#NAME?
#NULL!
13
#NUM!
#REF! #VALUE!
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 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 fungsi Argumen
=SUM(A10,B5:B10,50,37)
Tanda koma yang memisahkan masing-masing argumen Tanda kurung
14
=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
dilihat pada gambar 1.4 di bawah dalam penyusunan formula sebelumnya untuk fungsi SUM.
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.
15
CATATAN
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 FALSE FALSE TRUE TRUE Kondisi B FALSE TRUE FALSE TRUE A AND B FALSE FALSE FALSE TRUE A OR B FALSE TRUE TRUE TRUE NOT A TRUE TRUE FALSE FALSE
16
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 : 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)
17
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 !
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 11 12 13 Rumah Kontrakan Jl. H. Eman Gg. Pemuda B Total Pengeluaran =SUMIF(A2:A7,A12,B2:B7) =SUMIF(A2:A7,A13,B2:B7) C Berapa Kali Pengeluaran =COUNTIF(A2:A7,A12) =COUNTIF(A2:A7,A13)
18
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.
LATIHAN
Buatlah fungsi untuk menghitung jumlah cell yang berisi nilai 1 atau 12 !
19
penjualannya antara 300 dan 400 Jumlah penjualan untuk yang penjualannya antara 300 dan 400
ABS Penjelasan : Nilai absolut dari suatu bilangan. Syntax Contoh : ABS(bilangan) : =ABS(2) menghasilkan 2 =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 Contoh : CEILING(bilangan,besaran_pembulatan) : =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 Contoh : EVEN(bilangan) : =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 Contoh : FLOOR(bilangan,besaran_pembulatan) : =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 Contoh : INT(bilangan) : =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 Contoh : MOD(bilangan,pembagi) : =MOD(11,3) menghasilkan 2 =MOD(-7,2) menghasilkan 1
20
21
22
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 1 2 3 4 5 6 7 8 9 10 11 Contoh : jenis perhitungan AVERAGE COUNT COUNTA MAX MIN PRODUCT STDDEV STDDEVP SUM VAR VARP
menghasilkan bilangan 5. Syntax Contoh : TRUNC(bilangan,jumlah_desimal) : =TRUNC(8.963824) menghasilkan 8 =TRUNC(8.963824,3) menghasilkan 8.963 =TRUNC(-8.9,2) menghasilkan 8.9
23
24
kemudian mengumpulkan data jumlah tempe yang dihasilkan per jam (dalam ribuan) untuk jumlah mesin yang berbeda sebagai berikut :
A 1 2 3 4 5 6 7 Jumlah Mesin 1 2 3 4 5 B Jumlah Tempe per Hari (x 1000) 15 27 41 60 95 C
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 :
25
kembali. Setelah
sukses dalam tahun-tahun terakhir, terkadang perusahaan masih tetap kewalahan dalam menangani pesanan yang terus meningkat per bulannya. Untuk itulah, kitayang sekarang sudah diangkat menjadi Marketing Directordituntut untuk bisa membaca peluang pasar. Kita kemudian menyusun data penjualan tempe 6 bulan ke belakang (bulan 11 16) sebagai
26
PERMUT Penjelasan : Menghitung banyaknya permutasi (banyaknya kombinasi bilangan). Syntax Contoh : PERMUT(jumlah_bilangan,jumlah_dipilih) : 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.
Contoh
DAY Penjelasan : Mendapatkan angka hari dari tanggal yang diberikan. Nilai yang dihasilkan akan berkisar antara 1 sampai 31. Syntax Contoh : DAY(tanggal) : =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 Contoh : MINUTE(waktu) : =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
27
SECOND Penjelasan : Mendapatkan detik dari waktu yang diberikan. Nilai yang dikembalikan berkisar antara 0 sampai 59. Syntax Contoh : SECOND(waktu) : =SECOND(4:48:18 PM) menghasilkan 18 =SECOND(0.01) menghasilkan 24 TIME Penjelasan : Menghasilkan waktu berdasarkan data yang kita berikan. Syntax Contoh : DATE(jam,menit,detik) : =TIME(16,48,10) menghasilkan 4:48:10 PM
28
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) =WEEKDAY(2/14/1998) menghasilkan 7 (Sabtu)
Contoh
YEAR Penjelasan : Mendapatkan angka tahun dari tanggal yang diberikan. Nilai yang dihasilkan akan berkisar antara 1900 sampai 9999. Syntax Contoh : YEAR(tanggal) : =YEAR(7/5/1998) menghasilkan 1998
FALSE Penjelasan : Menghasilkan nilai logika FALSE. Syntax IF Penjelasan Syntax Contoh : FALSE()
: Menghasilkan suatu nilai jika kondisinya TRUE dan nilai lainnya jika kondisinya FALSE. Untuk lebih jelasnya lihat bagian Lebih lanjut dengan fungsi IF. : =IF(kondisi,nilai_jika_benar,nilai_jika_salah) : lihat bagian Lebih lanjut dengan fungsi IF
NOT Penjelasan : Membalik logika. Untuk lebih jelasnya lihat bagian Lebih lanjut dengan fungsi IF. Syntax Contoh OR Penjelasan Syntax Contoh : NOT(kondisi) : lihat bagian Lebih lanjut dengan fungsi IF
: Menghasilkan FALSE jika semua parameter/argumen bernilai FALSE. Untuk lebih jelasnya lihat bagian Lebih lanjut dengan fungsi IF. : OR(kondisi1,kondisi2,) : lihat bagian Lebih lanjut dengan fungsi IF
29
TRUE Penjelasan : Menghasilkan nilai logika TRUE. Syntax : TRUE()
30
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 Contoh : FIND(teks_yang_dicari,teks_tempat_mencari,posisi_mulai) : =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 : Syntax
Membulatkan
suatu
bilangan
pada
posisi
digit
yang
kita
tentukan
dan
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 Contoh : LEN(teks) : =LEN(Phoenix Pinion) menghasilkan 14 =LEN() menghasilkan 0 LOWER Penjelasan : Mengganti semua huruf yang terdapat di dalam teks menjadi huruf kecil. Syntax Contoh : LOWER(teks) : =LOWER(PT. Gajah Tunggal) menghasilkan pt. gajah tunggal
31
MID Penjelasan : Mengambil beberapa karakter dari sebuah teks. Syntax Contoh : MID(teks,posisi_mulai,banyaknya_karakter) : =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 menghurufkecil-kan sisanya. Syntax Contoh : PROPER(teks) : =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 Contoh : REPLACE(teks,posisi_diganti,jumlah_kar_diganti,teks_pengganti) : =REPLACE(abcdefghijk,6,5,*) menghasilkan abcde*k =REPLACE(abcdefghijk,6,1,12345) menghasilkan abcde12345ghijk =REPLACE(abcdefghijk,6,3,) menghasilkan abcdeijk
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 Contoh : SEARCH(teks_yang_dicari,teks_tempat_mencari,posisi_mulai) : =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 Contoh : SUBSTITUTE(teks,teks_lama,teks_baru,urutan_yang_diganti) : =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 Contoh : TEXT(nilai,format_teks) : =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 Contoh : TRIM(teks) : =TRIM( Saya Suka Buah ) menghasilkan Saya Suka Buah
32
UPPER Penjelasan : Mengganti semua huruf yang terdapat di dalam teks menjadi huruf besar. Syntax Contoh : UPPER(teks) : =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 Contoh : VALUE(teks) : =VALUE($1,000) menghasilkan 1,000 =VALUE(16:48:00)-VALUE(12:00:00) menghasilkan 0.2.
33
34
=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 1 (default ) 0 metode pencarian yang dilakukan 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). mencari nilai yang benar-benar sama dengan nilai_yang_dicari. Tabel tidak harus dalam keadaan terurut. 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
35
-1
36
37
=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
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 (). 1 jika cell diformat menggunakan tanda kurung untuk bilangan positif atau bilangan lain, sebaliknya 0 (nol). teks yang merupakan label prefix dari cell yang bersangkutan. Mengembalikan tanda kutip tunggal (') jika cell berisi prefix 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 protect row type cell berisi yang lain. 0 jika cell tidak dikunci dan 1 jika cell dikunci. nomor baris cell pertama dalam alamat teks yang merupakan jenis data yang terdapat dalam cell. Mengembalikan b (blank) jika cellnya kosong, l (label)
38
parentheses
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 General 0 #,##0 CELL menghasilkan "G" "F0" ",0"
$#,##0.00_);[Red]($#,##0.00) "C2-" 0% 0.00% 0.00E+00 # ?/? atau # ??/?? m/d/yy atau m/d/yy h:mm atau mm/dd/yy d-mmm-yy atau dd-mmm-yy d-mmm atau dd-mmm mmm-yy mm/dd h:mm AM/PM h:mm:ss AM/PM h:mm h:mm:ss "P0" "P2" "S2" "G" "D4" "D1" "D2" "D3" "D5" "D7" "D6" "D9" "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 Formula berikut ini digunakan untuk memeriksa cell E50 apakah isinya nilai kesalahan #NULL! atay #DIV/0!. Jika benar, maka tampilkan pesan kesalahan. =IF(ERROR.TYPE(E50)<3,CHOOSE(ERROR.TYPE(E50),Range bung,Terjadi pembagian dengan 0)) INFO Penjelasan : Menghasilkan informasi yang berhubungan dengan lingkungan operasi yang aktif. Syntax : INFO(jenis_info) tidak terhu-
39
Contoh
totmem Contoh :
yang sedang digunakan), dalam byte. 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 ISBLANK ISERR ISERROR ISLOGICAL ISNA ISNONTEXT menghasilkan TRUE jika nilai/cell-nya kosong. memiliki nilai kesalahan selain #N/A. memiliki nilai kesalahan #N/A, #VALUE!, #REF!, #DIV/0!, #NUM!, #NAME?, atau #NULL!. memiliki nilai berjenis logika (TRUE atau FALSE). memiliki nilai kesalahan #N/A. memiliki nilai berjenis selain teks. Jika nilainya kosong maka
40
Contoh
fungsi ini juga akan menghasilkan nilai TRUE. ISNUMBER memiliki nilai berjenis bilangan. ISREF memiliki nilai berjenis referensi/alamat. ISTEXT memiliki nilai berjenis teks. : =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 :
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 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
41
Contoh
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 kitamungkin 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
1 2 3 4 5 6
42
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 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
worksheet yang menggunakan 6 intermediate formula, dan yang menggunakan fungsi VBA.
LATIHAN Jika kita memiliki worksheet yang berisi status stok harian material X, seperti ini :
A B C D 1 Tanggal Masuk Keluar Stok 2 1/1/2002 50 3 2/1/2001 20 30 40 4 3/1/2001 5 4/1/2001 6 5/1/2001 7 6/1/2001 Buatlah formula untuk mengisi kolom Stok secara otomatis jika kolom Masuk dan kolom Keluar diisi secara manual !
43
Jika kita memiliki daftar kenaikan nilai berdasarkan persentase sebagai berikut :
A B C 1 Persentase : 5% 2 10 3 10.5 Buatlah daftar otomatis kenaikan nilai (10 baris saja) berdasarkan isi cell C1 !
44
45
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 menyederhanakan 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.
46
Sebuah Analogi
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 adadan 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 ?
47
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.
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
48
49
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 2.2 di bawah ini. , yang terdapat pada toolbar Standard
Jika kode yang kita masukkan benar, maka akan tampil kotak dialog seperti terlihat pada gambar
50
51
CATATAN
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 Range("C1").Select ActiveCell.FormulaR1C1 Range("D1").Select ActiveCell.FormulaR1C1 Range("E1").Select ActiveCell.FormulaR1C1 Range("F1").Select ActiveCell.FormulaR1C1 Range("G1").Select ActiveCell.FormulaR1C1 Range("B1").Select End Sub
52
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.
53
CATATAN
Kita bisa perhatikan bahwa Excel menghasilkan kode di atas dengan menggunakan pengalamatan cell A1yang 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, ActiveCell.Offset(0, ActiveCell.Offset(0, ActiveCell.Offset(0, ActiveCell.Offset(0, ActiveCell.Offset(0, End Sub 0) 1) 2) 3) 4) 5) = = = = = = Jan Feb Mar Apr May Jun
Bahkan kita bisa lebih menyederhanakan lagi kode di atas menjadi lebih efisien dengan menggunakan struktur With-End With sebagai berikut :
0) 1) 2) 3) 4) 5)
= = = = = =
Jika 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.
54
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).Select With Selection .NumberFormat = #,##0.00 .Font.Bold = True .Font.Italic = True End With Atau kita bisa menghilangkan penggunaan metode Selection dan menulis seperti ini : With Range(A1:C5) .NumberFormat = #,##0.00 .Font.Bold = True .Font.Italic = True End With
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)
55
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 Answer End Sub Sub UbahNilai() Workbooks(Book1).Worksheets(Sheet1).Range(A1) = 123 End 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 :
Salah 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 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. perintah yang salah Yang benar adalah yang menggunakan tanda kurung sebagai berikut :
56
57
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 MsgBox ActiveSheet.Name MsgBox ActiveWorkbook.Name 'menghapus isi suatu cell yang sedang aktif. 'menampilkan nama sheet yang sedang aktif. '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
58
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
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 aktif ActiveCell.Offset(-1,0).Value = 12 mengisi satu cell di atas cell yang aktif
59
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 copylah 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 !
60
61
Komentar
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.
62
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.
mengeluarkan pesan kesalahan karena kata Next merupakan reserved word yang digunakan struktur ForNext. 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.
63
(variable-length) (fixed-length)
(with numbers)
Semua jenis bilangan dengan batasan jenis data Double 0 hingga rata-rata 2 milyar karakter tergantung elemen yang terdapat di dalamnya
User defined
Perhatikan : 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 MyVar End 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 MyVar End Sub
64
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 ToolsOptionsEditorRequire Variable Declaration.
65
Lingkup Variabel
Lingkup Satu prosedur Satu modul Seluruh modul Bagaimana Variabel tersebut harus dideklarasikan Gunakan perintah Dim atau Static (dalam pendeklarasian) di dalam prosedur yang bersangkutan. Gunakan perintah Dim atau Private sebelum prosedur pertama di dalam 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 Single End Sub Kita juga bisa mendeklarasikan beberapa variabel dalam satu baris, misalnya : Dim x As Integer, y As Integer, z As Integer Private 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 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 Integer Private 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
66
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 End Sub Sub Utama1() Hitung1 Hitung1 Hitung1 End Sub Sub Hitung2() Dim Counter As Integer Counter = Counter + 1 MsgBox Counter End Sub Sub Utama2() Hitung2 Hitung2 Hitung2 End Sub
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 = 4 Const Rate = 0.275, Period = 12 Public 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 4135yang mungkin agak sulit untuk dihapalkan.
67
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
Operator + * / \ ^ & Mod Maksud Penjumlahan Pengurangan Perkalian Pembagian Pembagian bulat Pemangkatan Penggabungan teks Sisa hasil bagi Contoh 10 + 2 2 3 -4 * 5 10 / 3 10 \ 3 2 ^ 3 a & b 10 Mod 3 12 -1 -20 3.33333333 3 8 ab 1
Operator Perbandingan
Operator = > < >= <= <> Maksud sama dengan lebih besar dari lebih kecil dari lebih besar atau sama dengan dari lebih kecil atau sama dengan dari tidak sama dengan Contoh 2 = 3 7 > 3 7 < 7 8 >= 7 -1 <= -5 a <> b False True False True False True
68
CATATAN
Urutan perhitungan dalam VBA sama seperti dalam Excel. Lihat Urutan Proses Perhitungan dalam Modul 1 untuk lebih jelasnya.
Array
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 Dim ArrayKu(0 To 100) As Integer Dim ArrayKu(1 To 100) As Long ' NamaBulan(0) s/d NamaBulan(12) ' ArrayKu(0) s/d ArrayKu(100) ' 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 Array 1 Dimensi (1) (2) ' akses komponen baris ke 3 kolom ke 4 (3) (4) (5) (n-2) (n-1) (n)
Dimensi = (1 To n)
69
Array 2 Dimensi
Dimensi = (1 To m, 1 To n)
Array 3 dimensi
1 - n
Dimensi = (1 To m, 1 To n,1 To p)
1p
1-m
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 = True End Sub Sub ObjVar() Dim MyCell As Range Set MyCell = Worksheets(Sheet1).Range(A1) MyCell.Value = 124 MyCell.Font.Bold = True MyCell.Font.Italic = True End Sub
70
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 operasioperasi 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 MsgBox
Fungsi 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 VBAmisalnya 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 :
71
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
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 = 5 End 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 .Underline = xlSingle .ColorIndex = 5 End With End 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.
72
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 :
73
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 :
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 For Each Item In ActiveWorkbook.Worksheets MsgBox Item.Name Next Item End Sub
74
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 Baris End 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-
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() Do While Not IsEmpty(ActiveCell) ActiveCell.Value = 0 ActiveCell.Offset(1, 0).Select Loop End 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 #1 End Sub
75
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. 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 #1 End Sub
76
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 ForNext, Do-While, atau Do-Until) : 1 2 4 8 16 1024 1 3 5 7 9 21
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 desimalsebagai 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() 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
77
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 jumlah < 50 jumlah < jumlah 25, 50, 75, 75, maka maka maka maka diskon diskon diskon diskon = = = = 10 15 20 25 % % % %
78
Fungsi Iif
VBA 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
79
LATIHAN
Ubahlah prosedur pada latihan sebelumnya yang menggunakan If-Then-Else menjadi menggunakan Select-Case !
Mendeklarasikan Prosedur
CATATAN
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
80
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.
81
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 kemisalnyakanan 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.
82
Lalu pilih Assign Macro pada menu shortcut tersebut dan pilih macro yang kita inginkan dari daftar macro yang adamisalnya 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 :
83
Module2
Sub A() ... End Sub ambiguous error
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/parameternya 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
84
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. 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
CATATAN
Parameter Target pada event di atas diciptakan secara otomatis oleh VBA yang jenisnya adalah objek Range. Untuk mendapatkan 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
85
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.
(Excel
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 C 1 Excel lecxE 2 Kalimat Terbalik kilabreT tamilaK 3 Malam di Makam makaM id malaM 4 Kasur Rusak kasuR rusaK 5 12345.678 876.54321 6 TRUE eurT 7 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 Kalimat End Sub
86
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 Private (opsional) menandakan bahwa fungsi yang bersangkutan hanya bisa diakses oleh prosedur/fungsi yang terletak pada modul yang sama. Fungsi juga tidak
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.
87
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 argumen Function NamaUser() User = Application.UserName End Function Prosedur dapat memiliki argumen dalam jumlah yang tetap, misalnya COUNTIF yang membutuhkan dua argumen; Contoh prosedur dengan argumen Sub Ucapan(Nama As String) MsgBox Selamat Datang & Nama End Sub Prosedur dapat memiliki argumen yang jumlahnya tidak terbatas, misalnya SUM; dan Contoh fungsi dengan argumen tak terbatas Function Total(ParamArray Nilai() As Variant) Dim I As Integer Total = 0 For I = 0 To Ubound(Nilai()) Total = Total + Nilai(I) Next I End Function Prosedur dapat memiliki argumen yang opsional, misalnya PMT yang memiliki dua argumen opsional.
Contoh prosedur dengan argumen opsional Sub 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 If End Sub
88
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.
89
Suatu 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
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 $0 - $9,999 $10,000 - $19,999 $20,000 - $39,999 $40,000+ Sebenarnya masalah di atas bisa diselesaikan 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 Select End Function
90
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 TampilkanKomisi End Sub
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
91
CATATAN
Agar penanganan kesalahan ini dapat bekerja, opsi Break on All Errors harus dimatikan. Untuk mengakses opsi ini masuk ToolsOptionstab General. Jika kita menyalakan opsi Break on All Errors, maka VBA akan mengabaikan kode penanganan kesalahan yang kita buat.
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). 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 If End Sub
92
93
CATATAN
Sebagian besar programmer cenderung menggunakan teknik On Error Resume Next, walaupun Biasanya programmer selalu mengaktifkan opsi Break on Unhandled Errors.
94
Debugging
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 worksheetdan 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.
95
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 = False End Sub Properti CurrentRegion milik objek Range digunakan untuk mendapatkan satu blok rangeyang dipisahkan oleh baris dan kolom kosongdimana 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 !
96
Sebagian besar koleksi objek di dalam VBA memiliki properti Count yang digunakan 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
97