You are on page 1of 5

Function ConvertNumberToWords2(Number As Double, MainCurrency As String,

SubCurrency As String)
Dim Array1(0 To 9) As String
Dim Array2(0 To 9) As String
Dim Array3(0 To 9) As String
Dim MyNumber As String
Dim GetNumber As String
Dim ReadNumber As String
Dim My100 As String
Dim My10 As String
Dim My1 As String
Dim My11 As String
Dim My12 As String
Dim GetText As String
Dim Billion As String
Dim Million As String
Dim Thousand As String
Dim Hundred As String
Dim Fraction As String
Dim MyAnd As String
Dim I As Integer
Dim ReMark As String
If Number > 999999999999.99 Then Exit Function
If Number < 0 Then
Number = Number * -1
ReMark = "???? "
End If
If Number = 0 Then
ConvertNumberToWords2 = "???"
Exit Function
End If
MyAnd = " ?"
Array1(0) = ""
Array1(1) = "????"
Array1(2) = "??????"
Array1(3) = "????????"
Array1(4) = "????????"
Array1(5) = "???????"
Array1(6) = "??????"
Array1(7) = "???????"
Array1(8) = "????????"
Array1(9) = "???????"
Array2(0) = ""
Array2(1) = " ???"
Array2(2) = "?????"
Array2(3) = "??????"
Array2(4) = "??????"
Array2(5) = "?????"
Array2(6) = "????"
Array2(7) = "?????"
Array2(8) = "??????"
Array2(9) = "?????"
Array3(0) = ""
Array3(1) = "????"
Array3(2) = "?????"
Array3(3) = "?????"
Array3(4) = "?????"
Array3(5) = "????"
Array3(6) = "???"
Array3(7) = "????"
Array3(8) = "??????"
Array3(9) = "????"
GetNumber = Format(Number, "000000000000.00")
I = 0
Do While I < 15
If I < 12 Then
MyNumber = Mid$(GetNumber, I + 1, 3)
Else
MyNumber = "0" + Mid$(GetNumber, I + 2, 2)
End If
If (Mid$(MyNumber, 1, 3)) > 0 Then
ReadNumber = Mid$(MyNumber, 1, 1)
My100 = Array1(ReadNumber)
ReadNumber = Mid$(MyNumber, 3, 1)
My1 = Array3(ReadNumber)
ReadNumber = Mid$(MyNumber, 2, 1)
My10 = Array2(ReadNumber)
If Mid$(MyNumber, 2, 2) = 11 Then My11 = "???? ???"
If Mid$(MyNumber, 2, 2) = 12 Then My12 = "???? ???"
If Mid$(MyNumber, 2, 2) = 10 Then My10 = "????"
If ((Mid$(MyNumber, 1, 1)) > 0) And ((Mid$(MyNumber, 2, 2)) > 0) Then My100 = My100
+ MyAnd
If ((Mid$(MyNumber, 3, 1)) > 0) And ((Mid$(MyNumber, 2, 1)) > 1) Then My1 = My1 +
MyAnd
GetText = My100 + My1 + My10
If ((Mid$(MyNumber, 3, 1)) = 1) And ((Mid$(MyNumber, 2, 1)) = 1) Then
GetText = My100 + My11
If ((Mid$(MyNumber, 1, 1)) = 0) Then GetText = My11
End If
If ((Mid$(MyNumber, 3, 1)) = 2) And ((Mid$(MyNumber, 2, 1)) = 1) Then
GetText = My100 + My12
If ((Mid$(MyNumber, 1, 1)) = 0) Then GetText = My12
End If
If (I = 0) And (GetText <> "") Then
If ((Mid$(MyNumber, 1, 3)) > 10) Then
Billion = GetText + " ?????"
Else
Billion = GetText + " ???????"
If ((Mid$(MyNumber, 1, 3)) = 2) Then Billion = " ?????"
If ((Mid$(MyNumber, 1, 3)) = 2) Then Billion = " ???????"
End If
End If
If (I = 3) And (GetText <> "") Then
If ((Mid$(MyNumber, 1, 3)) > 10) Then
Million = GetText + " ?????"
Else
Million = GetText + " ??????"
If ((Mid$(MyNumber, 1, 3)) = 1) Then Million = " ?????"
If ((Mid$(MyNumber, 1, 3)) = 2) Then Million = " ???????"
End If
End If
If (I = 6) And (GetText <> "") Then
If ((Mid$(MyNumber, 1, 3)) > 10) Then
Thousand = GetText + " ???"
Else
Thousand = GetText + " ????"
If ((Mid$(MyNumber, 3, 1)) = 1) Then Thousand = " ???"
If ((Mid$(MyNumber, 3, 1)) = 2) Then Thousand = " ?????"
End If
End If
If (I = 9) And (GetText <> "") Then Hundred = GetText
If (I = 12) And (GetText <> "") Then Fraction = GetText
End If
I = I + 3
Loop
If (Billion <> "") Then
If (Million <> "") Or (Thousand <> "") Or (Hundred <> "") Then Billion = Billion +
MyAnd
End If
If (Million <> "") Then
If (Thousand <> "") Or (Hundred <> "") Then Million = Million + MyAnd
End If
If (Thousand <> "") Then
If (Hundred <> "") Then Thousand = Thousand + MyAnd
End If
If Fraction <> "" Then
If (Billion <> "") Or (Million <> "") Or (Thousand <> "") Or (Hundred <> "") Then
ConvertNumberToWords2 = ReMark + Billion + Million + Thousand + Hundred + " " +
MainCurrency + MyAnd + Fraction + " " + SubCurrency
Else
ConvertNumberToWords2 = ReMark + Fraction + " " + SubCurrency
End If
Else
ConvertNumberToWords2 = ReMark + Billion + Million + Thousand + Hundred + " " +
MainCurrency
End If
End Function
Function ConvertNumberToWords3(Number As Double, MainCurrency As String,
SubCurrency As String)
Dim MyArry1(0 To 9) As String
Dim MyArry2(0 To 9) As String
Dim MyArry3(0 To 9) As String
Dim Myno As String
Dim GetNo As String
Dim RdNo As String
Dim My100 As String
Dim My10 As String
Dim My1 As String
Dim My11 As String
Dim My12 As String
Dim GetTxt As String
Dim Mybillion As String
Dim MyMillion As String
Dim MyThou As String
Dim MyHun As String
Dim MyFraction As String
Dim MyAnd As String
Dim I As Integer
Dim ReMark As String
If Number > 999999999999.999 Then Exit Function
If Number < 0 Then
Number = Number * -1
ReMark = "???? "
End If
If Number = 0 Then
ConvertNumberToWords3 = "???"
Exit Function
End If
MyAnd = " ?"
MyArry1(0) = ""
MyArry1(1) = "????"
MyArry1(2) = "??????"
MyArry1(3) = "????????"
MyArry1(4) = "????????"
MyArry1(5) = "???????"
MyArry1(6) = "??????"
MyArry1(7) = "???????"
MyArry1(8) = "????????"
MyArry1(9) = "???????"
MyArry2(0) = ""
MyArry2(1) = " ???"
MyArry2(2) = "?????"
MyArry2(3) = "??????"
MyArry2(4) = "??????"
MyArry2(5) = "?????"
MyArry2(6) = "????"
MyArry2(7) = "?????"
MyArry2(8) = "??????"
MyArry2(9) = "?????"
MyArry3(0) = ""
MyArry3(1) = "????"
MyArry3(2) = "?????"
MyArry3(3) = "?????"
MyArry3(4) = "?????"
MyArry3(5) = "????"
MyArry3(6) = "???"
MyArry3(7) = "????"
MyArry3(8) = "??????"
MyArry3(9) = "????"
GetNo = Round(Number, 3)
GetNo = Format(Number, "000000000000.000")
I = 0
Do While I < 16
If I < 12 Then
Myno = Mid$(GetNo, I + 1, 3)
Else
Myno = Mid$(GetNo, I + 2, 3) + "0"
End If
If (Mid$(Myno, 1, 3)) > 0 Then
RdNo = Mid$(Myno, 1, 1)
My100 = MyArry1(RdNo)
RdNo = Mid$(Myno, 3, 1)
My1 = MyArry3(RdNo)
RdNo = Mid$(Myno, 2, 1)
My10 = MyArry2(RdNo)
If Mid$(Myno, 2, 2) = 11 Then My11 = "???? ???"
If Mid$(Myno, 2, 2) = 12 Then My12 = "???? ???"
If Mid$(Myno, 2, 2) = 10 Then My10 = "????"
If ((Mid$(Myno, 1, 1)) > 0) And ((Mid$(Myno, 2, 2)) > 0) Then My100 = My100 + MyAnd
If ((Mid$(Myno, 3, 1)) > 0) And ((Mid$(Myno, 2, 1)) > 1) Then My1 = My1 + MyAnd
GetTxt = My100 + My1 + My10
If ((Mid$(Myno, 3, 1)) = 1) And ((Mid$(Myno, 2, 1)) = 1) Then
GetTxt = My100 + My11
If ((Mid$(Myno, 1, 1)) = 0) Then GetTxt = My11
End If
If ((Mid$(Myno, 3, 1)) = 2) And ((Mid$(Myno, 2, 1)) = 1) Then
GetTxt = My100 + My12
If ((Mid$(Myno, 1, 1)) = 0) Then GetTxt = My12
End If
If (I = 0) And (GetTxt <> "") Then
If ((Mid$(Myno, 1, 3)) > 10) Then
Mybillion = GetTxt + " ?????"
Else
Mybillion = GetTxt + " ???????"
If ((Mid$(Myno, 1, 3)) = 2) Then Mybillion = " ?????"
If ((Mid$(Myno, 1, 3)) = 2) Then Mybillion = " ???????"
End If
End If
If (I = 3) And (GetTxt <> "") Then
If ((Mid$(Myno, 1, 3)) > 10) Then
MyMillion = GetTxt + " ?????"
Else
MyMillion = GetTxt + " ??????"
If ((Mid$(Myno, 1, 3)) = 1) Then MyMillion = " ?????"
If ((Mid$(Myno, 1, 3)) = 2) Then MyMillion = " ???????"
End If
End If
If (I = 6) And (GetTxt <> "") Then
If ((Mid$(Myno, 1, 3)) > 10) Then
MyThou = GetTxt + " ???"
Else
MyThou = GetTxt + " ????"
If ((Mid$(Myno, 3, 1)) = 1) Then MyThou = " ???"
If ((Mid$(Myno, 3, 1)) = 2) Then MyThou = " ?????"
End If
End If
If (I = 9) And (GetTxt <> "") Then MyHun = GetTxt
If (I = 12) And (GetTxt <> "") Then MyFraction = GetTxt
End If
I = I + 3
Loop
If (Mybillion <> "") Then
If (MyMillion <> "") Or (MyThou <> "") Or (MyHun <> "") Then Mybillion = Mybillion
+ MyAnd
End If
If (MyMillion <> "") Then
If (MyThou <> "") Or (MyHun <> "") Then MyMillion = MyMillion + MyAnd
End If
If (MyThou <> "") Then
If (MyHun <> "") Then MyThou = MyThou + MyAnd
End If
If MyFraction <> "" Then
If (Mybillion <> "") Or (MyMillion <> "") Or (MyThou <> "") Or (MyHun <> "") Then
ConvertNumberToWords3 = ReMark + Mybillion + MyMillion + MyThou + MyHun + " " +
MainCurrency + MyAnd + MyFraction + " " + SubCurrency
Else
ConvertNumberToWords3 = ReMark + MyFraction + " " + SubCurrency
End If
Else
ConvertNumberToWords3 = ReMark + Mybillion + MyMillion + MyThou + MyHun + " " +
MainCurrency
End If
End Function

You might also like