Function TalipaoTreasurer(ByVal MyNumber As String) As String
Dim Pesos As String, Centavos As String
Dim DecimalPlace As Integer
Dim TempStr As String
DecimalPlace = InStr(MyNumber, ".")
If DecimalPlace > 0 Then
Pesos = Left(MyNumber, DecimalPlace - 1)
Centavos = Mid(MyNumber, DecimalPlace + 1)
Centavos = Left(Centavos & "00", 2)
Else
Pesos = MyNumber
Centavos = ""
End If
If Val(Pesos) > 0 Then
TempStr = ConvertToWords(Pesos) & " Peso"
If Val(Pesos) > 1 Then TempStr = TempStr & "s"
End If
If Val(Centavos) > 0 Then
If TempStr <> "" Then TempStr = TempStr & " and "
TempStr = TempStr & ConvertToWords(Centavos) & " Centavo"
If Val(Centavos) > 1 Then TempStr = TempStr & "s"
End If
If TempStr = "" Then TempStr = "Zero Pesos"
TalipaoTreasurer = TempStr & " Only"
End Function
Private Function ConvertToWords(ByVal MyNumber As String) As String
Dim Units() As String
Units = Split("One Two Three Four Five Six Seven Eight Nine", " ")
Dim Teens() As String
Teens = Split("Eleven Twelve Thirteen Fourteen Fifteen Sixteen Seventeen Eighteen Nineteen", " ")
Dim Tens() As String
Tens = Split("Ten Twenty Thirty Forty Fifty Sixty Seventy Eighty Ninety", " ")
Dim Place() As String
Place = Split("", " ") ' Unused, but available for enhancements
Dim Hundreds As String, TensPart As String, Ones As String
Dim Num As String, x As Integer
Dim Result As String
MyNumber = Right("000000000" & MyNumber, 9)
Dim i As Integer
Dim Segment As String
For i = 1 To 3
Segment = Mid(MyNumber, (i - 1) * 3 + 1, 3)
If Val(Segment) > 0 Then
Result = ConvertHundreds(Segment) & IIf(i = 1, " Million ", IIf(i = 2, " Thousand ", "")) & Result
End If
Next i
ConvertToWords = Application.WorksheetFunction.Trim(Result)
End Function
Private Function ConvertHundreds(ByVal MyNumber As String) As String
Dim Units() As String
Units = Split("One Two Three Four Five Six Seven Eight Nine", " ")
Dim Teens() As String
Teens = Split("Eleven Twelve Thirteen Fourteen Fifteen Sixteen Seventeen Eighteen Nineteen", " ")
Dim Tens() As String
Tens = Split("Ten Twenty Thirty Forty Fifty Sixty Seventy Eighty Ninety", " ")
MyNumber = Right("000" & MyNumber, 3)
Dim h As Integer, t As Integer, o As Integer
h = Val(Left(MyNumber, 1))
t = Val(Mid(MyNumber, 2, 1))
o = Val(Right(MyNumber, 1))
Dim Words As String
If h > 0 Then Words = Units(h - 1) & " Hundred "
If t > 1 Then
Words = Words & Tens(t - 1)
If o > 0 Then Words = Words & "-" & Units(o - 1)
ElseIf t = 1 Then
If o = 0 Then
Words = Words & "Ten"
Else
Words = Words & Teens(o - 1)
End If
ElseIf o > 0 Then
Words = Words & Units(o - 1)
End If
ConvertHundreds = Words
End Function
then =TalipaoTreasurer(A1)