Печатает названия денежных единиц.

Function LetterSum(sum As Currency) As String
Dim R As Long, K As Integer, tmp As Integer
Dim Z As String, ZR As String, ZK As String
Const RKdiv = "  "
R = Int(sum)
K = (sum - R) * 100
ZR = IntTxt(R) + " " + DTxt(R, "рубль", "рубля", "рублей")
ZK = Format$(K, "00") + " " + DTxt(K, "копейка", "копейки", "копеек")
Z = ZR & RKdiv & ZK
Z = UCase$(Mid$(Z, 1, 1)) + Mid$(Z, 2)
LetterSum = Z
End Function
------------------------------------------------------------------------------------
Function DTxt(Number As Variant, W0 As String, W1 As String, W2 As String) As String
Dim tmp As String, Z As Integer
tmp = Trim$(Str$(Number))
Z = Val(Right$(tmp, 2))
If Z < 20 Then
    Select Case Z
      Case 0, 5 To 19
        tmp = W2
      Case 1
        tmp = W0
      Case 2, 3, 4
        tmp = W1
    End Select
  Else
    Select Case (Z - 10 * Int(Z / 10))
      Case 0, 5 To 9
        tmp = W2
      Case 1
        tmp = W0
      Case 2, 3, 4
        tmp = W1
    End Select
End If
DTxt = tmp
End Function