كود :
Public Function NoToTxt(ByVal TheNo As Double) As String
'======================
If TheNo > 999999999999.999 Then
NoToTxt = ""
Exit Function
End If
'======================
If TheNo = 0 Then
NoToTxt = "صفر"
Exit Function
End If
'======================
Dim MyNo, GetNo, RdNo, GetTxt, ReMark As String
Dim My100, My10, My1, My11, My12 As String
Dim Mybillion, MyMillion As String
Dim MyThou, MyHun, MyFraction As String
Dim MyArry1(9) As String
Dim MyArry2(9) As String
Dim MyArry3(9) As String
Dim MyAnd As String
'======================
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 = Format(TheNo, "000000000000.000")
'======================
Dim i As Integer
For i = 0 To 14 Step 3
If i < 12 Then
MyNo = Mid$(GetNo, i + 1, 3)
Else
MyNo = Mid$(GetNo, i + 2, 3)
End If
If (Mid$(MyNo, 1, 3)) > 0 Then
RdNo = Mid$(MyNo, 1, 1)
My100 = MyArry3(RdNo)
RdNo = Mid$(MyNo, 3, 1)
My1 = MyArry1(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
Next
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
NoToTxt = ReMark + Mybillion + MyMillion + MyThou + MyHun + " " + "جرامات" + MyAnd + MyFraction + " " + "ملى من الجرام"
Else
NoToTxt = ReMark + MyFraction + " " + "ملى من الجرام"
End If
Else
NoToTxt = ReMark + Mybillion + MyMillion + MyThou + MyHun + " " + "جرامات"
End If
End Function