Hàm đọc số ra chữ không chạy được

Liên hệ QC

phuonglvg

Thành viên mới
Tham gia
28/6/08
Bài viết
2
Được thích
1
Kính gởi diễn đàn! Em là thành viên mới của diễn đàn nên việc tham gia cùng diễn đàn không rành. Nên em gởi câu hỏi của em tại chổ này có đúng không? Nếu sai mong diễn đàn hướng dẫn giúp em, và thông cảm?

Em có chép lại của người khác một đoạn code để độc số ra chữ dạng Uni, nhưng khi chép xong thì code không chạy được, em đã kiểm tra và tìm lỗi nhưng không phát hiện được là lỗi chổ nào. Em nhờ diễn đàn giúp em. (có file đính kèm)
Em muốn code đọc số ra chữ dạng Uni, khi đọc ra chữ phải có chữ "đồng" phía sau.
 
Bạn vào cửa số Vísual basic nơi chứa Code (double nick vao module) nhấn Ctrl G, sau đó gõ cú pháp hàm (so tien). Vdụ tên hàm là VND, ban gõ ?VND(123546), enter, nếu có lõi nó sẽ hiện ra vàng khè, bạn đưa lỗi đó lên diễn đàn. Ngoai ra, con nhieu nguyen nhan khac nua.
 
Hàm đọc số tiền ra chữ không giới hạn.

Kính gởi diễn đàn! Em là thành viên mới của diễn đàn nên việc tham gia cùng diễn đàn không rành. Nên em gởi câu hỏi của em tại chổ này có đúng không? Nếu sai mong diễn đàn hướng dẫn giúp em, và thông cảm?

Em có chép lại của người khác một đoạn code để độc số ra chữ dạng Uni, nhưng khi chép xong thì code không chạy được, em đã kiểm tra và tìm lỗi nhưng không phát hiện được là lỗi chổ nào. Em nhờ diễn đàn giúp em. (có file đính kèm)
Em muốn code đọc số ra chữ dạng Uni, khi đọc ra chữ phải có chữ "đồng" phía sau.

Gửi bạn Add-in hàm đọc số tiền VND sử dụng bảng mã Unicode Made in tự tui :-=.
Hàm này có thể đọc số tiền lên đến 999 tỷ tỷ tỷ. Nếu nhu cầu sử dụng vượt quá số này thì có thể sửa code lại một chút là có thể nâng giới hạn lên thêm bao nhiêu cũng đc.

Bạn tải về, nạp Add-in và sử dụng hàm với cấu trúc: VND(số tiền)
Chúc vui!
 

File đính kèm

  • VND.rar
    10.6 KB · Đọc: 258
Lần chỉnh sửa cuối:
em kiếm được đoạn code này (theo Ngọc Thanh-vnexpress) khá chuẩn cho 3 font chữ nhưng cuối dòng đọc không có chữ "đồng" có anh chị nào giúp em được không (thêm chữ "đồng" vào cuối)


*Ghi chú:
A2 = NumberToText(A1,0) 'Hàm định dạng Font Windows-VNI (Vni-Times)
A2=NumberToText(A1,1) 'Hàm định dạng Font ABC (VNTimes)
A2=NumberToText(A1,2) 'Hàm định dạng Font Unicode (Tahoma)






Public Enum Font_Codes
Font_VNI = 0
Font_ABC = 1
Font_Unicode = 2
End Enum
Public Function NumberToText(ByVal varVal As Variant, Optional ByVal Code As Font_Codes) As String
On Error GoTo Pro_Err
Static sDVs(0 To 15) As String
Static sDVNs(0 To 9) As String
Dim strErr As String
Dim sTens As String
Dim sHundred As String
Dim strDong As String
Dim strDolla As String
Dim sVal As String
Dim iVal As Integer
Dim i As Integer
Dim iCol As Integer
Dim iChar As Integer
Dim sTemp As String
Dim iScan As Integer
Dim strCurrency As String

Select Case Code
Case 0
sDVs(0) = " khoâng"
sDVs(1) = " moät"
sDVs(2) = " hai"
sDVs(3) = " ba"
sDVs(4) = " boán"
sDVs(5) = " naêm"
sDVs(6) = " saùu"
sDVs(7) = " baûy"
sDVs(8) = " taùm"
sDVs(9) = " chín"
sDVs(10) = " möôøi"
sDVs(11) = " moát"
sDVs(12) = " leû"
sDVs(13) = ""
sDVs(14) = " tö"
sDVs(15) = " laêm"

sDVNs(0) = ""
sDVNs(1) = " nghìn,"
sDVNs(2) = " trieäu,"
sDVNs(3) = " tyû,"
sDVNs(4) = " nghìn tyû,"
sDVNs(5) = " trieäu tyû,"
sDVNs(6) = " tyû tyû,"
sDVNs(7) = " nghìn tyû tyû,"
sDVNs(8) = " trieäu tyû tyû,"
sDVNs(9) = " tyû tyû tyû,"

