Я имел у себя в справочнике 9 способов суммы прописью: это - десятый :)
Alberto 10.04.2001
От: Alberto 10.04.2001 16:51:03 Сумма прописью! Уважаемые господа, мне срочно нужна функция, реализующая преобразование числа (рубли и копейки) в строку.. Прошу помочь!
Vit 11.04.2001
От: Vit 11.04.2001 1:47:50 Re:Сумма прописью! Я пользуюсь таким модулем (выдрал из демки и доработал для копеек и миллионов):
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' ' СУММА ПРОПИСЬЮ ' ' ' ' СуммаПрописью (Сумма) выводит сумму прописью для ' ' печати в счетах, накладных и пр. ' ' ' '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' Option Compare Database 'Использовать функции базы данных при сравнении строк 'Option Explicit ' Требует явного описания переменных перед их использованием.
Global Сумма As Currency, Остаток As Currency
Function Десятки(Разряд As Long) As String
Select Case Разряд Case 2 Десятки = "двадцать " Case 3 Десятки = "тридцать " Case 4 Десятки = "сорок " Case 5 Десятки = "пятьдесят " Case 6 Десятки = "шестьдесят " Case 7 Десятки = "семьдесят " Case 8 Десятки = "восемьдесят " Case 9 Десятки = "девяносто " End Select
End Function
Function Единицы(Разряд As Long, Род As String) As String
Select Case Разряд Case 1 If Род = "Мужской" Then Единицы = "один " Else Единицы = "одна " End If Case 2 If Род = "Мужской" Then Единицы = "два " Else Единицы = "две " End If Case 3 Единицы = "три " Case 4 Единицы = "четыре " Case 5 Единицы = "пять " Case 6 Единицы = "шесть " Case 7 Единицы = "семь " Case 8 Единицы = "восемь " Case 9 Единицы = "девять " Case 10 Единицы = "десять " Case 11 Единицы = "одиннадцать " Case 12 Единицы = "двенадцать " Case 13 Единицы = "тринадцать " Case 14 Единицы = "четырнадцать " Case 15 Единицы = "пятнадцать " Case 16 Единицы = "шестнадцать " Case 17 Единицы = "семнадцать " Case 18 Единицы = "восемнадцать " Case 19 Единицы = "девятнадцать "
End Select
End Function
Function Миллионы(Разряд As Long) As String
If Разряд = 1 Then Миллионы = "миллион " ElseIf Разряд > 1 And Разряд < 5 Then Миллионы = "миллиона " Else Миллионы = "миллионов " End If
End Function
Function Рубли(ДесяткиРублей As Long) As String Select Case ДесяткиРублей Case 0, 5 To 20 Рубли = "рублей" Case Else Select Case (ДесяткиРублей - Int(ДесяткиРублей / 10) * 10) Case 0, 5 To 9 Рубли = "рублей" Case 1 Рубли = "рубль" Case 2 To 4 Рубли = "рубля" End Select End Select End Function
Function Сотни(Разряд As Long) As String
Select Case Разряд Case 1 Сотни = "сто " Case 2 Сотни = "двести " Case 3 Сотни = "триста " Case 4 Сотни = "четыреста " Case 5 Сотни = "пятьсот " Case 6 Сотни = "шестьсот " Case 7 Сотни = "семьсот " Case 8 Сотни = "восемьсот " Case 9 Сотни = "девятьсот " End Select
End Function
Function СуммаПрописью(СуммаСчета As Currency) As String ' Параметры: Используются глобальные параметры ' Сумма, Остаток и Подпись ' Назначение: Перевод СуммыСчета в строковую константу ' Возвращает: СуммуПрописью
'Dim Группа As Long, Разряд As Long, Длина As Integer Dim Группа As Double, Разряд As Long, Длина As Integer Dim Пропись As String, Копейки As Integer, ДесяткиРублей As Long
If IsNull(СуммаСчета) Or IsEmpty(СуммаСчета) Or СуммаСчета = 0 Then СуммаПрописью = "Ноль рублей 00 коп." Exit Function End If Сумма = Int(СуммаСчета) Остаток = Сумма Копейки = СуммаСчета * 100 - Int(СуммаСчета) * 100 ДесяткиРублей = 0
Группа = Остаток \ 1000000 If Группа <> 0 Then Разряд = Группа \ 100 Пропись = Пропись & Сотни(Разряд) Остаток = Остаток - Разряд * 100 * 1000000 Группа = Группа - Разряд * 100
If Группа > 19 Then Разряд = Группа \ 10 Пропись = Пропись & Десятки(Разряд) Остаток = Остаток - Разряд * 10 * 1000000 Группа = Группа - Разряд * 10 End If
Группа = Остаток \ 1000 If Группа <> 0 Then Разряд = Группа \ 100 Пропись = Пропись & Сотни(Разряд) Остаток = Остаток - Разряд * 100 * 1000 Группа = Группа - Разряд * 100
If Группа > 19 Then Разряд = Группа \ 10 Пропись = Пропись & Десятки(Разряд) Остаток = Остаток - Разряд * 10 * 1000 Группа = Группа - Разряд * 10 End If
Группа = Остаток If Группа <> 0 Then Разряд = Группа \ 100 Пропись = Пропись & Сотни(Разряд) Остаток = Остаток - Разряд * 100 Группа = Группа - Разряд * 100
If Группа > 19 Then Разряд = Группа \ 10 ДесяткиРублей = Остаток Пропись = Пропись & Десятки(Разряд) Остаток = Остаток - Разряд * 10 Группа = Группа - Разряд * 10 End If