Function SPROP(value) As String ' SPROP - преобразование числа в сумму прописью Dim sss, s_p, sum_pr m_ed = Array("один", "два", "три", "четыре", "пять", "шесть", "семь", "восемь", "девять") m_ed2 = Array("одна", "две", "три", "четыре", "пять", "шесть", "семь", "восемь", "девять") m_teen = Array("десять", "одиннадцать", "двенадцать", "тринадцать", "четырнадцать", "пятнадцать", "шестнадцать", "семнадцать", "восемнадцать", "девятнадцать") m_des = Array("двадцать", "тридцать", "сорок", "пятьдесят", "шестьдесят", "семьдесят", "восемьдесят", "девяносто") m_sot = Array("сто", "двести", "триста", "четыреста", "пятьсот", "шестьсот", "семьсот", "восемьсот", "девятьсот") mn_mrd = Array("миллиард", "миллиарда", "миллиардов") mn_mil = Array("миллион", "миллиона", "миллионов") mn_tys = Array("тысяча", "тысячи", "тысяч") mn_rub = Array("рубль", "рубля", "рублей") mn_kop = Array("копейка", "копейки", "копеек") sss = Trim(Str(value)) poz_r = InStr(sss, ".") If poz_r > 0 Then If Len(Mid(sss, poz_r)) = 2 Then sss = sss + "0" End If Else sss = sss + ".00" End If If Len(sss) <= 15 Then sss = Space(15 - Len(sss)) + sss sum_pr = "" Dim for_txt As Integer, prizn As Integer, edin As Integer, sotni As Integer Dim des As Integer, edinit As Integer For i = 1 To 5 prizn = 2 Select Case i Case 1 for_txt = Val(Left(Right(sss, 15), 3)) Case 2 for_txt = Val(Left(Right(sss, 12), 3)) Case 3 for_txt = Val(Left(Right(sss, 9), 3)) Case 4 for_txt = Val(Left(Right(sss, 6), 3)) Case 5 for_txt = Val(Right(sss, 2)) End Select edin = (for_txt / 100 - for_txt \ 100) * 100 sotni = Int(for_txt / 100) s_p = "" If sotni > 0 Then s_p = m_sot(sotni - 1) + " " End If If edin < 20 And edin > 9 Then s_p = s_p + m_teen(edin - 10) Else des = Int(edin / 10) edinit = (edin / 10 - edin \ 10) * 10 If (des - 2) >= 0 Then s_p = s_p + m_des(des - 2) + " " End If If (edinit - 1) >= 0 Then If i = 3 Or i = 5 Then s_p = s_p + m_ed2(edinit - 1) Else s_p = s_p + m_ed(edinit - 1) End If If edinit = 1 Then prizn = 0 End If If edinit > 1 And edinit < 5 Then prizn = 1 End If End If End If If for_txt > 0 Or i = 4 Then Select Case i Case 1 s_p = s_p + " " + mn_mrd(prizn) + " " Case 2 s_p = s_p + " " + mn_mil(prizn) + " " Case 3 s_p = s_p + " " + mn_tys(prizn) + " " Case 4 s_p = s_p + " " + mn_rub(prizn) + " " Case 5 s_p = s_p + " " + mn_kop(prizn) End Select End If sum_pr = sum_pr + s_p Next i sum_pr = sum_pr Else mes_er = MsgBox("Введено слишком большое число", 0, "Внимание!") sum_pr = "" End If SPROP = sum_pr End Function