Sửa hộ UDF:hàm đọc số thành chữ tiếng Anh

Liên hệ QC

ThuNghi

Hãy cho rồi sẽ nhận!
Thành viên đã mất
Tham gia
16/8/06
Bài viết
3,808
Được thích
4,449
Tôi có chép trên GPE addins đọc số tiếng anh, không biết chép có thiếu chữ nào không mà đọc
1020: JPY One thousand two hundred and only.
hay
120000: JPY One hundred and thousand only.
thì không đúng, mất 20.
Nhờ các bạn sửa hộ. Cám ơn!
Gốc của UDF này là USD, tôi có sửa thành JPY.
PHP:
Public Function JPE(MoneyAmount)
If MoneyAmount = 0 Then
    toread = "None"
Else
    UnitCount = Array("None", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine", "ten", _
    "elevent", "twelve", "thirteen", "fourteen", "fifteen", "sixteen", "seventeen", "eighteen", "nineteen")
    TenCount = Array("None", "None", "twenty", "thirty", "forty", "fifty", "sixty", "seventy", "eighty", "ninety")
    GroupCount = Array("None", "billion", "million", "thousand", "", "cents")
    If MoneyAmount < 0 Then
        toread = "Minus" & Space(1)
    Else
        toread = Space(0)
    End If
    mystring = Format(Abs(MoneyAmount), "###############.00")
    mystring = Right(Space(12) & mystring, 15)
    For NN = 1 To 5
        mygroup = Mid(mystring, NN * 3 - 2, 3)
        If mygroup <> Space(3) Then
            Select Case mygroup
            Case "000"
                If NN = 4 And Abs(MoneyAmount) > 1 Then
                MyWord = "" & Space(1)
                Else
                MyWord = Space(0)
                End If
            Case ".00", ",00"
                MyWord = "only."
            Case Else
                XX = Val(Left(mygroup, 1))
                YY = Val(Mid(mygroup, 2, 1))
                ZZ = Val(Right(mygroup, 1))
                WW = Val(Right(mygroup, 2))
                If XX = 0 Then
                    MyWord = Space(0)
                Else
                    MyWord = UnitCount(XX) & Space(1) & "hundred" & Space(1)
                    If WW > 0 And WW < 21 Then
                     MyWord = MyWord & "and" & Space(1)
                     
                     End If
                End If
                If NN = 5 And Abs(MoneyAmount) > 1 Then
                    MyWord = "and" & Space(1) & MyWord
                End If
                If WW < 20 And WW > 0 Then
                    MyWord = MyWord & UnitCount(WW) & Space(1)
                Else
                    If WW > 20 Then
                    MyWord = MyWord & TenCount(YY) & Space(1)
                    If ZZ > 0 Then
                        MyWord = MyWord & UnitCount(ZZ) & Space(1)
                    End If
                End If
            End If
            MyWord = MyWord & GroupCount(NN) & Space(1)
        End Select
        toread = toread & MyWord
    End If
Next NN
End If
JPE = "JPY " & UCase(Left(toread, 1)) & Mid(toread, 2)
'JPE = "Japanese Yen " & UCase(Left(toread, 1)) & Mid(toread, 2)
End Function
 
Cám ơn tôi tìm ra rồi, rút kinh nghiệm lần sau test kỹ hơn đỡ mất phí tu chỉnh.
If WW >= 20 Then
MyWord
= MyWord & TenCount(YY) & Space(1)

Còn vấn đề đó nữa, em cũng chưa biết theo Nhật thì Cent đọc thế nào, cũng may là không có tiền lẻ. 1JPY # 196 VND à.
 
Lần chỉnh sửa cuối:
Bạn lưu ý đơn vị tiền lẻ của JPY nhé, mình không biết nó là gì nhưng code bạn vẫn để "cent".
 
Web KT
Back
Top Bottom