|
Вопрос по отчету, нужна помощь
#32432096
Ссылка:
Ссылка на сообщение:
Ссылка с названием темы:
|
|
|
|
Пытался использовать данный скрипт для перевода суммы цифрами в сумму прописью в отчете. Скрипт не работает, скорей всего я делаю что то не так, подскажите, пожалуйста, что
1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76. 77. 78. 79. 80. 81. 82. 83. 84. 85. 86.
Public Function funSuprUSDeng(xsu As Currency, Optional mb As Byte) As String
'In words in $ in English
On Error GoTo ersupr
If Not IsNumeric(xsu) Then
funSuprUSDeng = ""
Exit Function
End If
If xsu >= 10000000000000 # Then
funSuprUSDeng = " multitude "
Exit Function
End If
Dim ssu As String, nsu, edi, des, sot, ind As Byte, i As Integer
If Fix(xsu) = 0 Then
funSuprUSDeng = "null dollars "
Else
ssu = MID$(Str$(Fix(xsu)), 2 )
If ssu = 1 Then
funSuprUSDeng = "One dollar "
nsu = (Len(ssu) + 2 ) \ 3
ssu = Right$(" 00 ", nsu * 3 - Len(ssu)) + ssu
GoTo ivan
End If
nsu = (Len(ssu) + 2 ) \ 3
ssu = Right$(" 00 ", nsu * 3 - Len(ssu)) + ssu
For i = nsu To 1 Step - 1
sot = Val(MID$(ssu, (nsu - i) * 3 + 1 , 1 ))
des = Val(MID$(ssu, (nsu - i) * 3 + 2 , 1 ))
edi = Val(MID$(ssu, (nsu - i) * 3 + 3 , 1 ))
If sot + des + edi > 0 Or i = 1 Then
If sot > 0 Then
funSuprUSDeng = funSuprUSDeng + Choose(sot, "one hundred ", " two hundred ", " three hundred ", _
" four hundred ", " five hundred ", " six hundred ", " seven hundred ", " eight hundred ", _
" nine hundred ") + " "
End If
If des = 1 Then
funSuprUSDeng = funSuprUSDeng + Choose(edi + 1 , "ten ", " eleven ", _
" twelve ", " thirteen ", " fourteen ", " fifteen ", " sixteen ", _
" seventeen ", " eighteen ", " nineteen ") + " "
ind = 3
Else
If des <> 0 Then
funSuprUSDeng = funSuprUSDeng + Choose(des - 1 , "twenty ", _
" thirty ", " fourty ", " fifty ", " sixty ", " seventy ", " eighty ", " ninety ") + " "
End If
If edi <> 0 Then
If i = 2 And (edi = 1 Or edi = 2 ) Then
ind = 9
Else
ind = 0
End If
funSuprUSDeng = funSuprUSDeng + Choose(edi + ind, "one ", " two ", _
" three ", " four ", " five ", " six ", " seven ", " eight ", " nine ", " one ", " two ") + " "
End If
Select Case edi
Case 1
ind = 1
Case 2 , 3 , 4
ind = 2
Case Else
ind = 3
End Select
End If
funSuprUSDeng = funSuprUSDeng + Choose((i - 1 ) * 3 + ind, "dollars ", " dollars ", _
" dollars ", " thousand ", " thousand ", " thousand ", " million ", " million ", " million ", _
" milliard ", " milliard ", " milliard ", " trillion ", " trillion ", _
" trillion ") + " "
End If
Next i
End If
ivan:
ssu = Right$(Format$(xsu, " 0 . 00 "), 2 )
des = Val(Left$(ssu, 1 ))
edi = Val(Right$(ssu, 1 ))
If ssu = 1 Then
ind = 1
Else
ind = 2
End If
funSuprUSDeng = funSuprUSDeng + ssu + Choose(ind, " cent ", " cents ")
If mb = 0 Then
funSuprUSDeng = UCase$(Left$(funSuprUSDeng, 1 )) + MID$(funSuprUSDeng, 2 )
End If
Exit Function
ersupr:
funSuprUSDeng = Err.Number & " " & Err.Description
End Function
|
|
|