• Giúp tôi Modules đọc số này với
  • Giúp tôi Modules đọc số này với

    xndt > 08-05-17, 11:35 AM

    Tôi có đoạn mã ở dưới. Vấn đề ở chỗ khi đọc số m2 bị lỗi hiện tượng sau:
    - VD1: 42 m2 nó đọc là: (Bốn mươi hai phẩy không m2) cái này rất đúng;
    - VD1: 42,7 m2 nó đọc thành (Bốn mươi hai phẩy bảy mươi m2)
    - VD2: 42, 73 m2 nó đọc thành (Bốn mươi hai phẩy bảy mươi ba m2)
    - VD4: 42,1 m2 nó đọc thành[i] (Bốn mươi hai phẩy mươi m2)[/i]
    Tôi chỉ muốn nó đọc là (Bốn mươi hai phẩy bảy m2) hoặc (Bốn mươi hai phẩy bảy ba m2) hoặc[i] [i](Bốn mươi hai phẩy một m2)[/i][/i]
    Mong các cao thủ giúp đỡ.


    Public Function MET2(SoLuong)
    Dim KetQua, SoTien, Nhom, Chu, Dich, S1, S2, S3 As String
    Dim n, k, ViTri As Byte, S As Double
    Dim Hang, DonVi, Dem
        If SoLuong = 0 Then '1
            KetQua = "Không m2"
        Else
            If Abs(SoLuong) > 1E+15 Then '2
                KetQua = "Số quá lớn"
            Else
                If SoLuong < 0 Then
                    KetQua = "Trừ" & Space(1)
                Else
                    KetQua = Space(0)
                End If
                    SoTien = Format(Abs(SoLuong), "#################0.00")
                    SoTien = Right(Space(15) & SoTien, 18)
                    Hang = Array("None", "trăm", "mươi", "gì đó")
                    DonVi = Array("None", "ngàn tỷ", "tỷ", "triệu", "ngàn", "phẩy", "m2")
                    Dem = Array("None", "một", "hai", "ba", "bốn", "năm", "sáu", "bảy", "tám", "chín")
                    For n = 1 To 6
                        Nhom = Mid(SoTien, n * 3 - 2, 3)
                        If Nhom <> Space(3) Then
                            Select Case Nhom
                                Case "000"
                                    If n = 5 Then
                                        Chu = "phẩy" & Space(1)
                                        'Chu = "m2" & Space(1)
                                    Else
                                        Chu = Space(0)
                                    End If
                                Case ".00", ",00"
                                    Chu = "không m2"
                                Case Else
                                    S1 = Left(Nhom, 1): S2 = Mid(Nhom, 2, 1): S3 = Right(Nhom, 1)
                                    Chu = Space(0): Hang(3) = DonVi(n)
                                    For k = 1 To 3
                                        Dich = Space(0): S = Val(Mid(Nhom, k, 1))
                                        If S > 0 Then
                                            Dich = Dem(S) & Space(1) & Hang(k) & Space(1)
                                        Else
                                            If k = 1 And n > 1 And n < 6 And Val(Mid(SoTien, (n - 1) * 3 - 2, 3)) > 0 Then
                                                Dich = "không" & Space(1) & Hang(k) & Space(1)
                                            End If
                                        End If
                                    Select Case k
                                        Case 2 And S = 1
                                            Dich = "mươì" & Space(1)
                                        Case 3 And S = 0 And Nhom <> Space(2) & "0"
                                            Dich = Hang(k) & Space(1)
                                        Case 3 And S = 5 And Val(S2) > 0
                                            Dich = "l" & Mid(Dich, 2)
                                        Case 2 And S = 0 And S3 <> "0"
                                            If n > 1 And Val(Mid(SoTien, (n - 1) * 3 - 2, 3)) > 0 Or (Val(S1) > 0) Then
                                                Dich = "không" & Space(1)
                                            End If
                                    End Select
                                    Chu = Chu & Dich
                                    Next k
                            End Select
                            ViTri = InStr(1, Chu, "mươi một")
                            If ViTri > 0 Then
                                Mid(Chu, ViTri, 9) = "mươi mốt"
                            End If
                                KetQua = KetQua & Chu
                       End If '4
                    Next n
            End If '2
        End If '1
        MET2 = UCase(Left(KetQua, 1)) & Trim(Mid(KetQua, 2))
    End Function
  • RE: Giúp tôi Modules đọc số này với

    maidinhdan > 08-05-17, 10:05 PM

    (08-05-17, 11:35 AM)xndt Đã viết: Tôi có đoạn mã ở dưới. Vấn đề ở chỗ khi đọc số m2 bị lỗi hiện tượng sau:
    - VD1: 42 m2 nó đọc là: (Bốn mươi hai phẩy không m2) cái này rất đúng;
    - VD1: 42,7 m2 nó đọc thành (Bốn mươi hai phẩy bảy mươi m2)
    - VD2: 42, 73 m2 nó đọc thành (Bốn mươi hai phẩy bảy mươi ba m2)
    - VD4: 42,1 m2 nó đọc thành[i] (Bốn mươi hai phẩy mươi m2)[/i]
    Tôi chỉ muốn nó đọc là (Bốn mươi hai phẩy bảy m2) hoặc (Bốn mươi hai phẩy bảy ba m2) hoặc[i] [i](Bốn mươi hai phẩy một m2)[/i][/i]
    Mong các cao thủ giúp đỡ.

    Trả lời:
    1. Hàm của bạn không có lỗi gì cả, bởi nó làm việc đúng theo ý nghĩa của nó là đọc đến 2 số lẻ thập phân.
    2. Cách khắc phục. ( chỉ Chọn 1 trong 2cách dưới đây)
    + Chỉ đọc đến 1 số lẻ thập phân
    + Hoặc chỉ đọc đến 2 số lẻ thập phân.

    Lý do vì sao như thế: Bởi khi bạn format ô textbox có số liệu của bạn, về mặt hiển tuy là 42 or 42,7 thì khi dùng hàm này nó vẫn đọc là 42,00 và 42,70 ---> Đây là cơ chế của hàm này.

    Hoặc khi bạn chỉnh lại hàm để đọc 1 số lẻ thập phân thì cũng tương tự nó sẽ đọc là 42,0 và 42,7. Nó không thể nào lúc thì đọc 1 số lúc thì đọc 2 số được đâu.

    Bạn hãy suy nghĩ và chọn cho mình theo ý số 2 mình nói trên.
    Thân mên!
  • RE: Giúp tôi Modules đọc số này với

    xndt > 09-05-17, 05:47 PM

    Cám ơn bạn maidinhdan nhiều! vấn đề là bạn có thể giúp tôi cái: VD4: 42,1 m2 nó đọc thành[i] (Bốn mươi hai phẩy mươi m2) được không?[/i]
  • RE: Giúp tôi Modules đọc số này với

    tranthanhan1962 > 09-05-17, 07:48 PM

    (09-05-17, 05:47 PM)xndt Đã viết: Cám ơn bạn maidinhdan nhiều! vấn đề là bạn có thể giúp tôi cái: VD4: 42,1 m2 nó đọc thành[i] (Bốn mươi hai phẩy mươi m2) được không?[/i]
    Để làm được điều này phải viết một mod khác chứ không sửa được bạn ạ! Mod đọc số thành chữ là một mod rất khó, rất phức tạp nên cũng không phải ai có đủ thời gian và kiên nhẫn để viết đâu bạn. Mod bạn đang sử dụng là của bác Ông Văn Thông viết (bác Thông là tổ sư bồ đề access đấy bạn). Mod này ngày xưa bác Thông viết cho font VNI  sau này khi sử dụng font Unicode thì bị lỗi, vì thể nhiều người sử dụng cố gắng viết các mod khác nhưng không mod nào hoàn chỉnh như mod này bác Thông. Mình cũng sử dụng mod này để đọc số bằng cách dịch mã font Unicode rồi chuyển vào sử các từ đọc số. Do bác Thông sử định dang số để dịch nên dù bạn có sử dụng #.000,# thì khi chạy code nó vẫn chuyển thành #.000,00 như bạn Dân nói và không xử lý kiểu của bạn được. Bạn muốn viết mod theo ý bạn thì phải dùng chuyễn sang định text, nhưng nếu chuyển sang định dạng text mà format số kiểu Mỹ 0,000.00 thì code sẽ dịch bậy. Một và hai con số lẽ của bạn không đơn giản đâu.
  • RE: Giúp tôi Modules đọc số này với

    nhannt4 > 10-05-17, 04:41 PM

    (08-05-17, 11:35 AM)xndt Đã viết: Tôi có đoạn mã ở dưới. Vấn đề ở chỗ khi đọc số m2 bị lỗi hiện tượng sau:
    - VD1: 42 m2 nó đọc là: (Bốn mươi hai phẩy không m2) cái này rất đúng;
    - VD1: 42,7 m2 nó đọc thành (Bốn mươi hai phẩy bảy mươi m2)
    - VD2: 42, 73 m2 nó đọc thành (Bốn mươi hai phẩy bảy mươi ba m2)
    - VD4: 42,1 m2 nó đọc thành[i] (Bốn mươi hai phẩy mươi m2)[/i]
    Tôi chỉ muốn nó đọc là (Bốn mươi hai phẩy bảy m2) hoặc (Bốn mươi hai phẩy bảy ba m2) hoặc[i] [i](Bốn mươi hai phẩy một m2)[/i][/i]
    Mong các cao thủ giúp đỡ.


    Public Function MET2(SoLuong)
    Dim KetQua, SoTien, Nhom, Chu, Dich, S1, S2, S3 As String
    Dim n, k, ViTri As Byte, S As Double
    Dim Hang, DonVi, Dem
        If SoLuong = 0 Then '1
            KetQua = "Không m2"
        Else
            If Abs(SoLuong) > 1E+15 Then '2
                KetQua = "Số quá lớn"
            Else
                If SoLuong < 0 Then
                    KetQua = "Trừ" & Space(1)
                Else
                    KetQua = Space(0)
                End If
                    SoTien = Format(Abs(SoLuong), "#################0.00")
                    SoTien = Right(Space(15) & SoTien, 18)
                    Hang = Array("None", "trăm", "mươi", "gì đó")
                    DonVi = Array("None", "ngàn tỷ", "tỷ", "triệu", "ngàn", "phẩy", "m2")
                    Dem = Array("None", "một", "hai", "ba", "bốn", "năm", "sáu", "bảy", "tám", "chín")
                    For n = 1 To 6
                        Nhom = Mid(SoTien, n * 3 - 2, 3)
                        If Nhom <> Space(3) Then
                            Select Case Nhom
                                Case "000"
                                    If n = 5 Then
                                        Chu = "phẩy" & Space(1)
                                        'Chu = "m2" & Space(1)
                                    Else
                                        Chu = Space(0)
                                    End If
                                Case ".00", ",00"
                                    Chu = "không m2"
                                Case Else
                                    S1 = Left(Nhom, 1): S2 = Mid(Nhom, 2, 1): S3 = Right(Nhom, 1)
                                    Chu = Space(0): Hang(3) = DonVi(n)
                                    For k = 1 To 3
                                        Dich = Space(0): S = Val(Mid(Nhom, k, 1))
                                        If S > 0 Then
                                            Dich = Dem(S) & Space(1) & Hang(k) & Space(1)
                                        Else
                                            If k = 1 And n > 1 And n < 6 And Val(Mid(SoTien, (n - 1) * 3 - 2, 3)) > 0 Then
                                                Dich = "không" & Space(1) & Hang(k) & Space(1)
                                            End If
                                        End If
                                    Select Case k
                                        Case 2 And S = 1
                                            Dich = "mươì" & Space(1)
                                        Case 3 And S = 0 And Nhom <> Space(2) & "0"
                                            Dich = Hang(k) & Space(1)
                                        Case 3 And S = 5 And Val(S2) > 0
                                            Dich = "l" & Mid(Dich, 2)
                                        Case 2 And S = 0 And S3 <> "0"
                                            If n > 1 And Val(Mid(SoTien, (n - 1) * 3 - 2, 3)) > 0 Or (Val(S1) > 0) Then
                                                Dich = "không" & Space(1)
                                            End If
                                    End Select
                                    Chu = Chu & Dich
                                    Next k
                            End Select
                            ViTri = InStr(1, Chu, "mươi một")
                            If ViTri > 0 Then
                                Mid(Chu, ViTri, 9) = "mươi mốt"
                            End If
                                KetQua = KetQua & Chu
                       End If '4
                    Next n
            End If '2
        End If '1
        MET2 = UCase(Left(KetQua, 1)) & Trim(Mid(KetQua, 2))
    End Function


    Bạn xem các Module sau có phải bạn đang cần:

    Mã PHP:
    Option Compare Database

    Public Function metvuong(ByVal giatriso) As String
       Dim giatri 
    As String
       Dim S1
    S2docphannguyendocphanle As String
       
       giatri 
    Format(Abs(giatriso), "##0.00")
       
       S1 
    Left(giatriInStr(giatri",") - 1)
       docphannguyen DocSoUni(S1)
       
       S2 
    Right(giatri2)
       Select Case S2
           Case 
    "00"
               docphanle DocSoUni("0")
           Case Else
               If Left(S21) = "0" Then
                   docphanle 
    DocSoUni("0") & " " DocSoUni(Right(S21))
               Else
                   If Right
    (S21) = "0" Then
                       docphanle 
    DocSoUni(Left(S21))
                   Else
                       docphanle 
    DocSoUni(S2)
                   End If
               End If
       End Select
           
       metvuong 
    docphannguyen " " Form_Frtest.lbPhay.Caption " " docphanle " " Form_Frtest.lbM2.Caption
       metvuong 
    Inhoachucaidau(metvuong)
    End Function

    Public Function 
    DocSoUni(ByVal conso) As String
    s09 
    = Array(""" m" ChrW(7897) & "t"" hai"" ba"" b" ChrW(7889) & "n"" n" ChrW(259) & "m"" s" ChrW(225) & "u"" b" ChrW(7843) & "y"" t" ChrW(225) & "m"" ch" ChrW(237) & "n")
    lop3 = Array(""" tri" ChrW(7879) & "u"" ngh" ChrW(236) & "n"" t" ChrW(7927))
    Dim docsos123 As String

    If Trim(conso) = "" Then
     DocSoUni 
    ""
    ElseIf IsNumeric(conso) = True Then
     If conso 
    0 Then dau ChrW(226) & "m " Else dau ""
     conso Abs(conso)
     conso " " conso
     conso 
    Replace(conso","""1)
     vt InStr(1conso"E")
     If vt 0 Then
       sonhan 
    Val(Mid(consovt 1))
       conso Trim(Mid(conso2vt 2))
       conso conso String(sonhan Len(conso) + 1"0")
     End If
     conso Trim(conso)
     sochuso Len(consoMod 9
     If sochuso 
    0 Then conso String(- (sochuso Mod 12), "0") & conso
     docso 
    ""
     i 1
     lop 
    1
     Do
       n1 
    Mid(consoi1)
       n2 Mid(conso11)
       n3 Mid(conso21)
       baso Mid(consoi3)
       i 3
       If n1 
    n2 n3 "000" Then
         If docso 
    <> "" And lop And Len(conso) - 2 Then s123 " t" ChrW(7927) Else s123 ""
       Else
         If n1 
    0 Then
           If docso 
    "" Then S1 "" Else S1 " kh" ChrW(244) & "ng tr" ChrW(259) & "m"
         Else
           S1 
    s09(n1) & " tr" ChrW(259) & "m"
         End If
         If n2 0 Then
           If S1 
    "" Or n3 0 Then
             S2 
    ""
           Else
             S2 
    " l" ChrW(7867)
           End If
         Else
           If n2 
    1 Then S2 " m" ChrW(432) & ChrW(7901) & "i" Else S2 s09(n2) & " m" ChrW(432) & ChrW(417) & "i"
         End If
         If n3 1 Then
           If n2 
    Or n2 0 Then S3 " m" ChrW(7897) & "t" Else S3 " m" ChrW(7889) & "t"
         ElseIf n3 And n2 <> 0 Then
           S3 
    " l" ChrW(259) & "m"
         Else
           S3 
    s09(n3)
         End If
         If i Len(consoThen
           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(consoThen Exit Do
     Loop
     If docso 
    "" Then DocSoUni "kh" ChrW(244) & "ng" Else DocSoUni dau Trim(docso)
    Else
     DocSoUni conso
    End 
    If
    End Function

    Function 
    Inhoachucaidau(Word As Variant) As String
      Dim temp 
    As String
      
      
    If IsNull(WordThen
         Exit 
    Function
       Else
           temp 
    CStr(LCase(LTrim(Word)))
           Inhoachucaidau UCase(Left(temp1)) & Right(tempLen(temp) - 1)
       End If
    End Function 

    File Demo.
  • RE: Giúp tôi Modules đọc số này với

    xndt > 10-05-17, 05:44 PM

    (10-05-17, 04:41 PM)nhannt4 Đã viết:
    (08-05-17, 11:35 AM)xndt Đã viết: Tôi có đoạn mã ở dưới. Vấn đề ở chỗ khi đọc số m2 bị lỗi hiện tượng sau:
    - VD1: 42 m2 nó đọc là: (Bốn mươi hai phẩy không m2) cái này rất đúng;
    - VD1: 42,7 m2 nó đọc thành (Bốn mươi hai phẩy bảy mươi m2)
    - VD2: 42, 73 m2 nó đọc thành (Bốn mươi hai phẩy bảy mươi ba m2)
    - VD4: 42,1 m2 nó đọc thành[i] (Bốn mươi hai phẩy mươi m2)[/i]
    Tôi chỉ muốn nó đọc là (Bốn mươi hai phẩy bảy m2) hoặc (Bốn mươi hai phẩy bảy ba m2) hoặc[i] [i](Bốn mươi hai phẩy một m2)[/i][/i]
    Mong các cao thủ giúp đỡ.


    Public Function MET2(SoLuong)
    Dim KetQua, SoTien, Nhom, Chu, Dich, S1, S2, S3 As String
    Dim n, k, ViTri As Byte, S As Double
    Dim Hang, DonVi, Dem
        If SoLuong = 0 Then '1
            KetQua = "Không m2"
        Else
            If Abs(SoLuong) > 1E+15 Then '2
                KetQua = "Số quá lớn"
            Else
                If SoLuong < 0 Then
                    KetQua = "Trừ" & Space(1)
                Else
                    KetQua = Space(0)
                End If
                    SoTien = Format(Abs(SoLuong), "#################0.00")
                    SoTien = Right(Space(15) & SoTien, 18)
                    Hang = Array("None", "trăm", "mươi", "gì đó")
                    DonVi = Array("None", "ngàn tỷ", "tỷ", "triệu", "ngàn", "phẩy", "m2")
                    Dem = Array("None", "một", "hai", "ba", "bốn", "năm", "sáu", "bảy", "tám", "chín")
                    For n = 1 To 6
                        Nhom = Mid(SoTien, n * 3 - 2, 3)
                        If Nhom <> Space(3) Then
                            Select Case Nhom
                                Case "000"
                                    If n = 5 Then
                                        Chu = "phẩy" & Space(1)
                                        'Chu = "m2" & Space(1)
                                    Else
                                        Chu = Space(0)
                                    End If
                                Case ".00", ",00"
                                    Chu = "không m2"
                                Case Else
                                    S1 = Left(Nhom, 1): S2 = Mid(Nhom, 2, 1): S3 = Right(Nhom, 1)
                                    Chu = Space(0): Hang(3) = DonVi(n)
                                    For k = 1 To 3
                                        Dich = Space(0): S = Val(Mid(Nhom, k, 1))
                                        If S > 0 Then
                                            Dich = Dem(S) & Space(1) & Hang(k) & Space(1)
                                        Else
                                            If k = 1 And n > 1 And n < 6 And Val(Mid(SoTien, (n - 1) * 3 - 2, 3)) > 0 Then
                                                Dich = "không" & Space(1) & Hang(k) & Space(1)
                                            End If
                                        End If
                                    Select Case k
                                        Case 2 And S = 1
                                            Dich = "mươì" & Space(1)
                                        Case 3 And S = 0 And Nhom <> Space(2) & "0"
                                            Dich = Hang(k) & Space(1)
                                        Case 3 And S = 5 And Val(S2) > 0
                                            Dich = "l" & Mid(Dich, 2)
                                        Case 2 And S = 0 And S3 <> "0"
                                            If n > 1 And Val(Mid(SoTien, (n - 1) * 3 - 2, 3)) > 0 Or (Val(S1) > 0) Then
                                                Dich = "không" & Space(1)
                                            End If
                                    End Select
                                    Chu = Chu & Dich
                                    Next k
                            End Select
                            ViTri = InStr(1, Chu, "mươi một")
                            If ViTri > 0 Then
                                Mid(Chu, ViTri, 9) = "mươi mốt"
                            End If
                                KetQua = KetQua & Chu
                       End If '4
                    Next n
            End If '2
        End If '1
        MET2 = UCase(Left(KetQua, 1)) & Trim(Mid(KetQua, 2))
    End Function


    Bạn xem các Module sau có phải bạn đang cần:

    Mã PHP:
    Option Compare Database

    Public Function metvuong(ByVal giatriso) As String
       Dim giatri 
    As String
       Dim S1
    S2docphannguyendocphanle As String
       
       giatri 
    Format(Abs(giatriso), "##0.00")
       
       S1 
    Left(giatriInStr(giatri",") - 1)
       docphannguyen DocSoUni(S1)
       
       S2 
    Right(giatri2)
       Select Case S2
           Case 
    "00"
               docphanle DocSoUni("0")
           Case Else
               If Left(S21) = "0" Then
                   docphanle 
    DocSoUni("0") & " " DocSoUni(Right(S21))
               Else
                   If Right
    (S21) = "0" Then
                       docphanle 
    DocSoUni(Left(S21))
                   Else
                       docphanle 
    DocSoUni(S2)
                   End If
               End If
       End Select
           
       metvuong 
    docphannguyen " " Form_Frtest.lbPhay.Caption " " docphanle " " Form_Frtest.lbM2.Caption
       metvuong 
    Inhoachucaidau(metvuong)
    End Function

    Public Function 
    DocSoUni(ByVal conso) As String
    s09 
    = Array(""" m" ChrW(7897) & "t"" hai"" ba"" b" ChrW(7889) & "n"" n" ChrW(259) & "m"" s" ChrW(225) & "u"" b" ChrW(7843) & "y"" t" ChrW(225) & "m"" ch" ChrW(237) & "n")
    lop3 = Array(""" tri" ChrW(7879) & "u"" ngh" ChrW(236) & "n"" t" ChrW(7927))
    Dim docsos123 As String

    If Trim(conso) = "" Then
     DocSoUni 
    ""
    ElseIf IsNumeric(conso) = True Then
     If conso 
    0 Then dau ChrW(226) & "m " Else dau ""
     conso Abs(conso)
     conso " " conso
     conso 
    Replace(conso","""1)
     vt InStr(1conso"E")
     If vt 0 Then
       sonhan 
    Val(Mid(consovt 1))
       conso Trim(Mid(conso2vt 2))
       conso conso String(sonhan Len(conso) + 1"0")
     End If
     conso Trim(conso)
     sochuso Len(consoMod 9
     If sochuso 
    0 Then conso String(- (sochuso Mod 12), "0") & conso
     docso 
    ""
     i 1
     lop 
    1
     Do
       n1 
    Mid(consoi1)
       n2 Mid(conso11)
       n3 Mid(conso21)
       baso Mid(consoi3)
       i 3
       If n1 
    n2 n3 "000" Then
         If docso 
    <> "" And lop And Len(conso) - 2 Then s123 " t" ChrW(7927) Else s123 ""
       Else
         If n1 
    0 Then
           If docso 
    "" Then S1 "" Else S1 " kh" ChrW(244) & "ng tr" ChrW(259) & "m"
         Else
           S1 
    s09(n1) & " tr" ChrW(259) & "m"
         End If
         If n2 0 Then
           If S1 
    "" Or n3 0 Then
             S2 
    ""
           Else
             S2 
    " l" ChrW(7867)
           End If
         Else
           If n2 
    1 Then S2 " m" ChrW(432) & ChrW(7901) & "i" Else S2 s09(n2) & " m" ChrW(432) & ChrW(417) & "i"
         End If
         If n3 1 Then
           If n2 
    Or n2 0 Then S3 " m" ChrW(7897) & "t" Else S3 " m" ChrW(7889) & "t"
         ElseIf n3 And n2 <> 0 Then
           S3 
    " l" ChrW(259) & "m"
         Else
           S3 
    s09(n3)
         End If
         If i Len(consoThen
           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(consoThen Exit Do
     Loop
     If docso 
    "" Then DocSoUni "kh" ChrW(244) & "ng" Else DocSoUni dau Trim(docso)
    Else
     DocSoUni conso
    End 
    If
    End Function

    Function 
    Inhoachucaidau(Word As Variant) As String
      Dim temp 
    As String
      
      
    If IsNull(WordThen
         Exit 
    Function
       Else
           temp 
    CStr(LCase(LTrim(Word)))
           Inhoachucaidau UCase(Left(temp1)) & Right(tempLen(temp) - 1)
       End If
    End Function 

    File Demo.

    040 Hình như nó không đọc được bạn ơi!
  • RE: Giúp tôi Modules đọc số này với

    nhannt4 > 10-05-17, 05:54 PM

    (10-05-17, 05:44 PM)xndt Đã viết: 040 Hình như nó không đọc được bạn ơi!

    Bạn download file Demo của mình về sử dụng xem, máy mình sử dụng định dạng ngày đã điều chỉnh lại chứ không để mặc định nên bạn có thể mở code trong file Demo để điều chỉnh lại cho phù hợp:

    - Decimal symbol: dấu ","
    - Digit grouping symbol: dấu "."

    Máy mình đã test hoạt động tốt.

    (Mở file demo xem rõ hơn).
  • RE: Giúp tôi Modules đọc số này với

    ongke0711 > 10-05-17, 06:58 PM

    Code này chạy đúng yêu cầu rồi đó. Như bạn nhannt4 đã nói, bạn phải vô Control Panel -> Regional Setting để định dạng số lại đúng như tiếng Việt: dấu chấm cho hàng ngàn, dấu phẩy cho số thập phân.
  • RE: Giúp tôi Modules đọc số này với

    xndt > 11-05-17, 10:16 AM

    (10-05-17, 05:54 PM)nhannt4 Đã viết:
    (10-05-17, 05:44 PM)xndt Đã viết: 040 Hình như nó không đọc được bạn ơi!

    Bạn download file Demo của mình về sử dụng xem, máy mình sử dụng định dạng ngày đã điều chỉnh lại chứ không để mặc định nên bạn có thể mở code trong file Demo để điều chỉnh lại cho phù hợp:

    - Decimal symbol: dấu ","
    - Digit grouping symbol: dấu "."

    Máy mình đã test hoạt động tốt.

    (Mở file demo xem rõ hơn).

    Cám ơn bạn rất nhiều! nó đã đúng cái tôi cần luôn, nhưng tôi có vấn đề cần bạn giúp như sau:
    Do máy của tôi còn phải dùng 1 phần mềm quan trọng phải sử dụng định dạng ngày mặc định nên bạn có thể giúp tôi điều chỉnh code cho nó sử dụng được với ngày mặc định của Windows được không, nếu được thì tốt quá. Thanks bạn nhiều.
  • RE: Giúp tôi Modules đọc số này với

    nhannt4 > 11-05-17, 11:00 AM

    (11-05-17, 10:16 AM)xndt Đã viết: Cám ơn bạn rất nhiều! nó đã đúng cái tôi cần luôn, nhưng tôi có vấn đề cần bạn giúp như sau:
    Do máy của tôi còn phải dùng 1 phần mềm quan trọng phải sử dụng định dạng ngày mặc định nên bạn có thể giúp tôi điều chỉnh code cho nó sử dụng được với ngày mặc định của Windows được không, nếu được thì tốt quá. Thanks bạn nhiều.

    Bạn mở Function metvuong, sửa lại dòng số 4 như sau:

    - Từ: S1 = Left(giatri, InStr(giatri, ".") - 1)

    - Thành: S1 = Left(giatri, InStr(giatri, ",") - 1)

    Chúc bạn vui.