Количество слов в VBA.Вставьте «и» для последней цифры - PullRequest
0 голосов
/ 17 июня 2019

Я хотел добавить слово "и" перед последней цифрой, но не смог этого сделать.

Например: 101 доллар (сто один)

$ 110 (Сто десять)

$ 111,50 (Сто одиннадцать и пятьдесят)

Function GetHundreds(ByVal MyNumber)

    Dim Result As String

    If Val(MyNumber) = 0 Then Exit Function

    MyNumber = Right("000" & MyNumber, 3)

    ' Convert the hundreds place.
    If Mid(MyNumber, 1, 1) <> "0" Then

        Result = GetDigit(Mid(MyNumber, 1, 1)) & " Hundred "

    End If


    ' Convert the tens and ones place.
    If Mid(MyNumber, 2, 1) <> "0" Then

        Result = Result & GetTens(Mid(MyNumber, 2))

    Else

        Result = Result & GetDigit(Mid(MyNumber, 3))

    End If

    GetHundreds = Result

End Function

1 Ответ

0 голосов
/ 07 июля 2019

Не рекомендуется добавлять "и" после сотен в числе.Однако, чтобы помочь вам, я изменил функцию, которую я разместил в https://codereview.stackexchange.com/questions/223615/very-simple-spell-number-to-words-001-to-999-in-vba, чтобы она добавляла «и».

Функция работает с числами от 001 до 999. Без дробей.Для чисел с дробями вам нужно разделить число и разобраться с каждой частью (целое число и дробная часть) отдельно;после разбиения легко добавить «и» перед дробью.

Вот оно.Я надеюсь, что это работает и заставляет вас начать

'-------------------------------------
Function Do999(ByVal ThreeDigits) As String
'-------------------------------------
'Spells numbers from 001 to 999 to Words
'Mohsen Alyafei 17 Oct 2018
'Modified to add "and" by Mohsen Alyfei 07 July 2019
'On Entry: ThreeDigits 3 digit number 001 to 999
'On Exit : String of number in English words
'-----------------------------------------
    Dim Ones(), Tens(), Separator  As String, h As String, t As String, N1 As Integer, N2 As Integer, annd As String
    Ones = Array("", "One", "Two", "Three", "Four", "Five", "Six", "Seven", "Eight", "Nine", "Ten", "Eleven", "Twelve", "Thirteen", "Fourteen", "Fifteen", "Sixteen", "Seventeen", "Eighteen", "Nineteen")
    Tens = Array("", "", "Twenty", "Thirty", "Forty", "Fifty", "Sixty", "Seventy", "Eighty", "Ninety")

    ThreeDigits = Right("000" & ThreeDigits, 3)  'Align to 3 digits
    annd = " "           'added to add "and"

    If Right(ThreeDigits, 1) <> "0" Then Separator = "-"

    N1 = Left(ThreeDigits, 1): N2 = Right(ThreeDigits, 2)
    If N2 > 19 Then t = Tens(Val(Mid(ThreeDigits, 2, 1))) & Separator & Ones(Val(Right(ThreeDigits, 1))) Else t = Ones(N2)

    If N1 > 0 Then
      h = Ones(N1) & " Hundred"
      If N2 > 0 Then annd = " and "     'added to add "and"
    End If
Do999 = Trim(h & annd & t)              'var "annd" is normally a space
End Function
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...