Fungsi ini digunakan untuk merubah angka menjadi ejaan tulisan. Fungsi ini mendukung bilangan bulat maupun pecahan.
Function Terbilang(angka As Variant) As String
Dim satuan() As String
satuan = Split("Nol Satu Dua Tiga Empat Lima Enam Tujuh Delapan Sembilan", " ")
Dim hasil As String
Dim bagian() As String
If Not IsNumeric(angka) Then
Terbilang = "Input bukan angka"
Exit Function
End If
angka = Trim(CStr(angka))
angka = Replace(angka, ",", ".")
bagian = Split(angka, ".")
Dim angkaUtama As Double
angkaUtama = Val(bagian(0))
If angkaUtama = 0 Then
hasil = "Nol"
Else
hasil = Trim(TerbilangUtama(angkaUtama))
End If
' Tangani bagian pecahan (desimal)
If UBound(bagian) > 0 Then
Dim pecahan As String
pecahan = bagian(1)
If Len(pecahan) > 0 Then
hasil = hasil & " Koma"
Dim i As Integer
For i = 1 To Len(pecahan)
hasil = hasil & " " & satuan(Val(Mid(pecahan, i, 1)))
Next i
End If
End If
Terbilang = Application.WorksheetFunction.Proper(hasil)
End Function
Private Function TerbilangUtama(n As Double) As String
Dim satuan() As String
satuan = Split("Nol Satu Dua Tiga Empat Lima Enam Tujuh Delapan Sembilan Sepuluh Sebelas", " ")
Select Case n
Case 0
TerbilangUtama = ""
Case 1 To 11
TerbilangUtama = satuan(n)
Case 12 To 19
TerbilangUtama = satuan(n Mod 10) & " Belas"
Case 20 To 99
TerbilangUtama = satuan(n \ 10) & " Puluh " & TerbilangUtama(n Mod 10)
Case 100 To 199
TerbilangUtama = "Seratus " & TerbilangUtama(n Mod 100)
Case 200 To 999
TerbilangUtama = satuan(n \ 100) & " Ratus " & TerbilangUtama(n Mod 100)
Case 1000 To 1999
TerbilangUtama = "Seribu " & TerbilangUtama(n Mod 1000)
Case 2000 To 999999
TerbilangUtama = TerbilangUtama(n \ 1000) & " Ribu " & TerbilangUtama(n Mod 1000)
Case 1000000 To 999999999
TerbilangUtama = TerbilangUtama(n \ 1000000) & " Juta " & TerbilangUtama(n Mod 1000000)
Case 1000000000 To 2000000000
TerbilangUtama = TerbilangUtama(n \ 1000000000) & " Miliar " & TerbilangUtama(n Mod 1000000000)
Case Else
TerbilangUtama = "Angka terlalu besar"
End Select
TerbilangUtama = Application.WorksheetFunction.Trim(TerbilangUtama)
End Function