Bạn có thể tìm thấy trong Giáo trình thực hành của tác giả Ông Văn Thông - Excel'97 nâng cao, phần hàm dịch chữ số ra tiếng Việt. Tuy nhiên trong Visual Basic Editor chỉ sử dụng được font VNI nên hơi bất tiện cho các bạn dùng font Unicode. Dưới đây là tóm tắt cách thực hiện hàm dịch ra tiếng Việt sử dụng trong User Defined của Excel
1. Mở bảng tính có số liệu cần dịch ra tiếng Việt, Gọi lệnh Tools - Macro - Visual Basic Editor, sau dó vào Insert - Module sẽ hiện ra cho bạn Module 1.
2. Từ Module 1, bạn đặt tên hàm: Insert – Procedure: bạn đặt tên VND và chọn Type: function; Scope: Public; - OK
3. Bạn chép lại nguyên bản hàm dịch ra tiếng Việt sau vào Module 1.
4. Thử lại: View – Immediate Window sẽ xuất hiện cửa số immediate. Bạn gõ ?VND(100) sẽ hiện ra “Một trăm đồng chẵn”. Đây là một macro nên khi mở lại cho lần sau thì Excel sẽ báo là có virus và bạn cần chọn là Enable thì hàm mới hoạt động được. Nếu không được bạn vào Tool – Macro – Security và chọn Low (not recommended) thì bảng tính mới hoạt động được. Chúc bạn thành công!
Hàm dịch chữ số ra tiếng Việt: (viết với font VNI)
Public Function VND(BaoNhieu)
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 BaoNhieu = 0 Then
KetQua = "Khoâng ñoàng"
Else
If Abs(BaoNhieu) >= 1E+15 Then '1E+15 töùc 1.000.000.000.000.000 töùc 1 trieäu tyû
KetQua = "Soá quaù lôùn"
Else
If BaoNhieu < 0 Then
KetQua = "Tröø" & Space(1)
Else
KetQua = Space(0)
End If
SoTien = Format(Abs(BaoNhieu), "##############0.00") '18 digit with 2 decimal
SoTien = Right(Space(15) & SoTien, 18)
Hang = Array("None", "traêm", "möôi", "gì ñoù")
Doc = Array("None", "ngaøn tyû", "tyû", "trieäu", "ngaøn", "ñoàng", "xu")
Dem = Array("None", "moät", "hai", "ba", "boán", "naêm", "saùu", "baûy", "taùm", "chí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 = "ñoàng" & Space(1)
Else
Chu = Space(0)
End If
Case ".00"
Chu = "chaü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öôø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) & S2 <> "0"
Dich = "l" & Mid(Dich, 2) 'kyù töï en lôø
Case 2 And S = 0 And S3 <> "0"
If (S1 >= "1" And S1 <= "9") Or (S1 = 0 And I = 4) Then
Dòch = "leû" & Space(1)
End If
End Select
Chu = Chu & Dich
Next J
End Select
Vitri = InStr(1, Chu, "möôi moät", 1)
If Vitri > 0 Then Mid(Chu, Vitri, 9) = "möôi moát"
KetQua = KetQua & Chu
End If
Next I
End If
End If
VND = UCase(Left(KetQua, 1)) & Mid(KetQua, 2)
End Function