• Vui lòng đọc nội qui diễn đàn để tránh bị xóa bài viết
  • Tìm kiếm trước khi đặt câu hỏi

Chuyển số thành chữ Tiếng Anh

Các mẹo vặt linh tinh khác, không thuộc nhóm nào
Hình đại diện của người dùng
tungcan5diop
Cựu chiến binh
Cựu chiến binh
Bài viết: 1123
Ngày tham gia: T.Tư 24/09/2008 4:04 pm
Đến từ: TPHCM
Has thanked: 1 time
Been thanked: 28 time

Chuyển số thành chữ Tiếng Anh

Gửi bàigửi bởi tungcan5diop » T.Tư 16/12/2009 4:29 pm

  1. Public Function ReadMoney(ByVal strNumber As String, VarCurrency As String) As String
  2.     '===== Note : Apply to VND only - read in English
  3.    '===== strNumber contains 12 digitals as maximum
  4.    Dim tmp3Num(4) As Integer, Number As String, I As Integer, j As Integer, k As Integer, strResult As String, bSmallNum As Boolean
  5.     Dim temp As Double
  6.     Dim tempnumber As String
  7.    
  8.     If Not IsNumeric(strNumber) Then ReadMoney = "Please enter a number only !": Exit Function
  9.     If Len(strNumber) > 12 Then ReadMoney = "Too large number ! The maximum of this number is 999.999.999.999 (12 digitals only)": Exit Function
  10.    
  11.     temp = Val(strNumber) - Int(Val(strNumber))
  12.     If temp <> 0 Then tempnumber = ReadMoney(CInt(temp * 100), "")
  13.     Number = Trim(Int(strNumber))
  14.     If CDbl(Number) = 0 Then ReadMoney = "Zero " & VarCurrency: Exit Function
  15.     Dim Hang
  16.     Hang = Array("thousand", "million", "billion")
  17.     j = Len(Number) \ 3
  18.     If Len(Number) Mod 3 > 0 Then j = j + 1
  19.     For I = j - 1 To 0 Step -1
  20.         tmp3Num(I) = CInt(Right(Number, IIf(Len(Number) >= 3, 3, Len(Number))))
  21.         If I > 0 Then
  22.             Number = Left(Number, Len(Number) - 3)
  23.         End If
  24.     Next I
  25.     k = 0
  26.     For I = j - 1 To 0 Step -1
  27.         If I = j - 1 Then
  28.                 If Len(CStr(tmp3Num(I))) = 3 Then
  29.                     strResult = Read3Num(tmp3Num(I), VarCurrency, True)
  30.                 Else
  31.                     bSmallNum = True
  32.                     If CDbl(strNumber) >= 100 Then bSmallNum = False
  33.                     strResult = Read2Num(tmp3Num(I), VarCurrency, True, bSmallNum)
  34.                 End If
  35.         Else
  36.                 If Len(CStr(tmp3Num(I))) = 3 Then
  37.                     strResult = Read3Num(tmp3Num(I), VarCurrency) & Space(1) & IIf(tmp3Num(I) > 0, Hang(k) & " ", "") & strResult
  38.                 Else
  39.                     strResult = Read2Num(tmp3Num(I), VarCurrency) & Space(1) & IIf(tmp3Num(I) > 0, Hang(k) & " ", "") & strResult
  40.                 End If
  41.                 k = k + 1
  42.         End If
  43.     Next I
  44.     Dim firstchar As String
  45.     If Len(tempnumber) > 0 Then strResult = strResult + " point " + tempnumber
  46.     strResult = Trim(strResult)
  47.     firstchar = UCase(Left(strResult, 1))
  48.     strResult = VarCurrency & " " & firstchar & Right(strResult, Len(strResult) - 1)
  49.     ReadMoney = strResult
  50. End Function

  1. Public Function Read3Num(ByVal intNum As Integer, VarCurrency As String, Optional bLastNum As Boolean = False) As String
  2.     If intNum > 1000 Then Read3Num = "": Exit Function
  3.     Dim Tram
  4.     Tram = Array("one", "two", "three", "four", "five", "six", "seven", "eight", "nine")
  5.     If intNum = 0 Then Read3Num = "": Exit Function
  6.     Read3Num = Tram((intNum \ 100) - 1) & " hundred"
  7.     If intNum Mod 100 > 0 Then
  8.         If bLastNum Then Read3Num = Read3Num
  9.         Read3Num = Read3Num & Space(1) & Read2Num(intNum Mod 100, VarCurrency)
  10.     End If
  11.     If bLastNum Then Read3Num = Read3Num
  12. End Function

  1. Public Function Read2Num(ByVal intNum As Integer, VarCurrency As String, Optional bLastNum As Boolean = False, Optional bSmallNum As Boolean = False) As String
  2.     If intNum > 100 Then Read2Num = "": Exit Function
  3.     Dim donvi, Chuc
  4.     donvi = Array("one", "two", "three", "four", "five", "six", "seven", "eight", "nine", "ten", "eleven", "twelve", _
  5.                                 "thirteen", "fourteen", "fifteen", "sixteen", "seventeen", "eighteen", "nineteen")
  6.     Chuc = Array("twenty", "thirty", "forty", "fifty", "sixty", "seventy", "eighty", "ninety")
  7.     Select Case intNum
  8.         Case 1 To 19
  9.             If bLastNum And (Not bSmallNum) Then Read2Num = Read2Num
  10.             Read2Num = Read2Num & Space(1) & donvi(intNum - 1)
  11.         Case Is > 19
  12.             Read2Num = Chuc(CInt(intNum \ 10) - 2)
  13.             If intNum Mod 10 > 0 Then
  14.                 If bLastNum And (Not bSmallNum) Then Read2Num = Read2Num
  15.                 Read2Num = Read2Num & Space(1) & donvi((intNum Mod 10) - 1)
  16.             End If
  17.         Case Else
  18.                Read2Num = ""
  19.     End Select
  20.     If bLastNum Then Read2Num = Read2Num
  21. End Function


Hỡi thế gian bug(lỗi) là gì?
Mà sửa...hoài không hết!

Khai Nguyen
Bài viết: 4
Ngày tham gia: T.Bảy 10/08/2013 9:47 pm
Has thanked: 11 time

Re: Chuyển số thành chữ Tiếng Anh

Gửi bàigửi bởi Khai Nguyen » T.Năm 15/08/2013 4:36 pm

Nhân tiện đây mình cũng có góp thêm với tất cả mấy hàm dịch số thành chữ =VND Và USD xin góp thêm với diễn đàn đây là Link :
http://www.mediafire.com/download/k4527 ... %2BUSD.rar
Khai Nguyen


Quay về “[VB] Mẹo vặt khác”

Đang trực tuyến

Đang xem chuyên mục này: Không có thành viên nào trực tuyến.1 khách