(495) 925-0049, ITShop интернет-магазин 229-0436, Учебный Центр 925-0049
  Главная страница Карта сайта Контакты
Поиск
Вход
Регистрация
Рассылки сайта
 
 
 
 
 

Сумма прописью

Аргументы: n - сумма: rub - (false - без копеек, true - полностью)
Назначение: Конвертирует сумму в сумму прописью
Возвращает: Сумму прописью (Двадцать пять рублей 33 копейки.)
Private Skl As Byte

Public Function NumStr(n As Currency, Optional rub As Boolean = True) As String
Dim s As String, R As String, K As String
Dim t, u, v, w As Integer

s = ""
If n < 0 Then
    n = Abs(n)
    s = "минус"
End If
v = (n - Fix(n)) * 100 
w = Val(right(Format(v), 1))
n = Fix(n)
t = Val(right(Format(n), 2)) 
u = Val(right(t, 1)) 
If t > 10 And t < 15 Then
    R = " рублей"
ElseIf u = 1 Then
    R = " рубль"
ElseIf u > 1 And u < 5 Then
    R = " рубля"
Else
    R = " рублей"
End If
If v > 10 And v < 15 Then
    K = " копеек." 
ElseIf w = 1 Then
    K = " копейка."
ElseIf w > 1 And w < 5 Then
    K = " копейки."
Else
    K = " копеек."
