Nhờ mọi người sửa giúp Macro: Đọc số thành chữ

Liên hệ QC

autumnmoon86

Thành viên mới
Tham gia
30/1/13
Bài viết
4
Được thích
0
Mình tìm được đoạn Macro này của bạn Cadafi trên diễn đàn viết cho Open office, mình đã copy lại và dùng thấy khá tốt. Tuy nhiên vẫn có một lỗi nhỏ, đó là khi đọc số như : 1.005.000 VND máy sẽ đọc thành " Một triệu năm ngàn đồng chẵn" Tuy nhiên mình muốn đọc thành " Một triệu không trăm lẻ năm ngàn đồng chẵn" Tương tự như 1.030.000.000 VND máy đọc là "Một tỷ ba mươi triệu đồng" trong khi phải là " Một tỷ không trăm ba mươi triệu đồng" Bài viết của bạn Cadafi từ năm 2009 nên giờ mình cũng không tiện pm để hỏi lại bạn nữa nên mình copy lên đây nhờ bạn nào giỏi về Macro sửa giúp mình để thêm chức năng đó vào với chứ mình mù tịt khoản này, cảm ơn các bạn nhiều
PHP:
Function VND(baonhieu)
'Tien Viet tieng Viet Font Unicode
    Dim KetQua, SoTien, Nhom, Chu, Dich, S1, S2, S3 As String
    Dim I, J, ViTri As Byte, S As Double
    Dim Hang, Doc, Dem
    If Trim(baonhieu) = "" Then
        VND = ""
        Exit Function
    ElseIf baonhieu = 0 Then
        VND = "kh" & Chr(244) & "ng"
        Exit Function
    ElseIf IsDate(baonhieu) Then
        ngay = Day(baonhieu)
        Thang = Month(baonhieu)
        Nam = Year(baonhieu)
        VND = "ng" & Chr(224) & "y " & ngay & " th" & Chr(225) & "ng " & Thang & " n" & Chr(462) & "m " & Nam
        Exit Function
    ElseIf IsNumeric(baonhieu) = True Then
        '---------------------------------------------------------------------------------------------------------------------------------
        'If baonhieu = 0 Then
        'KetQua = "Kh" & Chr$(244) & "ng " & Chr$(273) & Chr$(7891) & "ng"
        'Else
        '---------------------------------------------------------------------------------------------------------------------------------
        If Abs(baonhieu) >= 1E+15 Then
            KetQua = "S" & Chr$(7889) & " qu" & Chr$(225) & " l" & Chr$(7899) & "n - H" & Chr$(224) & "m " & Chr$(273) & Chr$(7893) & "i s" & Chr$(7889) & " ra ch" & Chr$(7919) & " Vi" & Chr$(7879) & "t Nam; font ch" & Chr$(7919) & " Tahoma - Copyright by VoTuanKiet of AMG (0938 73 73 93)"
        Else
            If baonhieu < 0 Then
                KetQua = Chr$(194) & "m" & Space(1)
            Else
                KetQua = Space(0)
            End If
            SoTien = Format(Abs(baonhieu), "##############0.00")
            SoTien = Right(Space(15) & SoTien, 18)
            Hang = Array("None", "tr" & Chr$(259) & "m", "m" & Chr$(432) & Chr$(417) & "i", "g" & Chr$(236) & " " & Chr$(273) & "ã")
            Doc = Array("None", "ng" & Chr$(224) & "n t" & Chr$(7927), "t" & Chr$(7927), "tri" & Chr$(7879) & "u", "ng" & Chr$(224) & "n", Chr$(273) & Chr$(7891) & "ng", "")
            Dem = Array("None", "m" & Chr$(7897) & "t", "hai", "ba", "b" & Chr$(7889) & "n", "n" & Chr$(259) & "m", "s" & Chr$(225) & "u", "b" & Chr$(7849) & "y", "t" & Chr$(225) & "m", "ch" & Chr$(237) & "n")
            For I = 1 To 6
                Nhom = Mid(SoTien, I * 3 - 2, 3)
                If Nhom <> Space(3) Then
                    Select Case Nhom
                    Case "000"
                        If I = 5 Then
                            Chu = Chr$(273) & Chr$(7891) & "ng" & Space(1)
                        Else
                            Chu = Space(0)
                        End If
                    Case ".00"
                        Chu = "ch" & Chr$(7861) & "n"
                    Case Else
                        S1 = Left(Nhom, 1)
                        S2 = Mid(Nhom, 2, 1)
                        S3 = Right(Nhom, 1)
                        Chu = Space(0)
                        Hang(3) = Doc(I)
                        For J = 1 To 3
                            Dich = Space(0)
                            S = Val(Mid(Nhom, J, 1))
                            If S > 0 Then
                                Dich = Dem(S) & Space(1) & Hang(J) & Space(1)
                            End If
                            Select Case J
                            Case 2 And S = 1
                                Dich = "m" & Chr$(432) & Chr$(7901) & "i" & Space(1)
                            Case 3 And S = 0 And Nhom <> Space(2) & "0"
                                Dich = Hang(J) & Space(1)
                            Case 3 And S = 5 And S2 <> Space(1) And S2 <> "0"
                                Dich = "l" & Mid(Dich, 2)
                            Case 2 And S = 0 And S3 <> "0"
                                If (S1 >= "1" And S1 <= "9") Or (S1 = "0" And I = 4) Then
                                    Dich = "l" & Chr$(7867) & Space(1)
                                End If
                            End Select
                            Chu = Chu & Dich
                        Next J
                    End Select
                    ViTri = InStr(1, Chu, "m" & Chr$(432) & Chr$(417) & "i m" & Chr$(7897) & "t", 1)
                    If ViTri > 0 Then Mid(Chu, ViTri, 9) = "m" & Chr$(432) & Chr$(417) & "i m" & Chr$(7889) & "t"
                    KetQua = KetQua & Chu
                End If
            Next I
        End If
    End If
    VND = UCase(Left(KetQua, 1)) & Mid(KetQua, 2)
End Function
 
Web KT

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

Back
Top Bottom