strErr = " Loãi nhaäp!"
strEven = " chaün"
sHundred = " traêm"
sTens = " möôi"
strDong = " ñoàng"
strDolla = " ñoâ la"

Case 1
sDVs(0) = " kh«ng"
sDVs(1) = " mét"
sDVs(2) = " hai"
sDVs(3) = " ba"
sDVs(4) = " bèn"
sDVs(5) = " n¨m"
sDVs(6) = " s¸u"
sDVs(7) = " b¶y"
sDVs(8) = " t¸m"
sDVs(9) = " chÝn"
sDVs(10) = " m­êi"
sDVs(11) = " mèt"
sDVs(12) = " lÎ"
sDVs(13) = ""
sDVs(14) = " t­"
sDVs(15) = " l¨m"

sDVNs(0) = ""
sDVNs(1) = " ngh×n,"
sDVNs(2) = " triÖu,"
sDVNs(3) = " tû,"
sDVNs(4) = " ngh×n tû,"
sDVNs(5) = " triÖu tû,"
sDVNs(6) = " tû tû,"
sDVNs(7) = " ngh×n tû tû,"
sDVNs(8) = " triÖu tû tû,"
sDVNs(9) = " tû tû tû,"

strErr = " Lçi nhËp!"
strEven = " ch½n"
sHundred = " tr¨m"
sTens = " m­¬i"
strDong = " ®ång"
strDolla = " ®« la"
Case 2
sDVs(0) = " kh" & ChrW$(&HF4) & "ng"
sDVs(1) = " m" & ChrW$(&H1ED9) & "t"
sDVs(2) = " hai"
sDVs(3) = " ba"
sDVs(4) = " b" & ChrW$(&H1ED1) & "n"
sDVs(5) = " n" & ChrW$(&H103) & "m"
sDVs(6) = " s" & ChrW$(&HE1) & "u"
sDVs(7) = " b" & ChrW$(&H1EA3) & "y"
sDVs(8) = " t" & ChrW$(&HE1) & "m"
sDVs(9) = " ch" & ChrW$(&HED) & "n"
sDVs(10) = " m" & ChrW$(&H1B0) & ChrW$(&H1EDD) & "i"
sDVs(11) = " m" & ChrW$(&H1ED1) & "t"
sDVs(12) = " l" & ChrW$(&H1EBB)
sDVs(13) = ""
sDVs(14) = " t" & ChrW$(&H1B0)
sDVs(15) = " l" & ChrW$(&H103) & "m"

sDVNs(0) = ""
sDVNs(1) = " ngh" & ChrW$(&HEC) & "n,"
sDVNs(2) = " tri" & ChrW$(&H1EC7) & "u,"
sDVNs(3) = " t" & ChrW$(&H1EF7) & ","
sDVNs(4) = " ngh" & ChrW$(&HEC) & "n" & " t" & ChrW$(&H1EF7) & ","
sDVNs(5) = " tri" & ChrW$(&H1EC7) & "u" & " t" & ChrW$(&H1EF7) & ","
sDVNs(6) = " t" & ChrW$(&H1EF7) & " t" & ChrW$(&H1EF7) & ","
sDVNs(7) = " ngh" & ChrW$(&HEC) & "n" & " t" & ChrW$(&H1EF7) & " t" & ChrW$(&H1EF7) & ","
sDVNs(8) = " tri" & ChrW$(&H1EC7) & "u" & " t" & ChrW$(&H1EF7) & " t" & ChrW$(&H1EF7) & ","
sDVNs(9) = " t" & ChrW$(&H1EF7) & " t" & ChrW$(&H1EF7) & " t" & ChrW$(&H1EF7) & ","

strErr = " L" & ChrW$(&H1ED7) & "i" & " nh" & ChrW$(&H1EAD) & "p!"
strEven = " ch" & ChrW$(&H1EB5) & "n"
sHundred = " tr" & ChrW$(&H103) & "m"
sTens = " m" & ChrW$(&H1B0) & ChrW$(&H1A1) & "i"
strDong = " " & ChrW$(&H111) & ChrW$(&H1ED3) & "ng"
strDolla = " " & ChrW$(&H111) & ChrW$(&HF4) & " la"

End Select
For iScan = 1 To Len(varVal)
If IsNumeric(Mid$(varVal, iScan, 1)) Then
sVal = sVal & Mid$(varVal, iScan, 1)
ElseIf Mid$(varVal, iScan, 1) = "$" Or UCase(Mid$(varVal, iScan, 3)) = "USA" Then
strCurrency = strDolla
ElseIf LCase(Mid$(varVal, iScan, Len("ñ"))) = "ñ" Or _
LCase(Mid$(varVal, iScan, Len("d"))) = "d" Or _
LCase(Mid$(varVal, iScan, Len("vnd"))) = "vnd" Or _
LCase(Mid$(varVal, iScan, 1)) = ChrW$(&H111) Or _
LCase(Mid$(varVal, iScan, Len("®"))) = "®" Then
strCurrency = strDong
End If
Next iScan

