Function Read1Word(r1 As Long) As String
Select Case r1
Case 0
Read1Word = "zero"
Case 1
Read1Word = "one"
Case 2
Read1Word = "two"
Case 3
Read1Word = "three"
Case 4
Read1Word = "four"
Case 5
Read1Word = "five"
Case 6
Read1Word = "six"
Case 7
Read1Word = "seven"
Case 8
Read1Word = "eight"
Case 9
Read1Word = "nine"
End Select
End Function
Function Read2Word(r2 As Long) As String
Select Case r2
Case 0, 1, 2, 3, 4, 5, 6, 7, 8, 9
Read2Word = Read1Word(r2)
Case 10
Read2Word = "ten"
Case 11
Read2Word = "eleven"
Case 12
Read2Word = "twelve"
Case 13
Read2Word = "thirteen"
Case 14
Read2Word = "fourteen"
Case 15
Read2Word = "fifteen"
Case 16
Read2Word = "sixteen"
Case 17
Read2Word = "seventeen"
Case 18
Read2Word = "eighteen"
Case 19
Read2Word = "nineteen"
Case 20
Read2Word = "twenty"
Case 30
Read2Word = "thirty"
Case 40
Read2Word = "forty"
Case 50
Read2Word = "fifty"
Case 60
Read2Word = "sixty"
Case 70
Read2Word = "seventy"
Case 80
Read2Word = "eighty"
Case 90
Read2Word = "ninety"
Case Else
Read2Word = Read2Word(Int(r2 \ 10) * 10) + " " + Read1Word(r2 - Int(r2 \ 10) * 10)
End Select
End Function
Function Read3Word(r3 As Long) As String
If r3 < 10 Then
Read3Word = Read1Word(r3)
Else
If r3 < 100 Then
Read3Word = Read2Word(r3)
Else
Read3Word = Read1Word(Int(r3 \ 100)) + " hundred" + IIf(Read2Word(r3 - Int(r3 \ 100) * 100) = "zero", "", " and " + Read2Word(r3 - Int(r3 \ 100) * 100))
End If
End If
End Function
Function ReadWord(r As String) As String
Dim s As String
If Len(r) > 9 Then r = Left(r, 9)
Dim r1 As Long
Dim r2 As Long
s = " "
If InStr(r, ".") > 0 Then
r1 = Val(Left(r, InStr(r, ".") - 1))
r2 = Val(Mid(r, InStr(r, "."), 3)) * 100
Else
r1 = Val(r)
r2 = 0
End If
If r1 < 10 Then
s = Read1Word(r1)
Else
If r1 < 100 Then
s = Read2Word(r1)
Else
If r1 < 1000 Then
s = Read3Word(r1)
Else
If r1 < 1000000 Then
If (r1 \ 1000) * 1000 = r1 Then
s = Read3Word(Int(r1 \ 1000)) + " thousand"
Else
s = Read3Word(Int(r1 \ 1000)) + " thousand and " + Read3Word(r1 - Int(r1 \ 1000) * 1000)
End If
Else
If (r1 \ 1000000) * 1000000 = r1 Then
s = Read3Word(Int(r1 \ 1000000)) + " million"
Else
s = Read3Word(Int(r1 \ 1000000)) + " million and " + ReadWord(r1 - Int(r1 \ 1000000) * 1000000)
End If
End If
End If
End If
End If
If r2 > 0 Then s = s + " point " + Read3Word(r2)
s = UCase$(Left(s, 1)) + LCase$(Mid$(s, 2, 255))
ReadWord = s
End Function
----------------
Cách dùng: readword("123456789.12")
Không có nhận xét nào:
Đăng nhận xét