Đọc số thành chữ có phần thập phân

Liên hệ QC

anhtuan1066

Thành viên gạo cội
Tham gia
10/3/07
Bài viết
5,802
Được thích
6,912
Có 1 bạn gữi mail cho tôi và hỏi rằng:
Chào Tuấn,
Xin được giúp đở: Tôi sưu tầm được code đọc số thập phân nhưng khi chạy bị lỗi.
Vui lòng xem và sữa lỗi code dùm.
(Yêu cầu: Lấy 1 số lẽ. VD: 1234.2, đọc: Một ngàn hai trăm ba mươi bốn phẩy hai; 1234.0, đọc: Một ngàn hai trăm ba mươi bốn).
Mình rất cần dùng để đọc số diện tích trong công việc!
Cảm ơn
Nói thật là tôi lên diển đàn bao lâu nay, gặp mấy vụ đọc số này hoài nhưng chưa từng xem qua bao giờ (vì ko có nhu cầu) nên cũng ko rành lắm (hay nói đúng hơn là mù tịt)
Tôi cũng search trên diển đàn nhưng sao ko thấy code nào có đọc số thập phân nhỉ?
Vậy nhờ các cao thủ xem giúp, code trong file đính kèm phải sửa như thế nào?... Hoặc biết đường link ở đâu thì chỉ hộ!
Xin chân thành cảm ơn!
ANH TUẤN
 

File đính kèm

cảm ơn bạn mình đã chép code của bạn thấy chạy rất hay
 
Upvote 0
Font unicode đây, muốn đọc gì cũng được.
 
Upvote 0
e cũng có 1 chương trình đọc số thập phân nhỏ gọn nhưng ko biết phải update như thế nào để các bác tham khảo
 
