Thursday, May 20, 2010

Membuat Fungsi Terbilang rupiah dan desimal

Posting kali ini, saya akan membuat fungsi konversi angka desimal maupun rupiah ke dalam bentuk huruf.
Langkah - langkahnya sebagai berikut :

  1. Buka MS. Excel
  2. Pilih File --> New
  3. Untuk menambahkan fungsi sendiri ke dalam workbooks baru pada sheet mana saja pilihlah Tools > Macro > Visual Basic Editor atau dengan shortcut Alt+F11
  4. Setelah itu akan muncul window baru bertitle Microsoft Visual Basic
  5. pilih Insert > Module
  6. Pada Module 1 yang baru dibuat, letakkan kursor pada bagian Code. Apabila belum muncul atau beralih ke bagian tersebut pilih View > Code (F7)
  7. copy paste skrip berikut ini ke dalam module1, sbb:
  8. 'Fungsi Terbilang dengan VBA untuk MS Office
    'Fungsi penterjemahan masing-masing angka
    Private Function KeKata(Nomor)
    TrjKata = Array("", "satu", "dua", "tiga", "empat", "lima", "enam", "tujuh", "delapan", "sembilan")
    KeKata = TrjKata(Nomor)
    End Function

    'Mulai penulisan Fungsi Terbilang
    Public Function terbilang_angka(Nilai_Angka, Optional Style = 4, Optional Satuan = "")
    angka = Fix(Abs(Nilai_Angka))
    'Desimal dibelakang koma
    des1 = Mid(Abs(Nilai_Angka), Len(angka) + 2, 1)
    des2 = Mid(Abs(Nilai_Angka), Len(angka) + 3, 1)

    If des2 = "" Then
    If des1 = "" Or des1 = "0" Then
    Koma = ""
    Else
    Koma = " koma " & KeKata(des1)
    End If
    ElseIf des2 = "0" Then
    If des1 = "0" Then
    Koma = ""
    ElseIf des1 = "1" Then
    Koma = " koma sepuluh"
    Else
    Koma = " koma " & KeKata(des1) & " puluh"
    End If
    Else
    If des1 = "0" Then
    Koma = " koma nol " & KeKata(des2)
    ElseIf des1 = "1" Then
    If des2 = "1" Then
    Koma = " koma sebelas"
    Else
    Koma = " koma " & KeKata(des2) & " belas"
    End If
    Else
    Koma = " koma " & KeKata(des1) & " puluh " & KeKata(des2)
    End If
    End If
    'Misahin Angka
    No1 = Left(Right(angka, 1), 1)
    No2 = Left(Right(angka, 2), 1)
    No3 = Left(Right(angka, 3), 1)
    No4 = Left(Right(angka, 4), 1)
    No5 = Left(Right(angka, 5), 1)
    No6 = Left(Right(angka, 6), 1)
    No7 = Left(Right(angka, 7), 1)
    No8 = Left(Right(angka, 8), 1)
    No9 = Left(Right(angka, 9), 1)
    No10 = Left(Right(angka, 10), 1)
    No11 = Left(Right(angka, 11), 1)
    No12 = Left(Right(angka, 12), 1)
    No13 = Left(Right(angka, 13), 1)
    No14 = Left(Right(angka, 14), 1)
    No15 = Left(Right(angka, 15), 1)
    'Satuan
    If Len(angka) >= 1 Then
    If Len(angka) = 1 And No1 = 1 Then
    Nomor1 = "satu"
    ElseIf Len(angka) = 1 And No1 = 0 Then
    Nomor1 = "Nol"
    ElseIf No2 = "1" Then
    If No1 = "1" Then
    Nomor1 = "sebelas"
    ElseIf No1 = "0" Then
    Nomor1 = "sepuluh"
    Else
    Nomor1 = KeKata(No1) & " belas"
    End If

    Else
    Nomor1 = KeKata(No1)
    End If
    Else
    Nomor1 = ""
    End If

    'Puluhan
    If Len(angka) >= 2 Then
    If No2 = 1 Or No2 = "0" Then
    Nomor2 = ""
    Else
    Nomor2 = KeKata(No2) & " puluh "
    End If
    Else
    Nomor2 = ""
    End If
    'Ratusan
    If Len(angka) >= 3 Then
    If No3 = "1" Then
    Nomor3 = "seratus "
    ElseIf No3 = "0" Then
    Nomor3 = ""
    Else
    Nomor3 = KeKata(No3) & " ratus "
    End If
    Else
    Nomor3 = ""
    End If
    'Ribuan
    If Len(angka) >= 4 Then
    If No6 = "0" And No5 = "0" And No4 = "0" Then
    Nomor4 = ""
    ElseIf (No4 = "1" And Len(angka) = 4) Or (No6 = "0" And No5 = "0" And No4 = "1") Then
    Nomor4 = "seribu "
    ElseIf No5 = "1" Then
    If No4 = "1" Then
    Nomor4 = "sebelas ribu "
    ElseIf No4 = "0" Then
    Nomor4 = "sepuluh ribu "
    Else
    Nomor4 = KeKata(No4) & " belas ribu "
    End If

    Else
    Nomor4 = KeKata(No4) & " ribu "
    End If
    Else
    Nomor4 = ""
    End If
    'Puluhan ribu
    If Len(angka) >= 5 Then
    If No5 = "1" Or No5 = "0" Then
    Nomor5 = ""
    Else
    Nomor5 = KeKata(No5) & " puluh "
    End If
    Else
    Nomor5 = ""
    End If
    'Ratusan Ribu
    If Len(angka) >= 6 Then
    If No6 = "1" Then
    Nomor6 = "seratus "
    ElseIf No6 = "0" Then
    Nomor6 = ""
    Else
    Nomor6 = KeKata(No6) & " ratus "
    End If
    Else
    Nomor6 = ""
    End If
    'Jutaan
    If Len(angka) >= 7 Then
    If No9 = "0" And No8 = "0" And No7 = "0" Then
    Nomor7 = ""
    ElseIf No7 = "1" And Len(angka) = 7 Then
    Nomor7 = "satu juta "
    ElseIf No8 = "1" Then
    If No7 = "1" Then
    Nomor7 = "sebelas juta "
    ElseIf No7 = "0" Then
    Nomor7 = "sepuluh juta "
    Else
    Nomor7 = KeKata(No7) & " belas juta "
    End If

    Else
    Nomor7 = KeKata(No7) & " juta "
    End If
    Else
    Nomor7 = ""
    End If
    'Puluhan juta
    If Len(angka) >= 8 Then
    If No8 = "1" Or No8 = "0" Then
    Nomor8 = ""
    Else
    Nomor8 = KeKata(No8) & " puluh "
    End If
    Else
    Nomor8 = ""
    End If
    'Ratusan juta
    If Len(angka) >= 9 Then
    If No9 = "1" Then
    Nomor9 = "seratus "
    ElseIf No9 = "0" Then
    Nomor9 = ""
    Else
    Nomor9 = KeKata(No9) & " ratus "
    End If
    Else
    Nomor9 = ""
    End If
    'Milyar
    If Len(angka) >= 10 Then
    If No12 = "0" And No11 = "0" And No10 = "0" Then
    Nomor10 = ""
    ElseIf No10 = "1" And Len(angka) = 10 Then
    Nomor10 = "satu milyar "
    ElseIf No11 = "1" Then
    If No10 = "1" Then
    Nomor10 = "sebelas milyar "
    ElseIf No10 = "0" Then
    Nomor10 = "sepuluh milyar "
    Else
    Nomor10 = KeKata(No10) & " belas milyar "
    End If

    Else
    Nomor10 = KeKata(No10) & " milyar "
    End If
    Else
    Nomor10 = ""
    End If
    'Puluhan Milyar
    If Len(angka) >= 11 Then
    If No11 = "1" Or No11 = "0" Then
    Nomor11 = ""
    Else
    Nomor11 = KeKata(No11) & " puluh "
    End If
    Else
    Nomor11 = ""
    End If
    'Ratusan Milyar
    If Len(angka) >= 12 Then
    If No12 = "1" Then
    Nomor12 = "seratus "
    ElseIf No12 = "0" Then
    Nomor12 = ""
    Else
    Nomor12 = KeKata(No12) & " ratus "
    End If
    Else
    Nomor12 = ""
    End If
    'Triliun
    If Len(angka) >= 13 Then
    If No15 = "0" And No14 = "0" And No13 = "0" Then
    Nomor13 = ""
    ElseIf No13 = "1" And Len(angka) = 13 Then
    Nomor13 = "satu triliun "
    ElseIf No14 = "1" Then
    If No13 = "1" Then
    Nomor13 = "sebelas triliun "
    ElseIf No13 = "0" Then
    Nomor13 = "sepuluh triliun "
    Else
    Nomor13 = KeKata(No13) & " belas triliun "
    End If

    Else
    Nomor13 = KeKata(No13) & " triliun "
    End If
    Else
    Nomor13 = ""
    End If
    'Puluhan triliun
    If Len(angka) >= 14 Then
    If No14 = "1" Or No14 = "0" Then
    Nomor14 = ""
    Else
    Nomor14 = KeKata(No14) & " puluh "
    End If
    Else
    Nomor14 = ""
    End If
    'Ratusan triliun
    If Len(angka) >= 15 Then
    If No15 = "1" Then
    Nomor15 = "seratus "
    ElseIf No15 = "0" Then
    Nomor15 = ""
    Else
    Nomor15 = KeKata(No15) & " ratus "
    End If
    Else
    Nomor15 = ""
    End If

    If Len(angka) > 15 Then
    bilang = "Digit Angka Terlalu Banyak"
    Else
    If IsNull(Nilai_Angka) Then
    bilang = ""
    ElseIf Nilai_Angka < 0 Then
    bilang = "minus " & Trim(Nomor15 & Nomor14 & Nomor13 & Nomor12 & Nomor11 & Nomor10 & Nomor9 & Nomor8 & Nomor7 _
    & Nomor6 & Nomor5 & Nomor4 & Nomor3 & Nomor2 & Nomor1 & Koma & " " & Satuan)
    Else
    bilang = Trim(Nomor15 & Nomor14 & Nomor13 & Nomor12 & Nomor11 & Nomor10 & Nomor9 & Nomor8 & Nomor7 _
    & Nomor6 & Nomor5 & Nomor4 & Nomor3 & Nomor2 & Nomor1 & Koma & " " & Satuan)
    End If
    End If
    If Style = 4 Then
    terbilang_angka = StrConv(Left(bilang, 1), 1) & StrConv(Mid(bilang, 2, 1000), 2)
    Else
    terbilang_angka = StrConv(bilang, Style)
    End If
    terbilang_angka = Replace(terbilang_angka, " ", " ", 1, 1000, vbTextCompare)

    End Function
  9. Sekarang Anda dapat mencoba fungsi tersebut dalam sheet mana saja dalam workbook tersebut. Misalnya Anda ketikan pada cell A1 angka berapa saja. Pilih cell yang akan menampung terjemahan kata-katanya, misalnya di A2.
    Pilih Insert > Function…, maka akan muncul dialog box daftar fungsi di MS excel
    Dari daftar dalam Function category, pilihlah User Defined, sehingga dalam daftar di Function name muncul nama fungsi terbilang, pilih fungsi tersebut kemudian klik OK
    Isilah dialog box nya dengan ketentuan sebagai berikut:

    Nilai_Angka
    Isilah dengan angka yang akan diterjemahkan, atau isi dengan nama cell yang berisi angka yang akan diterjemahkan, misalnya A1.
    Style
    Isi dengan kode 1 sampai dengan 4 untuk menentukan cara penulisannya.
    1: Teks terbilang ditulis dengan huruf besar (kapital) semua (uppercase);
    2: Teks terbilang ditulis dengan huruf kecil semua (lowercase);
    3: Teks terbilang ditulis dengan huruf besar pada awal kata saja (title case);
    4: Teks terbilang ditulis dengan huruf besar pada huruf pertama saja (sentence case).
    Isian style sifatnya optional, apabila tidak diisi maka defaultnya 4 (sentence case).
    Satuan
    Isi dengan satuan untuk teks terbilang, misalnya rupiah, unit atau buah. Isian satuan sifatnya optional, apabila dikosongkan maka teks terbilang ditulis tanpa satuan tertentu.
    Anda juga dapat langsung menggunakan fungsi terbilang secara langsung pada cell dengan formula:
    =terbilang(Nilai_Angka;Style;”Satuan”)
    Penjelasan lihat di atas. Perlu diperhatikan bahwa penulisan satuan ditulis dengan cara diapit tanda petik(”).
    Sekarang Anda tutup workbook tersebut. Coba buka kembali workbook tersebut, maka akan muncul peringatan seperti Gambar 5. Untuk dapat menggunakan fungsi terbilang diatas Anda harus memilih Enable Macros setiap kali Anda menggunakan
    Pada tahapan ini Anda dapat menggunakan fungsi terbilang pada cell dan worksheet mana saja tetapi terbatas pada workbook tersebut. Setiap kali Anda membuat file MS Excel dan memerlukan fungsi terbilang Anda harus mengulangi langkah-langkah di atas atau Anda menyimpan dengan nama atau lokasi yang berbeda dengan cara File > Save As…
    cara lain
    Ada cara lain agar setiap kali membuat file/workbook baru, Anda langsung dapat menggunakan fungsi terbilang. Langkah-langkahnya:

    Buka file yang Anda simpan di atas yang berekstensi xls. Kemudian pilih File > Save As.. Kemudian pada isian File name isi dengan nama file, misalnya terbilang. Pada isian Save as type pilih Microsoft Excel Add-In (*.xla).
    Secara default folder yang terbuka untuk menyimpan file type Add-In ini berada pada C:WINDOWS\Aplication Data\Microsoft\AddIns, sebaiknya Anda menyimpannya pada folder ini, meskipun Anda dapat menentukan lokasi lain. Nantinya file yang disimpan berekstensi xla.
    Setelah Anda menyimpannya, tutup MS Excel. Buka kembali dengan workbook baru.
    Pada workbook baru tersebut pilih Tools > Add-Ins… Muncul dialog box
    Klik Browse… maka secara default Anda dihadapkan pada isi folder AddIns seperti disebut pada point 1, kemudian pilih file Add-In terbilang tersebut. Maka fungsi terbilang akan masuk list pada Add-Ins available seperti pada Gambar 7. Pastikan Anda beri tanda check. Kemudian klik OK.
    Pada workbook baru ini, Anda sudah dapat menggunakan fungsi terbilang, begitu pula saat Anda nanti membuat file/workbook baru.
    Anda dapat menonaktifkan Add-In ini dengan menghilangkan tanda check seperti tersbut di atas.

1 comment: