Result: Dua Belas Ribu Tiga Ratus Empat Puluh Lima Rupiah
Option Explicit Function Terbilang(InputAngka As Double) As String Dim I%, strMaxDigit$, arrLevel, arrAngka, TempRp$ arrAngka = Array("", "Se", "Dua", "Tiga", "Empat", "Lima", "Enam", "Tujuh", "Delapan", _
"Sembilan", "Sepuluh") arrLevel = Array("Triliun ", "Miliar ", "Juta ", "Ribu ", "") strMaxDigit = Right("000000000000000" & Abs(Round(InputAngka, 0)), 15) For I = 0 To 4 TempRp = "" If Mid(strMaxDigit, 1 + (3 * I), 1) > 0 Then _
TempRp = arrAngka(Mid(strMaxDigit, 1 + (3 * I), 1)) & " Ratus " If Mid(strMaxDigit, 2 + (3 * I), 2) < 11 Then TempRp = TempRp & arrAngka(Mid(strMaxDigit, 2 + (3 * I), 2)) ElseIf Mid(strMaxDigit, 2 + (3 * I), 2) < 20 Then TempRp = TempRp & arrAngka(Mid(strMaxDigit, 3 + (3 * I), 1)) & " Belas" Else TempRp = TempRp & arrAngka(Mid(strMaxDigit, 2 + (3 * I), 1)) & " Puluh " & _ arrAngka(Mid(strMaxDigit, 3 + (3 * I), 1)) End If If Right(TempRp, 1) <> "" Then TempRp = TempRp & " " If TempRp <> "" Then TempRp = TempRp & arrLevel(I) Terbilang = Terbilang & TempRp Next I If Terbilang <> "" Then Terbilang = Replace(Replace(Replace(Replace(Terbilang, _ "Se Ribu", "Seribu"), _ "Se Ratus", "Seratus"), _ "Se Belas", "Sebelas"), _ "Se ", "Satu ") End If If Abs(Round(InputAngka, 0)) = 0 Then Terbilang = "Nol " If InputAngka < 0 Then Terbilang = "Minus " & Terbilang End Function