Sabtu, 01 Februari 2014

Cara Membuat Fungsi "Terbilang" Pada Ms. Word

Berawal dari pembuatan laporan yang mengharuskan menulis nilai dalam huruf, memaksa saya berpikir untuk mencari cara agar mempermudah pekerjaan saya ini. Mencoba googling dan akhirnya ketemu juga, walaupun masih harus menemui trouble and syntax error sebelumnya. Dengan sedikit pengetahuan saya tentang java script akhirnya teratasi juga.

"Terbilang" ini sepertinya cukup sepele, tetapi jika sering bergelut dengan nilai angka-angka yang besar Rp. 16.234.597.125,- rasanya cukup sulit juga, tetapi dengan ini semua bisa lebih mudah. Oleh karena itu, saya pikir ini cukup penting kita miliki.

Bagaimana cara membuat fungsi terbilang pada Ms. Word? berikut langkah-langkahnya:

1. Pilih tab “View > Macros > View Macros”
Maka akan muncul popup Macros seperti gambar di atas;

2. Lalu ketik "Macros Name" (apa saja, jangan menggunakan 'spasi', contoh : terbilang) > lalu tekan "Create";
3. Maka muncul “Microsoft visual basic for applications”
4. "Delete" semua kode yang ada. (Jika source code tidak muncul otomatis, maka keluarkan denga cara : Pada folder “Modules” klik kanan pada “NewMacros > View Code” )
5.  Copy - Paste code script (berwarna hijau) di bawah ini; atau Dowbload disini.
Option Explicit

Sub ctvTerbilang()
   Dim Number As Variant, Kata As String, sText As String
   Const Ttel As String = "Terbilang Max 18 digit saja loh!"
   
   sText = Replace(Selection, Chr(10), "")
   Selection = sText
   If IsNumeric(Selection) Then
      Number = CDec(Selection)
      With Selection
         .Copy
         .EndKey Unit:=wdLine
         .TypeParagraph
      End With

      Select Case Number
         Case 0
            Kata = "Zero"
         Case 0.001 To 1E+18
            Kata = TERBILANG(Number)
         Case Else
            MsgBox "Bilangan Terlalu besar!", 48, Ttel
      End Select
   Else
      MsgBox "Tidak ada bilangan di dalam selection!!", 48, Ttel
   End If
   Selection = Kata
End Sub


Private Function TERBILANG(Nnum As Variant) As String
  '== siti Vi  ,=====
  '== STDEV(i) ,===
  '--- revisi awal jan 2012 ------------------
   Dim nUtuh As Variant, nDesi As Variant
   Dim sUtuh As String, sDesi As String
   Nnum = CDec(Round(Nnum, 2))
   nUtuh = CDec(Int(Nnum))
   nDesi = CDec(Round((Nnum - nUtuh) * 100, 0))
   sUtuh = TransX(nUtuh)
   If nDesi = 0 Then
      sDesi = ""
   Else
      sDesi = "dan " & TransX(nDesi) & " per seratus"
   End If
   TERBILANG = Trim(sUtuh & " " & sDesi)
End Function


Private Function TransX(Bilangan As Variant) As String
  '== siti Vi  ,=====
  '== STDEV(i) ,===
  '--------------------------------------------
   Dim TxtBil As String, Teks As String, i As Integer, Pos As Integer
   Dim Angka(19) As String, Puluh(9) As String, Letak(4) As String
   Dim DwiDigit As Byte, TriD1 As Byte, TriD2 As Byte, TriD3 As Byte
   Angka(1) = "satu":         Angka(2) = "dua":           Angka(3) = "tiga"
   Angka(4) = "empat":        Angka(5) = "lima":          Angka(6) = "enam"
   Angka(7) = "tujuh":        Angka(8) = "delapan":       Angka(9) = "sembilan":
   Angka(10) = "sepuluh":     Angka(11) = "sebelas":      Angka(12) = "dua belas"
   Angka(13) = "tiga belas":  Angka(14) = "empat belas":  Angka(15) = "lima belas"
   Angka(16) = "enam belas":  Angka(17) = "tujuh belas":  Angka(18) = "delapan belas"
   Angka(19) = "sembilan belas"
   Puluh(0) = "":             Puluh(2) = "dua puluh":     Puluh(3) = "tiga puluh"
   Puluh(4) = "empat puluh":  Puluh(5) = "lima puluh":    Puluh(6) = "enam puluh"
   Puluh(7) = "tujuh puluh":  Puluh(8) = "delapan puluh": Puluh(9) = "sembilan puluh"
   Letak(0) = "ribu":    Letak(1) = "juta"
   Letak(2) = "milyar":  Letak(3) = "triliun":   Letak(4) = "kuadriliun"
   Bilangan = CDec(Bilangan)
   TxtBil = Trim(Str(Round(Abs(Bilangan), 0)))
   If CDec(TxtBil) = 0 Then
      Teks = "nol "
   Else
      i = 0
      Do
         TxtBil = "000" + TxtBil
         DwiDigit = CByte(Right(TxtBil, 2))
         If (DwiDigit > 0) And (DwiDigit < 20) Then
            Teks = IIf((Bilangan < 2000 And i = 1), "se", Angka(DwiDigit) + " ") + Teks
         Else
            TriD3 = CByte(Right(TxtBil, 1))
            If (TriD3 > 0) Then Teks = Angka(TriD3) + " " + Teks
            TriD2 = CByte(Left(Right(TxtBil, 2), 1))
            If (TriD2 > 0) Then Teks = Puluh(TriD2) + " " + Teks
         End If
         TriD1 = CByte(Left(Right(TxtBil, 3), 1))
         If (TriD1 = 1) Then Teks = "seratus " + Teks
         If (TriD1 > 1) Then Teks = Angka(TriD1) + " ratus " + Teks
         TxtBil = Left(TxtBil, Len(TxtBil) - 3)
         If (CDec(TxtBil) > 0) Then
            Teks = IIf(CInt(Right(TxtBil, 3)) = 0, "", Letak(i) + " ") + Teks
            i = i + 1
         End If
      Loop While ((CDec(TxtBil) > 0) And (i < 6))
   End If
   TransX = Trim(Teks)
End Function
'------------------------

6. Setelah paste maka akan terlihat tampilan seperti ini

7. Lalu pilih “File > Save normal” dan “File > Close and Return to Microsoft Word”
8. Pilih save as dengan type “Word Macro-Enabled Document”
9. "Restart Microsoft Word" dan coba deh dengan mengetikan sebuah angka, contoh : 1250 . Block angka.
10. Jalankan "fungsi terbilang Macros", dengan cara: pilih tab “View > Macros > View Macros”. Nama macro yan dibuat sebelumnya akan otomatis berubah menyesuaikan script yang ada. Lalu coba anda tulis 123426353 dan seleksi angka tersebut lalu pilih tab “View > Macros > View Macros > pilih nama macronya lalu klik “Run” (atau dengan tombol Alt+F8 lalu Alt+R);
Maka Hasilnya akan menjadi:
1250
seribu dua ratus lima puluh

Semoga bermanfaat!!

Bagikan

Jangan lewatkan

Cara Membuat Fungsi "Terbilang" Pada Ms. Word
4/ 5
Oleh

Subscribe via email

Suka dengan artikel di atas? Tambahkan email Anda untuk berlangganan.

8 comments

Tulis comments

Silahkan Isi Komentar Anda!
Sebisa mungkin saya akan menanggapi dan membalas komentar, berkunjung ke blog atau situs anda.
NO SPAM, NO SARA! Thanks