Attribute VB_Name = "Module2" ' ehsan.shahshahani@gmail.com Option Explicit Public yekan Public dahgan Public dahyek Public sadgan Public base ' تابع اعتبار سنجي عدد Function isvalid15(snum As String) As Boolean Dim i As Integer, l As Integer, b As Boolean b = True l = Len(snum) If l > 15 Then b = False Else For i = 1 To l If Not (Mid(snum, i, 1) >= 0 And Mid(snum, i, 1) <= 9) Then b = False Next End If isvalid15 = b End Function ' تابع تبديل عدد سه رقمي به حروف Function getnum3(num3 As Integer) As String Dim s As String Dim d1 As Integer, d2 As Integer, d3 As Integer, d12 As Integer d12 = num3 Mod 100 d3 = num3 \ 100 If d3 <> 0 Then s = sadgan(d3) + " و " If (d12 >= 10) And (d12 <= 19) Then s = s + dahyek(d12 - 10) Else d2 = d12 \ 10 If d2 <> 0 Then s = s + dahgan(d2) + " و " d1 = d12 Mod 10 'If d1 <> 0 Then s = s + yekan(d1) + " و " 's = Mid(s, 1, Len(s) - 3) End If getnum3 = s End Function ' تابع تبديل عدد به حروف Function num2str(snum As String) As String yekan = Array("صفر", "يك", "دو", "سه", "چهار", "پنج", "شش", "هفت", "هشت", "نه") dahgan = Array("", "", "بيست", "سي", "چهل", "پنجاه", "شصت", "هفتاد", "هشتاد", "نود") dahyek = Array("ده", "يازده", "دوازده", "سيزده", "چهارده", "پانزده", "شانزده", "هفده", "هجده", "نوزده") sadgan = Array("", "يكصد", "دويست", "سيصد", "چهارصد", "پانصد", "ششصد", "هفتصد", "هشتصد", "نهصد") base = Array("", "هزار", "ميليون", "ميليارد", "تريليون") Dim l As Integer, i As Integer, b As Integer Dim stotal As String If snum = "0" Then num2str = yekan(0) Else For i = Len(snum) To ((Len(snum) - 1) \ 3 + 1) * 3 - 1 snum = "0" + snum Next l = Len(snum) \ 3 - 1 For i = 0 To l b = Val(Mid(snum, i * 3 + 1, 3)) If b <> 0 Then stotal = stotal + getnum3(b) + " " + base(l - i) + " و " Next stotal = Mid(stotal, 1, Len(stotal) - 3) num2str = stotal End If End Function ' اين تابع، يک لايه براي تابع <تبديل عدد به حروف> است که صحت مقدار ورودي را نيز بررسي مي کند Function GetStr(ByVal snum As String) As String yekan = Array("صفر", "يك", "دو", "سه", "چهار", "پنج", "شش", "هفت", "هشت", "نه") dahgan = Array("", "", "بيست", "سي", "چهل", "پنجاه", "شصت", "هفتاد", "هشتاد", "نود") dahyek = Array("ده", "يازده", "دوازده", "سيزده", "چهارده", "پانزده", "شانزده", "هفده", "هجده", "نوزده") sadgan = Array("", "يكصد", "دويست", "سيصد", "چهارصد", "پانصد", "ششصد", "هفتصد", "هشتصد", "نهصد") base = Array("", "هزار", "ميليون", "ميليارد", "تريليون") snum = Trim(snum) If isvalid15(snum) Then GetStr = num2str(snum) Else GetStr = "عدد مورد نظر بسيار بزرگ است و يا معتبر نيست" End If End Function ' تابع افزودن ويرگول ' اين تابع يک عدد مي گيرد و به ازاي هر سه رقم يک ويرگول بين اعداد قرار مي دهد Function AddComma(snum As String) As String Dim l As Integer, i As Integer Dim s As String i = 1 l = Len(snum) Do While i <= l s = Mid(snum, l - i + 1, 1) + s If (i Mod 3 = 0) And (i <> l) Then s = "," + s i = i + 1 Loop AddComma = s End Function