Аргументы: 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 
Ссылки по теме