Anda di halaman 1dari 54

Oleh:

Rafael Krisna A (662018002)


Denny Indrajaya (662018003)
Brigitha Cintya Imanuella (662018004)
Maria Anita (662018005)
Obed Christian Dimitrio (662018006)
Daftar Isi

36. Penggunaan VBA untuk Fungsi Buatan Pengguna...........................................................................3


36.1 Gambaran...................................................................................................................................3
36.2 Menggunakan Editor VBA untuk Membangun Fungsi yang Ditentukan Pengguna.....................3
36.3 Menyediakan Bantuan untuk Fungsi yang Ditentukan Pengguna di Fungsi Wizard....................8
36.4 Menyimpan Buku Kerja Excel dengan Konten VBA...................................................................11
36.5 Memperbaiki Kesalahan di VBA................................................................................................13
36.6 Eksekusi Bersyarat: Menggunakan Pernyataan If dalam Fungsi VBA........................................15
36.7 Operator Boolean dan Perbandingan........................................................................................19
36. 8 Perulangan...............................................................................................................................22
36.9 VBA menggunakan Fungsi Excel................................................................................................27
36.10 Menggunakan Fungsi Buatan Pengguna dalam Fungsi Buatan Pengguna...............................29
37. Variabel dan Array.........................................................................................................................31
37.1 Gambaran.................................................................................................................................31
37.2 Mendefinisikan Variabel Fungsi................................................................................................31
37.3 Array Dan Range Excel..............................................................................................................33
37.4 Array VBA Sederhana................................................................................................................37
37.5 Array Multidimensi....................................................................................................................44
37.6 Array Dinamis dan Pernyataan Redim.......................................................................................46
37.7 Penugasan Array.......................................................................................................................48
37.8 Varian yang Mengandung Array................................................................................................49
37.9 Array Sebagai Parameter ke Fungsi...........................................................................................50
37.10 Menggunakan Types...............................................................................................................52
37.11 Ringkasan................................................................................................................................54

2
36. Penggunaan VBA untuk Fungsi Buatan Pengguna
Visual Basic for Applications (VBA) adalah bahasa pemrograman yang dilampirkan ke
Excel. VBA sangat fungsional dan fleksibel. Karena integrasinya yang siap dengan lembar
kerja Excel, VBA banyak digunakan dalam komunitas keuangan. VBA menggabungkan
banyak fitur yang merupakan bagian dari bahasa pemrograman standar, dan tidak sulit untuk
dikuasai jika Anda memiliki pengalaman pemrograman.

Bagian buku ini mencakup topik Visual Basic for Applications (VBA). Bab 36 menunjukkan
bagaimana menulis fungsi yang dapat ditambahkan ke dalam spreadsheet Excel. Pemodelan
Keuangan menggunakan banyak dari fungsi "buatan sendiri" ini. Bab 37 membahas topik
lebih lanjut terkait dengan variabel dan array di VBA.

36.1 Gambaran
Pada Bab ini akan dibahas penggunaan bahasa pemrograman Excel, Visual Basic for
Applications (VBA). VBA menyediakan bahasa pemrograman dan lingkungan(ruang kerja)
lengkap yang terintegrasi penuh dengan Excel dan semua aplikasi Microsoft Office lainnya.
Dalam bab ini diperkenalkan fungsi yang ditentukan pengguna, yang digunakan di berbagai
tempat dalam buku ini.

Contoh dan cuplikan layar menggambarkan ruang kerja Excel 2013 tetapi sepenuhnya
kompatibel (kecuali dinyatakan lain) dengan semua versi Excel yang menggunakan Visual
Basic for Applications (Versi 5 dan lebih tinggi).

36.2 Menggunakan Editor VBA untuk Membangun Fungsi yang Ditentukan Pengguna
Pada bagian ini ditunjukkan bagaimana membangun fungsi yang ditentukan pengguna.
Fungsi pengguna adalah daftar instruksi yang disimpan untuk Excel yang menghasilkan nilai.
Setelah ditentukan, fungsi pengguna dapat digunakan di dalam lembar kerja Excel seperti
fungsi lainnya.

Di bagian ini akan ditulis fungsi yang ditentukan pengguna pertama. Sebelum melakukannya,
kita perlu mengaktifkan editor VBA. Anda dapat melakukan ini baik dengan menggunakan
pintasan keyboard [Alt] + F11 atau dari pita Excel (Developer Tab | Visual Basic Editor).
Secara default, Excel tidak menampilkan tab Developer di ribbon Excel. Untuk menampilkan
tab Developer, buka File | Options | Customize Ribbon dan tunjukkan Developer:

3
Hasil dalam kedua kasus tersebut adalah jendela baru seperti cuplikan layar berikut (jendela
Anda mungkin terlihat sedikit berbeda, tetapi fungsinya sama).

Fungsi yang ditentukan pengguna perlu ditulis dalam modul. Untuk membuka modul baru,
pilih Insert | Module dari menu di lingkungan editor VBA. Ini akan membuka jendela baru,
seperti yang diilustrasikan di screen shot berikutnya:

4
Sekarang siap untuk menulis fungsi pertama. Fungsi ini (bernama "plus") akan
menjumlahkan dua angka.

Fungsi yang ditentukan pengguna di Excel memiliki tiga elemen wajib:

1. Baris header dengan nama fungsi dan daftar parameter.


2. aris penutup (biasanya disisipkan oleh VBA).
3. Beberapa baris program antara header dan baris penutup.

Mulailah menulis baris pertama dari fungsi tersebut:

Setelah mengakhiri baris dengan tombol Enter, VBA akan melakukan pembersihan. Warna
semua kata yang dikenali VBA sebagai bagian dari bahasa pemrogramannya ("kata-kata
khusus") akan berubah. Semua kata yang dipesan akan menggunakan huruf besar. Spasi akan
ditambahkan setelah koma yang memisahkan parameter pertama dari parameter kedua. Garis
penutup untuk fungsi akan disisipkan, dan kursor akan berada di posisi antara header dan
garis penutup siap untuk Anda lanjutkan mengetik.

5
Sekarang siap untuk mengetik baris fungsi. Ini adalah garis yang membuat fungsi melakukan
sesuatu. Fungsi pertama akan mengambil dua variabel dan mengembalikan jumlahnya:

Sekarang dapat menggunakan fungsi ini di spreadsheet:

Cara tercepat untuk menyisipkan fungsi (dengan asumsi Anda tahu namanya) adalah mulai
mengetik namanya. Ketika daftar nama yang disarankan dipersempit, pilih nama fungsi yang
sesuai dari daftar:

6
Anda juga dapat menggunakan fungsi tersebut di Wizard Fungsi Excel. Mengklik ikon ini

pada toolbar akan menghasilkan layar berikut:

Memilih User-Defined dari menu tarik-turun akan menampilkan layar berikut yang
mencantumkan semua fungsi yang ditentukan pengguna; salah satunya adalah fungsinya baru
saja menambahkan, ditambah:

7
Saat Anda memilih plus dan mengklik OK, akan terlihat bahwa Excel melakukan ini seperti
fungsi lainnya, memunculkan kotak dialog yang menanyakan lokasi atau nilai parameter1
dan parameter2:

Perhatikan bahwa pada poin ini tidak ada penjelasan atau bantuan untuk fungsi tersebut.
Bagian selanjutnya memberikan bagian dari pengobatannya.

36.3 Menyediakan Bantuan untuk Fungsi yang Ditentukan Pengguna di Fungsi Wizard

8
Wizard Fungsi Excel (diperlihatkan di bawah) menyediakan baris bantuan singkat (penjelasan
tentang fungsi fungsi). Berikut ini cara Excel menjelaskan fungsinya sendiri di Function
Wizard:

Untuk melampirkan deskripsi teks ke fungsi, aktifkan kotak pilihan makro. Dapat dilakukan
dari ribbon Excel (Developer | Macros) atau dengan menggunakan pintasan keyboard [Alt] +
F8.

9
Klik di kotak nama Makro, dan ketik nama fungsinya (perhatikan bahwa Anda tidak melihat
nama fungsi di kotak dialog makro di atas… Anda harus mengetiknya):

Klik pada tombol Options :

10
Ketik deskripsi di kotak Deskripsi. Klik OK, dan tutup kotak pilihan makro. Fungsi sekarang
memiliki saluran bantuan.

Fungsi Excel memiliki garis bantu yang dilampirkan ke masing-masing parameter dan entri
file bantuan.

36.4 Menyimpan Buku Kerja Excel dengan Konten VBA

Di beberapa titik dalam proses, kita perlu menyimpan pekerjaan kita. Dimulai dengan Excel
2007, buku kerja Excel dengan konten VBA harus disimpan sebagai file “macroenabled

11
file.” Saat Anda pertama kali mencoba menyimpan buku kerja dengan konten VBA, Excel
akan menampilkan pesan berikut:

Anda harus memilih Tidak (No) dan mendapatkan dialog Save As untuk memungkinkan
Anda memilih jenis file baru.

Sekarang buka pilihan yang dilingkari, pilih opsi kedua, xlsm, dan simpan buku kerja. Jika
Anda sering menggunakan VBA, Anda mungkin mempertimbangkan untuk mengubah tipe
file Excel default ke xlsm.

12
36.5 Memperbaiki Kesalahan di VBA
Setiap Anda mulai menggunakan VBA, Anda pasti akan membuat kesalahan. Di bagian ini
kami mengilustrasikan beberapa kesalahan umum dan membantu Anda memperbaikinya.
Daftar ini tidak dimaksudkan untuk menjadi pelengkap — kami telah memilih kesalahan
yang biasanya dilakukan oleh pengguna VBA pemula.

Kesalahan 1: Menggunakan Sintaks yang Salah

Misalkan dalam menulis plus Anda lupa tanda “+” antara parameter1 dan parameter2 (ingat
bahwa fungsi tersebut seharusnya mengembalikan parameter1 + parameter2). Setelah Anda
menekan tombol Enter, Anda mendapatkan pesan kesalahan berikut:

klik tombol OK memperbaiki masalah ini.

Kesalahan 2 : Sintaks Benar dengan Kesalahan Pengetikan

Sangat mudah untuk membuat kesalahan pengetikan yang hanya akan terdeteksi setelah Anda
mencoba menggunakan fungsinya. Pada contoh di bawah ini, kami mendefinisikan dua
fungsi — fungsi1 dan fungsi2. Sayangnya, jalur program untuk function2 secara keliru
memanggil fungsi "function1":

13
Editor VBA tidak segera mengenali kesalahan ini. Kesalahan akan muncul saat Anda
mencoba menggunakan fungsi di lembar kerja. Excel akan memberi tahu Anda bahwa Anda
telah membuat kesalahan dan membawa Anda ke editor VBA:

Jika Anda mengenali kesalahan Anda, Anda bisa memperbaikinya. Anda juga dapat mencoba
untuk pergi ke bantuan VBA dengan mengklik Bantuan (dalam banyak kasus ini akan
mengarah ke tidak bisa dimengerti penjelasan yang rumit).

Misalkan Anda mengenali kesalahan Anda. Anda klik OK, dan bersiap untuk mengoreksi
kesalahan dengan mengganti kata "Function1" dengan "Function2". Pada saat ini layar Anda
terlihat seperti ini:

14
Perhatikan:

A. Kata [istirahat] di bilah judul.


B. Simbol yang melanggar dipilih.
C. Garis fungsi disorot dan ditunjukkan oleh panah di pinggir.

Karena VBA menemukan kesalahan saat mencoba menjalankan fungsinya, itu dipindahkan
menjadi mode eksekusi khusus yang disebut mode debug-break. Untuk saat ini yang kita
butuhkan yang harus dilakukan adalah keluar dari mode khusus ini sehingga kita dapat

melanjutkan pekerjaan kita. Kami melakukannya ini dengan mengklik ikon pada toolbar
VBA. Sekarang Anda dapat memperbaiki fungsinya dan gunakan itu. Kami dapat (dan harus)
meminta VBA memeriksa kesalahan modul sebelum mencoba untuk menggunakan fungsi
dalam modul. Dari menu VBA kami pilih Debug | Compile VBA project; ini akan
menemukan kesalahan pertama dalam modul dan tunjukkan seperti sebelumnya tetapi tanpa
masuk ke mode debug-break.

36.6 Eksekusi Bersyarat: Menggunakan Pernyataan If dalam Fungsi VBA


Di bagian ini kami menjelajahi pernyataan If tersedia untuk Anda di VBA. Tidak semua hal-
hal dalam hidup ini linier, dan terkadang keputusan harus dibuat. Jika pernyataan adalah
salah satu cara melakukan ini di VBA.

Pernyataan If One-Line

Pernyataan If satu baris adalah cara paling sederhana untuk mengontrol eksekusi Fungsi
VBA: Satu pernyataan dijalankan jika kondisinya benar dan yang lainnya benar dijalankan

15
jika kondisi tidak benar. Kondisi lengkap dan pernyataannya harus dalam satu baris. Berikut
contohnya:

Kita sekarang dapat menggunakan fungsi OneLineIf di Excel. Ketika Parameter > 5,
OneLineIf mengembalikan 1 dan ketika Parameter < 5, OneLineIf mengembalikan 15.

Satu baris If pernyataan bahkan tidak membutuhkan bagian Else. Fungsinya di bawah,
OneLineIf2, mengembalikan 0 jika kondisi "Parameter> 5" tidakterpenuhi:

Praktik Pemrograman yang Baik: Tentukan Nilai pada Fungsi Anda Terlebih Dahulu

Dalam fungsi di atas, akan menjadi praktik pemrograman yang baik untuk menetapkan
terlebih dahulu nilai fungsi sebelum memperkenalkan pernyataan If. Dengan cara ini kita
tahu OneLineIf3 itu default ke -16 jika kondisi pada Parameter tidak terpenuhi.

16
Untuk melihat perbedaannya, lihat spreadsheet di bawah ini:

If … ElseIf Statements

Jika lebih dari satu pernyataan akan dieksekusi secara bersyarat, blok If… Pernyataan ElseIf
dapat digunakan. Ini menggunakan sintaks berikut:

If Condition0 Then

Pernyatan

ElseIf Condition1 Then

Pernyatan

[… More ElseIfs …]

Else

Pernyataan

End If

Klausa Else dan ElseIf keduanya opsional. Anda mungkin memiliki klausa ElseIf sebanyak
yang Anda inginkan setelah klausa If, tetapi tidak ada yang dapat muncul setelah klausa Else.
Jika pernyataan dapat dimuat satu sama lain. Berikut contohnya:

17
Berikut cara kerja fungsi ini di Excel:

Struktur Nested If

Seperti yang dinyatakan di bagian sebelumnya, Pernyataan If dapat digunakan sebagai bagian
dari pernyataan yang digunakan dalam pernyataan If lainnya. Struktur program yang
memiliki beberapa pernyataan If di dalam yang lain disebut struktur If bersarang. Setiap
pernyataan If dalam struktur harus berupa pernyataan If lengkap. Baik satu baris atau versi
blok dapat digunakan.

Fungsi berikut menunjukkan penggunaan struktur NestedIf:

18
Beginilah tampilannya di Excel:

36.7 Operator Boolean dan Perbandingan


Ekspresi yang digunakan sebagai kondisi dalam pernyataan “IF” juga dikenal sebagai
ekspresi Boolean. Ekspresi Boolean dapat memiliki salah satu dari dua nilai: “BENAR” saat
kondisi berlaku, dan “SALAH” jika kondisi dilanggar. Biasanya ekspresi Boolean dibuat
menggunakan operator Perbandingan “And” / “or” Boolean. Berikut ini adalah daftar
operator Perbandingan yang paling umum.

Operator Arti

19
< Kurang dari

<= Kurang dari atau sama dengan

> Lebih besar dari

>= Lebih besar dari atau sama dengan

= Sama dengan

<> Tidak sama dengan

Operator Boolean “And”

Fungsi selanjutnya menggunakan operator Boolean untuk memeriksa apakah ada dua kondisi
tahan pada saat bersamaan.

Berikut beberapa ilustrasinya:

Perhatikan apa yang dilakukan AndDemo: Memeriksa kedua kondisi ( parameter 1<10) dan
( parameter 2>15). Jika kedua kondisi berlaku, saat kondisi tersebut bertahan dan fungsi
mengembalikan nilai 3. Jika tidak (yaitu, jika salah satu dari kondisi dilanggar) ia
mengembalikan 12. (Perhatikan bahwa kedua kondisi dalam tanda kurung.)

20
Fungsi dan tangkapan layar berikut mendemonstrasikan keempat kemungkinan kombinasi
dari dua kondisi dan kondisi gabungan yang dihasilkan:

Operator Boolean “or”

Fungsi OrDemo, yang diilustrasikan di bawah, memeriksa apakah setidaknya satu dari dua
kondisi berlaku:

Perhatikan apa yang dilakukan OrDemo: Memeriksa apakah kondisi pertama (Parameter1
<10) atau kondisi kedua (Parameter2> 15) atau keduanya kondisi bertahan. Hanya jika kedua
kondisi dilanggar, fungsi akan kembali ke nilai 12. Jika tidak (yaitu, jika salah satu atau

21
kedua kondisi berlaku) kembli ke 3. (Perhatikan bahwa kedua kondisi berada dalam tanda
kurung.)

Fungsi berikut dan tangkapan layar mendemonstrasikan keempat kemungkinan kombinasi


dari dua kondisi dan kondisi gabungan yang dihasilkan:

36. 8 Perulangan
Struktur perulangan digunakan saat Anda perlu melakukan sesuatu berulang kali. Selalu ada
lebih dari satu cara untuk mencapai efek yang diinginkan. Secara umum ada dua perulangan:

 Perulangan pemeriksaan atas: Kondisi perulangan diperiksa sebelum hal lain selesai.
Sesuatu yang harus dilakukan bisa dibiarkan begitu saja jika kondisinya tidak
terpenuhi saat masuk ke loop.
 Perulangan pemeriksaan bawah: Kondisi perulangan diperiksa setelah sesuatu yang
harus dilakukan selesai. Sesuatu yang harus dilakukan setidaknya akan selalu
dilakukan sekali.

VBA memiliki dua struktur looping utama yang tercakup dari semua sudut yang
memungkinkan oleh pernyataan “Do” dan variasinya. Semua subbagian berikut akan
digunakan versi fungsi faktorial untuk tujuan demonstrasi. Fungsinya didefinisikan sebagai:
f ( 0 )=1 f ( 1 )=1 f ( 2 )=2∗f ( 1 )=2… f ( n )=n∗f (n−1)

Pernyataan Do While

22
Do While dalah anggota dari keluarga perulangan pemeriksaan atas. VBA mengeksekusi satu
atau lebih pernyataan sebanyak nol atau lebih, sementara “a” kondisinya benar. Fungsi
berikut menunjukkan perilaku ini:

Pernyataan Do… Loop While

Do... Loop While dalah anggota dari loop pemeriksaan bawah. VBA mengeksekusi satu atau
lebih pernyataan satu kali atau lebih, sementara kondisinya benar. Fungsi berikut
menunjukkan perilaku ini:

23
Pernyataan Do Until

Pernyataan Do until adalah anggota dari keluarga loop pemeriksa atas. VBA mengeksekusi
satu atau lebih pernyataan nol kali atau lebih, hingga kondisi terpenuhi. Fungsi berikut
menunjukkan perilaku ini:

24
Pernyataan Do..Loop Until

Do... Loop Until dalah anggota dari loop pengecekan bawah. Itu membuat VBA
mengeksekusi satu atau lebih pernyataan satu kali atau lebih, sampai suatu kondisi menjadi
benar. Fungsi berikut menunjukkan hal ini tingkah laku:

For Loop

Variasi terakhir (untuk saat ini) pada loop adalah For, digunakan untuk loop di mana berapa
kali tindakan diulangi diketahui dalam muka. Fungsi berikut menunjukkan penggunaan dan
variasinya:

25
Bagian langkah dari pernyataan tersebut dapat dihapus jika (seperti dalam kasus kami)
kenaikannya adalah 1. Contoh:

Jika Anda ingin pengulangan menghitung mundur, argumen Langkah bisa negatif, seperti
ditunjukkan di fungsi selanjutnya:

26
Perulangan For bisa keluar lebih awal dengan menggunakan pernyataan Exit For seperti yang
ditunjukkan pada fungsi ini (bukan fungsi faktorial).

36.9 VBA menggunakan Fungsi Excel


VBA dapat menggunakan sebagian besar fungsi lembar kerja Excel. Kami mengilustrasikan
dengan menunjukkan cara menentukan distribusi binomial (meskipun ini, itu sendiri, adalah
fungsi Excel). Distribusi probabilitas variabel acak binomial ditentukan sebagai:

¿ ()
( p , n , x ) n p x ( 1− p )n−x dimana p adalah probabilitas sukses; x adalah jumlah keberhasilan,
x

dan n adalah jumlah percobaan. ( nx)= ( n−xn!) ! x ! adalah koefisien binomial, yang memberikan
jumlah cara memilih x elemen dari antara n elemen. Misalnya, Anda ingin membentuk tim
dua orang dari delapan kandidat dan Anda ingin tahu berapa banyak kemungkinan tim yang

bisa dibentuk. Jawabannya diberikan oleh (82)= ( 6 8) !!2 ! = 68 ∙5∙7∙∙ 36∙3∙5∙∙2∙4 ∙31∗2∙ 2∙∙11 =28 Fungsi Excel
27
Combin(8 , 2) tidak menggunakan perhitungan ini. Kami menggunakan fungsi Excel ini
dalam fungsi VBA berikut:

Seperti biasa, ini dapat diterapkan di dalam spreadsheet:

Perhatikan Application.WorksheetFunction.Combin(n , x) untuk menghitung ( nx)dalam


fungsi kami. Seperti yang bisa Anda tebak dari namanya (Application.
WorksheetFunction.Something), fungsi ini adalah Excel Worksheet function Combin( ).
Kebanyakan, tapi tidak semua Fungsi lembar kerja Excel dapat digunakan di VBA dengan
cara yang persis sama. Untuk daftar lengkapnya, lihat file Bantuan.

Satu hal lagi yang perlu diperhatikan adalah garis bawah (_) yang diawali dengan spasi di
akhir baris 2. Jika suatu garis terlalu panjang untuk ditangani, itu dapat dilanjutkan di baris
berikutnya menggunakan alat ini (baris kedua dan ketiga dari Binomial adalah satu baris
sejauh menyangkut VBA).

Misalkan kita mencoba menggunakan fungsi Binomial kita untuk menghitung Binomial
(0.5,10,15). Ini tidak akan berhasil:

28
Alasan masalahnya adalah karena dalam perhitungan ( nx) digunakan dalam Binomial, kita
harus punya x <n. Dalam kasus ini, VBA menyebabkan Excel mengembalikan file pesan
kesalahan #VALUE!

36.10 Menggunakan Fungsi Buatan Pengguna dalam Fungsi Buatan Pengguna


Fungsi yang ditentukan pengguna dapat digunakan di fungsi yang ditentukan pengguna
lainnya, hanya seperti fungsi Excel. Fungsi selanjutnya adalah pengganti COMBIN fungsi
n!
lembar kerja. COMBIN didefinisikan sebagai c ( n , x ) = dimana ! singkatan dari
( n−x ) ! x !
fungsi faktorial. (Ingatlah bahwa fungsi faktorial n ! Didefinisikan untuk apapun n> 0: 0!=1 ,
dan untuk n> 0 ,n !=n∗( n−1 )∗( n−2 ) …1. ¿

Ssekarang kita akan menulis versi VBA kita dari dua fungsi: fungsi faktorial dan
fungsi COMBIN

Baris 2 memeriksa apakah masukan adalah bilangan bulat dengan membandingkan bagian
bilangan bulat dari "n" ke "n." Fungsi "Int" adalah bagian dari VBA. Jika kita sudah salah,
misalnya dengan meminta HomeFactorial(3.3), maka baris 3 program akan menampilkan
Excel untuk mengembalikan #VALUE! . Demikian pula, baris 4 dan 5 memeriksa apakah
kita telah menanyakannya dengan tidak benar untuk HomeFactorial dari angka negatif; jika
ini masalahnya, maka baris 5 penyebab Excel untuk mengembalikan #NUM! .

Baris 9 memperkenalkan konsep baru; fungsi menggunakan dirinya sendiri untuk menghitung
nilai yang harus dikembalikan. Ini disebut rekursi. Berikut ilustrasi dari berfungsi dalam aksi:

29
Sekarang kita dapat menggunakan HomeFactorial untuk membuat Combin versi VBA kita
(yang akan kita sebut HomeCombin):

Terakhir, kita dapat menggunakan HomeCombin untuk membuat binomial versi VBA
fungsi:

Menempatkan Komentar dalam Kode VBA


Seperti yang diilustrasikan di atas, VBA akan mengabaikan apapun pada baris berikutnya

tanda kutip (perhatikan bahwa setiap baris baru komentar harus dimulai dengan

tanda kutip.)

30
37. Variabel dan Array
37.1 Gambaran
Dalam bagian pertama bab ini kita diperkenalkan definisi variabel fungsi. Bagian kedua bab
ini diperkenalkan array. Array adalah sekelompok variabel dari jenis yang sama berbagi
nama yang sama dan direferensikan secara individual menggunakan indeks. Vektor dan
matriks adalah contoh yang bagus dari satu dan dua dimensi array. Hubungan antara array
dan range lembar kerja membuka diskusi, diikuti dengan bagian yang menjelaskan array
secara sederhana dan dinamis (dimana ukuran dapat berubah pada waktu yang berjalan). Bab
ini akhiri dengan bagian tentang penggunaan array sebagai parameter dan diskusi singkat
tentang penggolongan variabel.

37.2 Mendefinisikan Variabel Fungsi


Variabel fungsi digunakan untuk menyimpan nilai. Variabel fungsi dapat menjadi baik
parameter atau variabel sederhana. Parameter didefinisikan ketika fungsi didefinisikan
dengan mencantumkannya dalam tanda kurung setelah nama fungsi. Sampai sekarang kita
menggunakan variabel sederhana jika diperlukan, mengandalkan VBA untuk mendefinisikan
variabel untuk kita saat pertama kali digunakan. Dalam kebanyakan skenario yang ditemukan
dalam buku ini, praktik ini cukup bagus, dan memiliki kelebihan karena menjadi cepat.
Pertama kali kami menemukan kedua ragam dari variabel fungsi ada di fungsi
DoWhileDemo:

Variabel N adalah parameter yang didapatkan nilainya dari aplikasi yang mengaktikan
fungsi( antara Excel atau fungsi lain). Variabel i,j merupakan variabel sederhana. Variabel
fungsi ( alias variabel internal atau lokal) kedua jenis dikenali hanya dalam fungsi dimana

31
mereka didefinisikan ( secara implisit atau eksplisit) dan tidak dikenali oleh Excel atau oleh
fungsi VBA lain.

Karena ini adalah fungsi yang sangat pendek, sebenarnya tidak ada alasan untuk
mendefinisikan variabel secara eksplisit dan tambahan komentar membuat semuanya cukup
jelas. Fungsi yang lebih panjang dengan lebih banyak variabel mungkin lebih menguntung-
kan dengan mendefinisikan variabel pada bagian atas fungsi, karena membuat pemrograman
lebih mudah dirawat dan jelas. Variabel sederhana didedinisikan menggunakan pernyataan
Dim seperti yang didemonstasikan fungsi berikut:

Pernyataan Option Explicit

Kita dapat membuat VBA memberitahu kita jika kita menggunakan variabel yang tidak
dideklarasikan dengan memasukan Option Explicit sebagai baris pertama pada modul.
Dengan penyataan ini berbagai pengunaan dari variabel yang tidak dideklarasikan akan
menghasilkan kesalahan dan bukan pembuatan variabel baru. Option Explicit digunakan
untuk setiap rutinitas dalam modul.

Memaksa definisi dari variabel dapat membantu mencegah kesalahan yang berjalan pelan-
pelan ke fungsi anda. Terdapat sebuah ( sedikit dipaksakan) contoh : fungsi berikut memiliki
kesalahan penulisan (‘Temp” dibaca “Remp”):

32
Tanpa Option Explicit, Excel menampilkan dengan gembira hasil berikut:

Namun, memasukan Option Explicit sebelum kode VBA dan menghitung ulang hasil lembar
kerja menghasilkan “ waktu berjalan eror” berikut:

Setelah kita mengetahui masalahnya, kita dapat klik tombol OK, menghentikan VBA agar
tidak berjalan, dan menyelesaikan masalah dengan mengganti “Remp” dengan
“Temp”( kembali ke bab 36 setelah anda menyelesaikan masalah di VBA, kamu haru

menekan tombol pada toolbar editor VBA).

37.3 Array Dan Range Excel


Array VBA adalah sekelompok variabel dengan jenis yang sama berbagi nama yang sama
dan direferensikan secara individual menggunakan indeks (atau penunjuk). VBA memiliki
versi array sendiri dan kita harus sepakat dengan tipe array pada bagian berikut. Sekarang
kita demonstraskan Varian. Jika kita sebuah fungsi menerima range Excel sebagai
parameter seperti Varian ( yang berarti sama). Dari dalam fungsinya variabel terlihat seperti

33
array. Untuk mendemonstrasikannya, sekarang kita harus menulis fungsi kecil, SumRange,
yang menjumlahkan nilai empat elemen pertama dari parameternya.

Dalam kedua kasus variabel R dapat diperlakukan seperti sebuah array, dengan elemen
pertama menjadi R(1) dan element terakhir R(4). Setiap elemen dapat diperlakukan sebagai
sebuah variabel tunggal, yaitu, R(2) adalah veriabel dan begitu juga R(i-3) ( asumsikan
bahwa i-3 meniliki nilai bulat>=1 dan <= 4). Range diperlakukan seperti array selalu dimulai
dengan index 1.

Apa yang terjadi jika range yang diteruskan ke fungsi kita adalah persegi panjang? Untuk
mendemonstrasikannya, kita diperkenalkan versi modifikasi dari SumRange, dengan
memasukan parameter kedua yang memberitahu fungsi jumlah elemen yang akan
dijumlahkan.

34
Seperti yang dapat kita lihat, VBA memperlakukan array persegi panjang sebagai array linier
yang tersusun dari baris range asli. Parameter kedua dari fungsi SumRange1
mengindikasikan jumlah elemen yang harus dijumlahkan. Sebagai contoh,
Sumrange1(A2:C4,5) menjumlahkan baris pertama ditambah dua sel dalam baris kedua.

Fungsi Payback Period

Penggunaan range sedikit lebih kompleks dapat ditunjukan dengan fungsi Payback Period
sederhana. Ingat jika payback period dalam penganggaran modal mengacu pada periode
waktu yang ditentukan untuk pengembalian dalam sebuah investasi untuk “membayar
kembali” jumlah dari investasi awal. Sebagai contoh, investasi $1,000 yang membayar arus
tunai $500 setiap tahun memiliki payback period 2 tahun. Untuk menyederhanakan masalah ,
fungsi PayBack yang didefinisikan dibawah ini memberikan solusi sepanjang tahun. Jika
jumlah dari arus tunai selama 5 tahun < 0 dan untuk 6 tahun > 0, maka fungsi akan
mengembalikan 6. Kita juga mengasumsikan jika arus tunai pertama adalah investasi awal
(negatif) dan tidak ada arus kas lain yang negatif.

35
Terdapat beberapa masalah dengan fungsi ini seperti yang didefinisikan sekarang. Pertama
fungsi tersebut mengembalikan jawaban salah jika investasi tidak membayar kembali
pengeluaran awalnya, seperti yang didemonstrasikan oleh tangkapan layar berikutnya.

Masalahnya diselesaikan dengan memasukan sebuah cek sebelum mengembalikan payback

36
37.4 Array VBA Sederhana
Terdapat beberapa cara untuk mendeklarasikan array VBA, semua mengggunakan pernyataan
Dim. Cara termudah untuk mendeklarasikan array adalah dengan memberitahu VBA nilai
terbesar indeks array bisa diambil. Kecuali anda menunjukan sebaliknya, array VBA selalu
dimulai dengan indeks 0. Dalam fungsi dibawah ini, MyArray memiliki 6 elemen yang
diberi nomor 0,1,2,...,5.

Jika anda menggunakan ArrayDemo1dalam spreadsheet, beginilah hasilnya:

Perhatikan :

 MyArray memiliki enam elemen (variabel), yang pertama menjadi MyArray(0) dan
yang terakhir MyArray(5). Semua array VBA dimulai dari 0, kecuali anda
menspeksifikasikan sebaliknya
 Sebuah elemen array diperlakukan seperti variabel. MyArray(2) adalah variabel dan
begitu juga MyArray(i-3) (asumsikan jika i-3 memiliki nilai bulat >=0 dan <=5).
 Penggunaan dari penggabungan operator &. Operator ini menggabungkan
(mengkombinasikan) dua operan untuk menciptakan string. Jika sebuah operan untuk
penggabungan operator bukan merupakan string, itu diubah menjadi string, dan
kemudian terjadi penggabungan.

Jika anda mencoba dan mengakses sebuah elemen array yang bukan bagian dari array, VBA
akan mengembalikan sebuah nilai eror, seperti yang didemonstrasikan fungsi berikut:

37
LBound dan UBound

LBound dan UBound adalah dua fungsi VBA internal yang sangat berguna ketika
berurusan dengan array. Fungsi ini mengembalikan nilai minimum dan maksimum yang
dapat dimiliki indeks array. Fungsi berikut mendemonstrasikan penggunaannya pada array
satu dimensi:

38
Catat jika array MyArray memiliki enam elemen, yang pertama MyArray(0) seperti yang
ditunjukan oleh Lbound dan yang terakhir MyArray(5) seperti yang ditunjukan oleh
UBound.

Ketika digunakan pada array mutidimesi, parameter kedua harus dipenuhi menunjukan
dimensi yang batanya menarik bagi kita, seperti fungsi yang didemonstrasikan berikutnya.

Bagaimana untuk Mendapatkan Bound dari Range Excel dalam Fungsi

Sayangnya fungsi internal UBound dan LBound tidak bekerja untuk range diteruskan ke
fungsi. Kita dapat membuat penggunaan fakta jika parameter sebenarnya adalah range dan
menggunakan beberapa properrtinya untuk mendapatkan hasil yang kita perlukan. Fungsi
berikut mendemonstrasikan ini:

39
Apa anda memperhatikan jika fungsi tersebut tidak bekerja dengan karakter huruf kecil? Jika
kita ingin menjadi kasus agnostic, seperti yang biasa dilakukan, kita dapat menggunakan
fungsi VBA UCase untuk mengubah “apa” menjadi huruf besar.

Menyelesaikan Fungsi NPV Excel

Ingat dari bab 1 jika

Bahasa Excel tentang arus kas yang didiskin agak berbeda dari standar nomenklatur
keuangan. Excel menggunakan huruf NPV untuk menunjukan niali sekarang( bukan nilai
besrsih sekarang) dari serangkaian arus kas.

Untuk menghitung nilai bersih keuangan sekarang dari serangkaian arus kas menggunakan
Excel, kita bisa menghitung nilai sekarang dari arus kas masa depan (menggunakan fungsi
NPV Excel) dan kurangi dari nilai sekarang arus kas waktu nol.( ini sering kali merupakan
biaya aset)

40
Mari kita coba dan tulis fungsi nNPV yang mengatasi kekurangan ini. Dalam prosesnya kita
harus belajar beberapa hal tentang range Excel dalam VBA. Untuk membuat fungsinya
sederhana, itu hanya akan bekerja pada baris dari arus kas.

R.Range(SelAtasKiri,SelBawahKanan) mengembalikan range didefinisikan dengan


parameternya. Catat bahwa sel yang dimaksud relatif terhadap R dan bukan lembar kerja.

R.End(Direction) mengembalikan satu dari empat kemungkinan sel terakhir pada R


menurut Direction. Kemungkinan nilai untuk Direction adalah xlDown, xlToLeft,
xlToRight, xlUp.

Asumsikan R merupakan baris dari sel, R.Range(“B1”,R.End(xlToRight)) mengembalikan


range memuat semua sel di R tidak termasuk yang pertama.

Fungsi IRR Baru

Fungsi bergua lainnya dapat kita tulis menggunakan alat yang baru kita peroleh yaitu nIRR.
Ingat kembali bab 1 bahwa tingkat pengembalian internal(IRR) didefinisikan sebagai tingkat
pengembalian majemuk r yang membuat NPV sama dengan nol:

N
C Ft
C F 0 +∑ =0
t=0 (1+r )t

Kita sekarang mengguanakan teknik bernama perbaikan berurutan untuk menghitung IRR:

1. Jika kita memberikan perkiraann awal untuk r kita menggunakannya dan jika
tidak kita menggunakan 50% untuk menghitung NPV.

41
2. Jika NPV yang dihitung adalah nol (atau cukup dekat) kita kembalikan perkiraan
sekarang.
3. Jika NPV yang dihitung adalah negatif kita tetapkan perkiraan kita r =r +r /2
4. Jika NPV yang dihitung adalah positif kita tetapkan perkiraan kita r =r−r /2
5. Sekarang kita harus menghitung lagi NPV
6. Ulangi langkah 2-5

Kita asumsikan jika arus kas pertama negatif dan yang lainnya positif. Ini adalah fungsinya:

Parameter Opsional

Perhatikan bahwa pengunaan dari Opsional guess ¿ 0.5 untuk mendeklarasikan parameter
terakhir sebagai opsional dan berikan nilai default jika pengguna tidak memberikannya.
Setelah parameter dideklarasikan sebagai opsional, semua parameter berikutnya harus
dinyatakan sebagai opsional juga. Sebagai contoh, deklarasi ini baik-baik saja:

Dimana ini akan menghasilkan eror:

42
Seperti yang tertulis, fungsi ini sangat sehingga memerlukan beberapa detik untuk
menghitung hasilnya.

Pernyataan Option Base

Array Excel dimulai pada 1, dimana array VBA dimulai pada 0, kecuali didefinisikan
sebaliknya. Kita dapat menggunakan pilihan modul untuk membuat semua indeks array yang
tidak dideklarasikan secara spesifik dimulai pada 1. Kita menggunakan ArrayDemo3 untuk
mendemonstrasikan. Kita buka modul VBA baru dengan baris pertama “OptionBase1”. Kita
namakan kembali fungsi kita yang dulu untuk merefleksikan perubahan ini.

43
Jika kita memasukan Option Base 1 sebagai baris pertama dari modul untuk mendapatkan
(satu-satunya perubahan ada didalam sel B2 dimana kita mendapatkan 1 dan bukan 0 )

Pernyataan Option Base 1, seperti semua pernyataan pilihan, harus dimasukan sebelum
semua fungsi dan subrutin dalam sebuah modul. Seperti halnya semua pernyataan pilhan,
efeknya terbatas pada semua rutinitas pada modul saat ini.

37.5 Array Multidimensi


Array dapat memiliki lebih dari satu indeks. Dalam array dua dimensi indeks pertama
mengacu pada baris dan kedua ke kolom. Tidak ada batasan formal untuk jumlah indeks yang
dapat anda deklarasikan dalam array. Syntax untuk mendeklarasikan array multidimensi
didemonstrasikan dalam fungsi berikut:

44
Fungsi berikut mendemonstrasikan penggunaan dari Lbound dan UBound dengan array
multidimensi:

45
Perhatikan penggunaan argumen kedua untuk LBound dan UBound: jika digunakan hanya
dengan satu argumen, kedua fungsi mengembalikan nilai indeks terbesar yang dapat dimiliki
array saty dimensi; jika array memiliki lebih dari satu dimensi (seperti dalam kasus ini), kita
dapat menggunakan argumen kedua ke fungsi untuk menentukan dimensi yang kita inginkan.

37.6 Array Dinamis dan Pernyataan Redim


Seringkali akan berguna untuk memiliki ukuran dari sebuah set array (dan reset) ketika
program sedang berjalan. Array dinamis adalah larik yang ukurannya dapat diubah pada saat
dijalankan. Anda mendeklarasikan array dinamis menggunakan pernyataan Dim tetapi tanpa
tanda kurung, seperti berikut ini:

Sebelum Anda dapat menggunakan larik, Anda perlu menyetel ukurannya menggunakan
pernyataan ReDim, seperti berikut ini:

Misalnya, Anda mungkin mengetik

46
Untuk menyetel ukuran array dinamis Harga menjadi 12 elemen, kasus yang lebih umum
akan melibatkan penggunaan variabel untuk ukuran seperti berikut ini:

Ini akan menetapkan ukuran Harga ke nilai I. Pernyataan ReDim juga dapat digunakan untuk
mengubah ukuran array dinamis (atau memang array VBA apa pun). Jika Anda mengubah
ukuran larik, semua data dalam larik akan hilang. Gunakan ReDim Preserve untuk
menyimpan data lama, seperti:

Fungsi berikut menghitung nilai sekarang dari rangkaian arus kas masa depan. Untuk
menyederhanakan fungsinya, suku bunga ditetapkan 5% per periode. Fungsi tersebut
mengilustrasikan penggunaan larik dinamis (variabel CF) yang mendapatkan ukurannya dari
ukuran masukan asli (variabel n):

47
Menjalankan fungsi menghasilkan yang berikut:

Menggunakan Pernyataan ReDim Preserve

Seperti yang dinyatakan sebelumnya, bagian Preserve dari pernyataan ReDim mencegah
hilangnya data dari larik berdimensi ulang. Penggunaan Preserve memberlakukan dua
batasan utama pada penggunaan ReDim.

 Ketidakmampuan untuk mengubah batas bawah indeks.


 Ketidakmampuan untuk mengubah jumlah dimensi.

Kegunaan utama dari ReDim Preserve adalah dalam program interaktif dan oleh karena itu
akan didemonstrasikan pada bab selanjutnya yang berhubungan dengan interaksi pengguna.

37.7 Penugasan Array


Berikut adalah kesalahan yang mudah dilakukan: Dalam contoh berikut kami ingin memberi
tahu VBA bahwa Array2 sama dengan Array1:

48
VBA tidak mengizinkan ini, seperti yang Anda lihat di screenshot berikutnya

Jelas salah satu cara untuk menetapkan array adalah dengan menetapkan setiap elemen secara
terpisah menggunakan For loop.

The: Operator

Perhatikan penggunaan operator “:” untuk menandai akhir pernyataan. Dengan cara ini kita
dapat menempatkan dua atau lebih pernyataan pendek pada baris yang sama. Cara lain, yang
jauh lebih pendek, untuk menetapkan array dibahas di bagian selanjutnya

37.8 Varian yang Mengandung Array


Variabel jenis Varian dapat berisi larik. Prosedurnya agak lebih rumit daripada deklarasi
larik normal, tetapi imbalan dalam hal penugasan terkadang sebanding dengan
ketidaknyamanannya. Fungsi berikut mendemonstrasikan penggunaan Varian yang berisi
array:

49
Fungsi Array () (pada baris kelima) mengembalikan Varian yang berisi array. Penugasan
pada baris yang sama membuat Array1 menjadi sebuah array (tidak diinisialisasi saat ini).
Pernyataan ReDim pada baris 15 membuat Array1 menjadi array elemen n. Imbalan untuk
semua masalah kita diilustrasikan pada baris 18. Berikut adalah fungsi dalam konteks lembar
kerja:

37.9 Array Sebagai Parameter ke Fungsi


Array dapat digunakan sebagai parameter fungsi. Serangkaian fungsi berikut menyajikan
versi DynPV yang ditingkatkan yang dibahas di bagian 37.6. Perhatikan betapa lebih
mudahnya membaca fungsi utama NewDynPV, ketika semua tugas tambahan diturunkan ke
fungsi terpisah.

Fungsi ComputePV (CF ()) digunakan untuk menghitung nilai sekarang dari serangkaian
arus kas yang terkandung dalam array Doubles.

50
Perhatikan fakta bahwa di ComputePV (CF ()), CF () harus dideklarasikan tanpa informasi
indeks. Akibatnya, kami menggunakan LBound dan UBound untuk mendapatkan informasi
indeks.

Fungsi GetN (R As Range) mengembalikan jumlah elemen di R:

Inilah fungsi utamanya:

51
Fungsi IRR dan NPV yang Lebih Baik

Sekarang kita dapat mengunjungi kembali nIRR dan nNPV dari bagian 37.4, dan mencoba
membuatnya lebih cepat menggunakan array internal.

37.10 Menggunakan Types


Semua nilai, variabel, dan fungsi di VBA dikategorikan ke dalam beberapa tipe, baik secara
default maupun eksplisit. Secara default, semua variabel dan fungsi di VBA memiliki tipe
Varian. Varian adalah kategori nilai (jenis) yang mencakup semua kategori lainnya. Dalam

52
kebanyakan kasus, kita bisa mengabaikan tipe, tetapi terkadang akan sangat berguna untuk
memberi variabel tipe selain Varian. Jenis variabel memungkinkan VBA memberi kita
informasi tentang variabel saat kita menggunakannya, dan ini akan menjadi jelas saat kita
mulai menggunakan objek Excel di bab berikut. Untuk saat ini kami hanya akan menjelaskan
mekanisme mendefinisikan variabel yang diketik, dan memberikan demonstrasi singkat
tentang bantuan yang ditawarkan oleh VBA saat menangani variabel yang diketik. Sebuah
tipe diberikan ke variabel ketika itu didefinisikan dengan mengikuti nama variabel dengan
kata As diikuti dengan nama tipe. Misalnya, pernyataan "Dim x As Integer" mendefinisikan
variabel bernama x dari tipe Integer.

Untuk mendemonstrasikan kegunaan variabel yang diketik, ingatlah fungsi RangeBound dari
bagian 37.4. Ini adalah versi baru dengan parameter pertama yang secara eksplisit diberi tipe
Range. Meskipun tidak perlu (tanpa itu), itu membuat hidup lebih mudah. Saat Anda
mengetikkan fungsi dan variabel memiliki tipe, VBA dapat memberi Anda petunjuk saat
Anda mencoba menggunakan properti. Dalam contoh kami, segera setelah Anda mengetik
titik setelah R, VBA memberikan daftar Properti atau Metode yang memungkinkan. Jika
properti yang dipilih (Baris, dalam kasus kami) memiliki propertinya sendiri, maka periode
setelah namanya akan menghasilkan daftar untuk Anda pilih.

53
37.11 Ringkasan
Fungsi VBA menggunakan variabel untuk menyimpan informasi. Variabel dapat menampung
semua jenis informasi. Mendeklarasikan dan menggunakan variabel yang hanya dapat
menampung jenis informasi tertentu (Variabel Jenis) dapat membuat tugas pemrograman
Anda lebih mudah dan program Anda lebih mudah dibaca, dan menggunakan lebih sedikit
memori komputer.

Array adalah sekelompok variabel dengan tipe yang sama, berbagi nama yang sama dan
direferensikan secara individual menggunakan satu atau lebih indeks. Dalam VBA, indeks
array adalah bilangan bulat. Secara default indeks elemen pertama dalam sebuah array adalah
0; ini dapat diubah menjadi 1 untuk semua larik yang digunakan dalam modul dengan
menggunakan pernyataan Basis Opsi 1. Ukuran dan jumlah dimensi dari sebuah array diatur
pada saat array dideklarasikan dan harus diketahui pada saat program ditulis. Array dinamis
adalah larik yang ukurannya (tetapi bukan jumlah dimensinya) dapat diatur pada waktu
proses.

54

Anda mungkin juga menyukai