FAQ - сумма пpописью Hемного пооптимизиpовал, получилось довольно компактно, можно даже сделать FAQ, если модеpатоp сочтет нужным. _______________________ ' процедура преобразования числа в текст прописью (с) D. Feofanov 2:5000/72.4 ' num2text - веpсия от 30.10.97 ' если пpедать втоpой паpаметp, то вывод сокpащенный (1000=1 тыс.) ' для пеpеноса в Excel - зачитать текст wordpad'ом (или word'ом), как ' текстовый файл ms-dos, "выделить все", "копиpовать", пеpейти в excel ' на стpаницу "модуль" и "вставить". Option Base 1 Private Function digits(number As Long, range As Long) As Integer digits = number \ range number = number Mod range End Function Public Static Function num2text(number As Long, Optional flag) Dim fulname, shtname, sufix(4), range, Hndr, Dcm, Unit Dim fld As Long, i As Integer, digit As Integer, endic As Integer If IsEmpty(range) Then range = Array(1000000000, 1000000, 1000, 1) shtname = Array("млрд. ", "млн. ", "тыс. ", "") fulname = Array("миллиард", "миллион", "тысяч", "") sufix(1) = Array("а ", " ", "ов ") sufix(2) = Array("а ", " ", "ов ") sufix(3) = Array("и ", "а ", " ") sufix(4) = Array("", "", "") Hndr = Array("сто ", "двести ", "триста ", "четыреста ", "пятьсот ",_ "шестьсот ", "семьсот ", "восемьсот ", "девятьсот ") Dcm = Array("двадцать ", "тридцать ", "сорок ", "пятьдесят ",_ "шестьдесят ", "семьдесят ", "восемдесят ", "девяносто ") Unit = Array("один ", "два ", "три ", "четыре ", "пять ", "шесть ",_ "семь ", "восемь ", "девять ", "десять ", "одинадцать ",_ "двенадцать ", "тринадцать ", "четырнадцать ", "пятнадцать ",_ "шестнадцать ", "семнадцать ","восемнадцать ", "девятнадцать ") End If If number = 0 Then num2text = "ноль" Else For i = 1 To UBound(range) If number >= range(i) Then fld = digits(number, range(i)) digit = digits(fld, 100) If digit > 0 Then num2text = num2text & Hndr(digit) End If If fld > 19 Then digit = digits(fld, 10) num2text = num2text & Dcm(digit - 1) End If If fld > 0 Then If (range(i) <> 1000) Or (fld > 2) Then num2text = num2text & Unit(fld) ElseIf fld = 1 Then num2text = num2text & "одна " ElseIf fld = 2 Then num2text = num2text & "две " End If End If If IsMissing(flag) Then endic = 1 If fld = 1 Then endic = endic + 1 ElseIf fld > 4 Or fld < 1 Then endic = endic + 2 End If num2text = num2text & fulname(i) & sufix(i)(endic) Else num2text = num2text & shtname(i) End If End If Next End If End Function