End If
If n > 1000000000000# Then
    s = AddStr(s, NumStr2(Int(n / 1000000000000#), True))
    Select Case Skl
      Case 0
          s = AddStr(s, "триллион")
      Case 1
          s = AddStr(s, "триллиона")
      Case 2
          s = AddStr(s, "триллионов")
    End Select
    n = n - Int(n / 1000000000000#) * 1000000000000#
End If
If n > 1000000000 Then
    s = AddStr(s, NumStr2(Int(n / 1000000000), True))
    Select Case Skl
      Case 0
          s = AddStr(s, "миллиард")
      Case 1
          s = AddStr(s, "миллиарда")
      Case 2
          s = AddStr(s, "миллиардов")
    End Select
    n = n - Int(n / 1000000000) * 1000000000
End If
If n > 1000000 Then
    s = AddStr(s, NumStr2(n \ 1000000, True))
    Select Case Skl
      Case 0
          s = AddStr(s, "миллион")
      Case 1
          s = AddStr(s, "миллиона")
      Case 2
          s = AddStr(s, "миллионов")
    End Select
    n = n Mod 1000000
End If
If n > 1000 Then
    s = AddStr(s, NumStr2(n \ 1000, False))
    Select Case Skl
      Case 0
          s = AddStr(s, "тысяча")
      Case 1
          s = AddStr(s, "тысячи")
      Case 2
          s = AddStr(s, "тысяч")
    End Select
    n = n Mod 1000
End If
If n > 0 Then
    s = AddStr(s, NumStr2(n, True))
End If
If s = "" Then
    s = "ноль"
ElseIf s = "минус" Then
    s = s + " ноль"
End If
'NumStr = StrConv(Mid(s, 1, 1), vbUpperCase) + Mid(s, 2, Len(s) - 1)
NumStr = UCase(Left(Trim(s), 1)) & LCase(Mid(Trim(s), 2))
If (rub) Then NumStr = NumStr & R & Format(v, " 00") & K
End Function

Private Function NumStr2(n As Currency, male As Boolean) As String
Dim s As String

s = ""
If n >= 100 Then
    s = NumStr1(((n \ 100) * 100), male)
    n = n Mod 100
End If
If n >= 20 Then
    s = AddStr(s, NumStr1(((n \ 10) * 10), male))
    n = n Mod 10
End If
NumStr2 = AddStr(s, NumStr1(n, male))
End Function

Private Function NumStr1(n As Currency, male As Boolean) As String
Skl = 2
Select Case n
  Case 100
      NumStr1 = "сто"
  Case 200
      NumStr1 = "двести"
  Case 300
      NumStr1 = "триста"
  Case 400
      NumStr1 = "четыреста"
  Case 500
      NumStr1 = "пятьсот"
  Case 600
      NumStr1 = "шестьсот"
  Case 700
      NumStr1 = "семьсот"
  Case 800
      NumStr1 = "восемьсот"
  Case 900
      NumStr1 = "девятьсот"
  Case 11
      NumStr1 = "одиннадцать"
  Case 12
      NumStr1 = "двенадцать"
  Case 13
      NumStr1 = "тринадцать"
  Case 14
      NumStr1 = "четырнадцать"
  Case 15
      NumStr1 = "пятнадцать"
  Case 16
      NumStr1 = "шестнадцать"
  Case 17
      NumStr1 = "семнадцать"
  Case 18
      NumStr1 = "восемнадцать"
  Case 19
      NumStr1 = "девятнадцать"
  Case 20
      NumStr1 = "двадцать"
  Case 30
      NumStr1 = "тридцать"
  Case 40
      NumStr1 = "сорок"
  Case 50
      NumStr1 = "пятьдесят"
  Case 60
      NumStr1 = "шестьдесят"
  Case 70
      NumStr1 = "семьдесят"
  Case 80
      NumStr1 = "восемьдесят"
  Case 90
      NumStr1 = "девяносто"
  Case 1
      Skl = 0
      If male Then
          NumStr1 = "один"
      Else
          NumStr1 = "одна"
      End If
  Case 2
      Skl = 1
      If male Then
          NumStr1 = "два"
      Else
          NumStr1 = "две"
      End If
  Case 3
      Skl = 1
      NumStr1 = "три"
  Case 4
      Skl = 1
      NumStr1 = "четыре"
  Case 5
      NumStr1 = "пять"
  Case 6
      NumStr1 = "шесть"
  Case 7
      NumStr1 = "семь"
  Case 8
      NumStr1 = "восемь"
  Case 9
      NumStr1 = "девять"
  Case 10
      NumStr1 = "десять"
End Select
End Function

Private Function AddStr(S1 As String, S2 As String)
If S1 = "" Then
    AddStr = S2
ElseIf S2 = "" Then
    AddStr = S1
Else
    AddStr = S1 + " " + S2
End If
End Function

Ссылки по теме


 Распечатать »
 Правила публикации »
  Написать редактору 
 Рекомендовать » Дата публикации: 23.01.2008 
 

Магазин программного обеспечения   WWW.ITSHOP.RU
Microsoft Office 365 Персональный 32-bit/x64. 1 ПК/MAC + 1 Планшет + 1 Телефон. Все языки. Подписка на 1 год.
Microsoft 365 Business Basic (corporate)
Microsoft Office 365 Профессиональный Плюс. Подписка на 1 рабочее место на 1 год
Microsoft Office для дома и учебы 2019 (лицензия ESD)
Microsoft Windows Professional 10, Электронный ключ
 
Другие предложения...
 
Курсы обучения   WWW.ITSHOP.RU
 
Другие предложения...
 
Магазин сертификационных экзаменов   WWW.ITSHOP.RU
 
Другие предложения...
 
3D Принтеры | 3D Печать   WWW.ITSHOP.RU
 
Другие предложения...
 
Новости по теме
 
Рассылки Subscribe.ru
Информационные технологии: CASE, RAD, ERP, OLAP
Безопасность компьютерных сетей и защита информации
Новости ITShop.ru - ПО, книги, документация, курсы обучения
Программирование на Microsoft Access
CASE-технологии
Программирование на Visual Basic/Visual Studio и ASP/ASP.NET
Проект mic-hard - все об XP - новости, статьи, советы
 
Статьи по теме
 
Новинки каталога Download
 
Исходники
 
Документация
 
 



    
rambler's top100 Rambler's Top100