Upvote 0
Mình tìm được code này của thầy Phạm Duy Long :
Mã:
[COLOR=#000000]Function DocSo(Number As String, Optional DonVi As String = "", Optional Le As String = "", Optional Phay As String = "", Optional Hoa As Boolean = True) As String[/COLOR]Dim arNum, arGrp, dInt As String, dau As String, dvInt As String, s123 As String
Dim s1 As String, s2 As String, s3 As String, sNhom As String
Dim nId As Long, n03 As Long, n1 As Long, n2 As Long, n3 As Long
[COLOR=blue]arNum = Array(" không", " m" & ChrW(7897) & "t", " hai", " ba", " b" & ChrW(7889) & "n", " n" & ChrW(259) & "m", " sáu", " b" & ChrW(7843) & "y", " tám", " chín", " m" & ChrW(432) & ChrW(7901) & "i", " m" & ChrW(432) & ChrW(417) & "i", " m" & ChrW(7889) & "t", " l" & ChrW(7867), " b" & ChrW(7889) & "n", " l" & ChrW(259) & "m", " ch" & ChrW(7859) & "n", " không", ",", " l" & ChrW(7867))[/COLOR]
[COLOR=blue]arGrp = Array(" tr" & ChrW(259) & "m", " tri" & ChrW(7879) & "u", " ngàn", " t" & ChrW(7927), " âm", "", "")[/COLOR]
On Error GoTo baoloi
If Phay <> "" Then arGrp(5) = Trim(Phay)
If DonVi <> "" Then arGrp(6) = " " & Trim(DonVi)
If Le <> "" Then arNum(13) = " " & Trim(Le)
If Number < 0 Then
  Number = Abs(Number)
  dau = arGrp(4)
End If
dvInt = Int(Number)
n1 = ((Len(Str(dvInt)) - 1) Mod 9)
dvInt = String(9 - (((Len(Str(dvInt)) - 1) Mod 9) Mod 12), "0") & dvInt
n03 = 1
For nId = 1 To Len(dvInt) Step 3
  s1 = "": s2 = "": s3 = "": sNhom = ""
  If Mid(dvInt, nId, 3) = "000" Then
    s123 = ""
    [COLOR=red]If dInt <> "" And nId = 7 Then dInt = dInt & arGrp(3)[/COLOR]
  Else
    n1 = Mid(dvInt, nId, 1)
    n2 = Mid(dvInt, nId + 1, 1)
    n3 = Mid(dvInt, nId + 2, 1)
    If n1 = 0 And dInt <> "" Then s1 = arNum(0) & arGrp(0)
    If n1 > 0 Then s1 = arNum(n1) & arGrp(0)
    If n2 = 0 And (s1 = "" Or n3 = 0) Then s2 = ""
    If n2 = 0 And s1 <> "" And n3 > 0 Then s2 = arNum(13)
    If n2 = 1 Then s2 = arNum(10)
    If n2 > 1 Then s2 = arNum(n2) & arNum(11)
    If n3 = 1 And n2 <= 1 Then s3 = arNum(1)
    If n3 = 1 And n2 > 1 Then s3 = arNum(12)
    If n3 = 5 And n2 = 0 Then s3 = arNum(5)
    If n3 = 5 And n2 <> 0 Then s3 = arNum(15)
    If s3 = "" And n3 > 0 Then s3 = arNum(n3)
    s123 = s1 & s2 & s3
    If n03 = 3 And (dInt <> "" Or s123 <> "") And Len(dvInt) - nId > 9 Then sNhom = arGrp(3)
    If sNhom = "" And n03 < 3 Then sNhom = arGrp(n03)
    s123 = s123 & sNhom
    dInt = dInt & s123 & arGrp(5)
  End If
  If n03 = 3 Then n03 = 1 Else n03 = n03 + 1
Next
If dInt = "" Then dInt = arNum(0) Else dInt = dau & dInt
If Right(dInt, 1) = arGrp(5) Then dInt = Left(dInt, Len(dInt) - 1)
If Hoa = True Then
  DocSo = UCase(Left(Trim(dInt), 1)) & Mid(Trim(dInt) & arGrp(6), 2)
Else
  DocSo = Trim(dInt) & arGrp(6)
End If
Exit Function
baoloi:
DocSo = Number & " ?" [COLOR=#000000]End Function[/COLOR]
Xin hỏi nếu muốn thêm chữ "chẵn" và dấu chấm (.) vào sau chữ "đồng"
Ví dụ : Một trăm triệu, hai trăm tám mươi ngàn đồng chẵn.
Thì làm thế nào
 
Lần chỉnh sửa cuối:
Upvote 0
Bài #23 lỗi không vào được, có bác nào có code đọc số thập phân không cho em xin với. Dùng VN tool nhưng nó toàn làm tròn vd:2.1 thì nó đọc là hai phảy mười, em muốn code đọc theo số theo nhiều số sau dấu phảy hoặc chỉ đọc theo số hiển thị vd: cài đặt là 3 số LUÔN ĐỌC LÀ NGHÌN, vd 2.1 đọc là hai phảy một nghìn; lựa chọn 2 là đọc theo cách hiển thị: vb các giá trị 2.1; 2.21;2.123 đọc là hai phảy một; hai phảy hai mươi mốt; hai phảy một trăm hai mươi ba
 
Upvote 0
Em chỉ nung nấu lại code thôi, cảm ơn Tác giả (nhiều Tác giả, nhiều lần cảm ơn).
 

File đính kèm

Upvote 0
Vẫn chưa ổn lắm bạn ơi.
VD: 1,02 theo mình nên đọc là "Một phẩy không hai" mới chính xác, trong khi hàm lại trả về: "Một phẩy hai".
 
Upvote 0
Có 1 bạn gữi mail cho tôi và hỏi rằng:

Nói thật là tôi lên diển đàn bao lâu nay, gặp mấy vụ đọc số này hoài nhưng chưa từng xem qua bao giờ (vì ko có nhu cầu) nên cũng ko rành lắm (hay nói đúng hơn là mù tịt)
Tôi cũng search trên diển đàn nhưng sao ko thấy code nào có đọc số thập phân nhỉ?
Vậy nhờ các cao thủ xem giúp, code trong file đính kèm phải sửa như thế nào?... Hoặc biết đường link ở đâu thì chỉ hộ!
Xin chân thành cảm ơn!
ANH TUẤN
sao bạn ko tải phần mềm VN-tool cho khỏe ?
 
Upvote 0
Web KT

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

Back
Top Bottom