Em lấy cái VBA đọc số ra chữ trên diễn đàn về dùng và giờ sửa lại để đọc tiền USD nhưng đọc bằng tiếng Việt. (Ví dụ: 1.200.000 thì đọc là: Một triệu, hai trăm ngàn đô la Mỹ). VBA này em sửa từ VBA đọc tiền tiếng việt, nhưng vì quản lý tiền USD người ta quản lý đến cả cent mà VBA này nó toàn làm tròn số nên dù đằng sau dấu phẩy có số thì nó vẫn không đọc thêm cent được. Vậy em nhờ các anh sửa hộ em để khi em có số 1.200,5 thì nó đọc cho em là Một ngàn hai trăm đô la Mỹ và năm mươi cent hoặc 1.200,05 thì nó đọc cho em là Một ngàn hai trăm đô la Mỹ và năm cent. Em cảm ơn rất nhiều. Sau đây là đoạn code VBA:
Mã:
Public Function VND_US(conso) As String
s09 = Array("", " mét", " hai", " ba", " bèn", " n¨m", " s¸u", " b¶y", " t¸m", " chÝn")
lop3 = Array("", " triÖu,", " ngh×n,", " tû,", " triÖu,", " ngh×n,", "")
If Trim(conso) = "" Then
VND_US = ""
ElseIf IsNumeric(conso) = True Then
If conso < 0 Then dau = "©m " Else dau = ""
conso = Application.WorksheetFunction.Round(Abs(conso), 0)
conso = " " & conso
conso = Replace(conso, ",", "", 1)
vt = InStr(1, conso, "E")
If vt > 0 Then
sonhan = Val(Mid(conso, vt + 1))
conso = Trim(Mid(conso, 2, vt - 2))
conso = conso & String(sonhan - Len(conso) + 1, "0")
End If
conso = Trim(conso)
sochuso = Len(conso) Mod 9
If sochuso > 0 Then conso = String(9 - (sochuso Mod 12), "0") & conso
docso = ""
I = 1
lop = 1
Do
n1 = Mid(conso, I, 1)
n2 = Mid(conso, I + 1, 1)
n3 = Mid(conso, I + 2, 1)
baso = Mid(conso, I, 3)
I = I + 3
If n1 & n2 & n3 = "000" Then
If docso <> "" And lop = 3 And Len(conso) - I > 2 Then s123 = " tû" Else s123 = ""
Else
If n1 = 0 Then
If docso = "" Then s1 = "" Else s1 = " kh«ng tr¨m"
Else
s1 = s09(n1) & " tr¨m"
End If
If n2 = 0 Then
If s1 = "" Or n3 = 0 Then
s2 = ""
Else
s2 = " linh"
End If
Else
If n2 = 1 Then s2 = " m¬i" Else s2 = s09(n2) & " m¬i"
'If n2 = 1 Then s2 = " m­êi" Else s2 = s09(n2) & " m­¬i"
End If
If n3 = 1 Then
If n2 = 1 Or n2 = 0 Then s3 = " mét" Else s3 = " mèt"
ElseIf n3 = 5 And n2 <> 0 Then
s3 = " l¨m"
Else
s3 = s09(n3)
End If
If I > Len(conso) Then
s123 = s1 & s2 & s3
Else
s123 = s1 & s2 & s3 & lop3(lop)
End If
End If
lop = lop + 1
If lop > 3 Then lop = 1
docso = docso & s123
If I > Len(conso) Then Exit Do
Loop
If docso = "" Then
VND_US = "kh«ng" 'Else VND_US = dau & Trim(docso)
Else: docso = Trim(docso): VND_US = dau & UCase(Left(docso, 1)) + Right(docso, Len(docso) - 1): End If
Else
VND_US = conso
End If
VND_US = VND_US & " ®« la Mü"
VND_US = Replace(VND_US, ", ®« la Mü", " ®« la Mü")
End Function