iVal = Len(sVal)

If iVal > 0 And iVal < 15 Then
sTemp = strCurrency
For i = iVal To 1 Step -1
iChar = Val(Mid$(sVal, i, 1))
iCol = iVal - (i - 1)
Select Case (iCol Mod 3)
Case 1
If iChar = 0 And iVal > 1 Then
If iVal = iCol + 1 Then
If Mid$(sVal, i - 1, 1) <> "0" Then
sTemp = sDVNs(iCol \ 3) & sTemp
End If
ElseIf iVal > iCol + 1 Then
If Val(Mid$(sVal, i - 2, 2)) > 0 Then
sTemp = sDVNs(iCol \ 3) & sTemp
End If
Else
sTemp = sTemp
End If
Else
If iChar = 1 And iVal > iCol Then
If Val(Mid$(sVal, i - 1, 1)) > 1 Then
iChar = 11
End If
ElseIf iChar = 4 And iVal > iCol Then
If Val(Mid$(sVal, i - 1, 1)) > 1 Then
iChar = 14
End If
ElseIf iChar = 5 And iVal > iCol Then
If Val(Mid$(sVal, i - 1, 1)) > 0 Then
iChar = 15
End If
End If
sTemp = sDVs(iChar) & sDVNs(iCol \ 3) & sTemp
End If
Case 2
If iChar > 1 Then
sTemp = sDVs(iChar) & sTens & sTemp
Else
If iChar = 1 Then
iChar = 10
ElseIf iChar = 0 And (Mid$(sVal, i + 1, 1) <> "0") Then
iChar = 12
Else
iChar = 13
End If
sTemp = sDVs(iChar) & sTemp
End If
Case 0
If iChar = 0 And ((Mid$(sVal, i + 1, 1) = "0") And (Mid$(sVal, i + 2, 1) = "0")) Then
sTemp = sTemp
Else
sTemp = sDVs(iChar) & sHundred & sTemp
End If
End Select
Next i
ElseIf iVal = 0 Then
sTemp = ""
End If
sTemp = Trim(sTemp)
If Right$(sTemp, 1) = "," Then
sTemp = Mid$(sTemp, 1, Len(sTemp) - 1)
End If
NumberToText = UCase$(Left$(sTemp, 1)) & Mid$(sTemp, 2)

Pro_Next:

Exit Function

Pro_Err:

GoTo Pro_Next
End Function
 
Kính gởi diễn đàn! Em là thành viên mới của diễn đàn nên việc tham gia cùng diễn đàn không rành. Nên em gởi câu hỏi của em tại chổ này có đúng không? Nếu sai mong diễn đàn hướng dẫn giúp em, và thông cảm?

Em có chép lại của người khác một đoạn code để độc số ra chữ dạng Uni, nhưng khi chép xong thì code không chạy được, em đã kiểm tra và tìm lỗi nhưng không phát hiện được là lỗi chổ nào. Em nhờ diễn đàn giúp em. (có file đính kèm)
Em muốn code đọc số ra chữ dạng Uni, khi đọc ra chữ phải có chữ "đồng" phía sau.

trời đất có file đính kèm đâu bạn ! đọc câu hỏi của bạn wá trời luôn không hiểu file đính kèm ở đâu. nhớ post lên để mình test thử nhé! có nhiều loại chuyển số thành chử mình chỉ thấy bạn yêu cầu là Fonts unicode thôi đúng không.
xem thử cái này nhé! chuyển số thành chử
 
Lần chỉnh sửa cuối:
ban muon co chu dong thi dat ham nhu sau

A2 = NumberToText(A1,0) & "đồng"

bạn có thể tùy biến bằng cách sử dụng cách cộng hàm tương tự như các hàm trong excel

VD: Tinh chan le

A2 = NumberToText(A1,0) & " đồng " & if(int(A1)> A1, " lẻ : " & A1 - int(A1) " chẵn")
 
Hi, mình có 1 thắc mắc là : làm thế nào thế nào để đưa ngày tháng năm chạy trên máy tính vào 1 ô trong 1 sheet , ai biết giúp mình nhé. thanks trước nha.
 
Bạn có thể nhập vào Ô =now() thử xem
 
Bạn dùng thử cách này xem =IF(COUNTA($D$2)<>0;NOW();"")
Ví dụ Tại Ô D2 là ô đích mà có dữ liệu thì ô bạn muốn cập nhật ngày tháng máy sẽ tự động cập nhật cho
 
Web KT

Bài viết mới nhất

Back
Top Bottom