Function DocSo(Number , Optional Font as Long) As String
Dim MyArray
Dim Str as String
Str = Format(Abs(Number), "000000000000000000")
If Ismissing(Font) then Font = 1
Select Case Font
Case 1
MyArray = Array("không ", "một ", "hai ", "ba ", "bốn ", "năm ", "sáu ", "bảy ", "tám ", "chín ", "triệu, ", "ngàn, ", "tỷ, ", "triệu, ", "ngàn, ", "", "trăm ", "mươi ", "không mươi không ", "không mươi", "lẻ", "mươi không", "mươi", "mươi năm", "mươi lăm", "một mươi", "mười", "mươi một", "mươi mốt", "Âm ")
Case 2
MyArray = Array("khoâng ", "moät ", "hai ", "ba ", "boán ", "naêm ", "saùu ", "baûy ", "taùm ", "chín ", "trieäu, ", "ngaøn, ", "tyû, ", "trieäu, ", "ngaøn, ", "", "traêm ", "möôi ", "khoâng möôi khoâng ", "khoâng möôi", "leû", "möôi khoâng", "möôi", "möôi naêm", "möôi laêm", "moät möôi", "möôøi", "möôi moät", "möôi moát", "AÂm ")
Case 3
MyArray = Array("kh«ng ", "mét ", "hai ", "ba ", "bèn ", "n¨m ", "s¸u ", "b¶y ", "t¸m ", "chÝn ", "triÖu, ", "ngµn, ", "tû, ", "triÖu, ", "ngµn, ", "", "tr¨m ", "m¬i ", "kh«ng m¬i kh«ng ", "kh«ng m¬i", "lÎ", "m¬i kh«ng", "m¬i", "m¬i nšm", "m¬i lšm", "mét m¬i", "mêi", "m¬i mét", "m¬i mèt", "©m ")
End Select
If Str = "000000000000000000" Then
DocSo = Trim(MyArray(0))
Goto Zero
Else
DocSo = ""
End If
For i = 1 To Len(Str)
If Csng(Left(Str, i)) <> 0 And Csng(Mid(Str, (Int((i + 2) / 3) - 1) * 3 + 1, 3)) <> 0 Then
DocSo = DocSo & MyArray(Csng(Mid(Str, i, 1))) & MyArray(-(9 + i / 3) * (i Mod 3 = 0) - (15 + i Mod 3) * (i Mod 3 <> 0))
ElseIf i = 9 And Csng(Mid(Str, 7, 3)) = 0 And Csng(Left(Str, 6)) <> 0 Then
DocSo = DocSo & MyArray(12)
End If
Next
DocSo = Trim(Replace(Replace(Replace(Replace(Replace(Replace(DocSo, MyArray(18), MyArray(15)), MyArray(19), MyArray(20)), MyArray(21), MyArray(22)), MyArray(23), MyArray(24)), MyArray(25), MyArray(26)), MyArray(27), MyArray(28)))
If Number < 0 Then
DocSo = MyArray(29) & DocSo
End If
Zero:
DocSo = Replace(UCase(Left(DocSo, 1)) & Mid(DocSo, 2) & ".", ",.", ".")
End Function