Penulis membahas
cara membuat fungsi yang dibuat sendiri (user define function)
pada Excel menggunakan VBA. Hal ini berguna jika Anda membutuhkan fungsi yang
tidak disediakan oleh Microsoft Excel. Pada bahasan ini, Anda akan
membuat fungsi yang dapat merubah angka menjadi teks pada MS Excel 2007 atau
pada versi di atasnya.
MEMBUAT BERKAS YANG
MEMILIKI MACRO PADA EXCEL 2007/10/13
Karena menggunakan Excel 2007 maka
berkas Excel yang Anda buat haruslah menggunakan ekstensi “.xslm”.
Sekarang mari kita membuat berkas baru Excel, berkas tersebut masih
dalam format “.xslx”.
Buka berkas tersebut, kemudian
simpan sebagai (save as) “fungsi sendiri.xslm”.
Maka Anda telah membuat berkas Excel
2007 yang dapat menggunakan macro (macro enabled). Lalu Anda atur
keamanan dan privasi Excel pada Macro Settings dan Trusted
Location (lokasi terpercaya tempat kita menyimpan berkas-berkas excel ber-macro),
sehingga macro yang Anda buat dapat bekerja. Kedua pengaturan tersebut terdapat
pada Excel Option-Trust Center-Trust_Center Settings.
Pada pengaturan Macro, pilih
“Disabled All Macro Except Digitally Signed Macros” (pilihan ke 3) atau
“Enabled All Macro” (pilihan ke 4), disarankan pilihan ke-4 bagi pemula.
Kemudian Anda atur lokasi folder
yang terpercaya (Trusted Location), di komputer penulis terletak di
“E:\VBA\”. Jangan lupa untuk mencentang pilihan “Subfolder of this location
also trusted” agar subfolder dari folder ini juga dipercaya.
MEMBUAT FUNGSI MERUBAH
ANGKA KE TEKS UNTUK ANGKA TUNGGAL
Untuk membuat fungsi sendiri, maka Anda
perlu membuat prosedur fungsi (function procedure) VBA pada module
di Visual Basic Editor.
Sekarang Anda telah membuat fungsi
bernama “angka_ke_kata” yang menghasilkan kata (tipe data string) dengan
argumen angka (tipe data double). Tipe data string untuk
teks, sedangkan tipe data double untuk bilangan asli dan pecahan.
Function angka_ke_kata(angka As
Double) As String
Dalam fungsi ini Anda menyiapkan array
yang berisi teks yang berhubungan dengan bilangan tersebut. Array
itu Anda beri nama “kata_angka”, berukuran 10, yang beranggotakan teks untuk
bilangan dari nol sampai sembilan.
Dim kata_angka(10) As String
kata_angka(0) = "nol"
kata_angka(1) = "satu"
kata_angka(2) = "dua"
kata_angka(3) = "tiga"
kata_angka(4) = "empat"
kata_angka(5) = "lima"
kata_angka(6) = "enam"
kata_angka(7) = "tujuh"
kata_angka(8) = "delapan"
kata_angka(9) = "sembilan"
Berdasarkan array ini Anda
sudah dapat membuat fungsi yang merubah angka tunggal menjadi teks. Anda cukup
menambahkan kode VBA yang mengembalikan kata yang sesuai dengan argumen “angka”
ketika fungsi “kata_ke_angka” dipanggil.
angka_ke_kata = kata_angka(angka)
Kembali ke “sheet1” pada workbook
Excel mencoba fungsi yang telah dibuat. Isikan angka pada sel “A1” kemudian
pada sel “A2” masukkan fungsi excel “angka_ke_kata”. Fungsi ini terletak pada
pilihan fungsi “user defined”.
MEMBUAT FUNGSI MERUBAH
ANGKA KE TEKS UNTUK ANGKA LEBIH DARI 9
Kita telah membuat fungsi yang
merubah angka ke teks. Tapi fungsi ini bekerja hanya untuk angka-angka tunggal
(dari nol sampai sembilan). Lebih dari itu maka fungsi ini menghasilkan
kesalahan, sebagai contoh Anda tuliskan nilai 10 atau 200 di sel “A1”.
Selanjutnya Anda akan melengkapi
kode-kode di fungsi yang telah Anda buat, sehingga dapat merubah angka lebih
dari 9 menjadi teks. Algoritmanya sebenarnya cukup mudah, fungsi yang Anda buat
akan menghitung panjang angka yang akan diubah. Setelah itu fungsi tersebut
akan merubah setiap anggota angka menggunakan array “kata_angka”
seperti bahaasan sebelumnya, kemudian menggabungkan hasilnya. Sehingga hasil
yang didapat berupa gabungan kata-kata, atau kalimat.
Dalam Visual Basic dikenal
fungsi “Len(pernyataan)” untuk mengetahui panjang teks (kata atau kalimat).
Karena angka yang diubah berupa bilangan bukan teks, maka Anda perlu merubah
angka tersebut menjadi teks dengan fungsi “Cstr(pernyataan)”. Bilangan dalam
format data double yang telah dikonversi menjadi format data string
akan Anda simpan dalam variabel “angka_dlm_teks”. Sedangkan panjangnya Anda
taruh dalam variabel “panjang_angka”.
angka_dlm_teks = CStr(angka)
panjang_angka = Len(angka_dlm_teks)
Sekarang mari kita uji hasilnya
dengan angka 5 , 317, 105076.
Berdasarkan informasi panjang angka
tersebut, Anda dapat membuat loop untuk merubah setiap anggota angka
menjadi teks dan menggabungkannya kembali. Dalam loop tersebut setiap
karakter dalam variabel “angka_dlm_teks” akan Anda ambil meggunakan fungsi
“Mid(string,awal,jumlah)”. Kemudian memasukan karakter itu ke dalam variabel
“index_angka”. Variabel ini akan digunakan untuk mengambil data dari anggota array
“kata_angka” yang berasosiasi dengan karakter tersebut. Untuk menggabungkan
hasilnya dari setiap kali proses tersebut diulang, maka digunakan operator
penggabungan “&”.
For i = 1 To panjang_angka
index_angka = Mid(angka_dlm_teks,
i, 1)
angka_ke_kata =
angka_ke_kata & " " & kata_angka(index_angka)
Next
Sekarang mari ktia tes fungsi ini
dengan angka 1, 720 dan 30827.