Selection.Text = fSpellNumber(Selection.Text)
End Sub
Sub Terbilang()
Selection.Text = fTerbilang(Selection.Text)
End Sub
'Keterangan : Fungsi ini akan merubah angka menjadi huruf atau terbilang
'maksimal angka adalah 999999999999.99
'jika melebihi angka tersebut tidak akan diproses.
'dibuat oleh: zainul_ulum@cbn.net.id
'Rev.0: 15 Oktober 2017
Const dMAX_NUMBER As Double = 999999999999.99
Const sFormat As String = "000000000000.00"
Dim arrHuruf As Variant
j = 1
sTerbilangPenuh = ""
For k = 0 To 3
'angka ratusan
iRatusan = CInt(Mid(sAngka, j, 1))
'angka Puluhan
iPuluhan = CInt(Mid(sAngka, j + 1, 2))
If iPuluhan <= 19 Then
sPuluhan = arrHuruf(iPuluhan)
Else
sPuluhan = arrHuruf(18 + CInt(Left(iPuluhan, 1)))
sPuluhan = sPuluhan & " " & arrHuruf(CInt(Right(iPuluhan, 1)))
End If
sTerbilang = sRatusan & " " & sPuluhan
'membaca sen
Dim iSen As Integer, sSen As String
iSen = CInt(Right(sAngka, 2))
fTerbilang = Trim(sTerbilangPenuh & IIf(iSen = 0, "", " dan " & sSen & " sen"))
End Function
Function fSpellNumber(dAngka As Variant)
'Descrition : This function converts number into text or spells number into text
'maximum number can be converted is 999999999999.99
'Function return "N/A" if the number exceeds of the allowable maximum number
'coded by: zainul_ulum@cbn.net.id
'Rev.0: 15 Oktober 2017
j = 1
sTerbilangPenuh = ""
For k = 0 To 3
'angka ratusan
iRatusan = CInt(Mid(sAngka, j, 1))
'angka Puluhan
iPuluhan = CInt(Mid(sAngka, j + 1, 2))
If iPuluhan <= 19 Then
sPuluhan = arrHuruf(iPuluhan)
Else
sPuluhan = arrHuruf(18 + CInt(Left(iPuluhan, 1)))
sPuluhan = sPuluhan & arrHuruf(CInt(Right(iPuluhan, 1)))
End If
sTerbilang = sRatusan & " " & sPuluhan
'membaca sen
Dim iSen As Integer, sSen As String
iSen = CInt(Right(sAngka, 2))
If iSen <= 19 Then
sSen = arrHuruf(iSen)
Else
sSen = arrHuruf(18 + CInt(Left(iSen, 1)))
sSen = sSen & arrHuruf(CInt(Right(iSen, 1)))
End If
fSpellNumber = Trim(sTerbilangPenuh & IIf(iSen = 0, "", " and " & sSen & "
cent" & IIf(iSen > 1, "s", "")))
End Function