ngochienle
Yêu THVBA
Chào tất cả các bạn, hôm nay mình chia sẻ cho mọi người thêm một cách tiếp cận mới để hiển thị Tiếng Việt có dấu trong VBA.
Cài đặt môi trường Tiếng Việt CP1258:
Thiết lập bảng mã gõ bằng Unikey:
Hàm hiển thị Tiếng Việt:
Hàm test thử hiển thị Tiếng Việt:
Kết quả:
Cài đặt môi trường Tiếng Việt CP1258:
Bạn cần đăng nhập để thấy hình ảnh
Bạn cần đăng nhập để thấy hình ảnh
Thiết lập bảng mã gõ bằng Unikey:
Bạn cần đăng nhập để thấy hình ảnh
Hàm hiển thị Tiếng Việt:
Mã:
' Hàm TV dùng để hiển thị văn bản gõ bằng bảng mã Windows CP1258 sang định dạng Unicode
' Tác giả: Lê Ngọc Hiển
Public Function TV(text As String) As String
Dim TuDien As Object, i As Long, CP1258() As String, CharCode() As String, KetQua As String, key As Variant
Set TuDien = CreateObject("Scripting.Dictionary")
' Mảng ký tự mã hóa Windows-1258
CP1258 = Split("ãì,ãÌ,ãÒ,ãÞ,ãò,âì,âÌ,âÒ,âÞ,âò,êì,êÌ,êÒ,êÞ,êò,ôì,ôÌ,ôÒ,ôÞ,ôò,õì,õÌ,õÒ,õÞ,õò,ýì,ýÌ,ýÒ,ýÞ,ýò,aì,aÌ,aÒ,ã,aò,aÞ,â,ð,eì,eÌ,eÒ,eÞ,eò,ê,iì,iÌ,iÒ,iÞ,iò,oì,oÌ,oÒ,oÞ,oò,ô,õ,uì,uÌ,uÒ,uÞ,uò,ý,yì,yÌ,yÒ,yÞ,yò", ",")
' Mảng ký tự mã hóa Unicode
CharCode = Split("7855,7857,7859,7861,7863,7845,7847,7849,7851,7853,7871,7873,7875,7877,7879,7889,7891,7893,7895,7897,7899,7901,7903,7905,7907,7913,7915,7917,7919,7921,225,224,7843,259,7841,227,226,273,233,232,7867,7869,7865,234,237,236,7881,297,7883,243,242,7887,245,7885,244,417,250,249,7911,361,7909,432,253,7923,7927,7929,7925", ",")
For i = 0 To UBound(CP1258)
If Not TuDien.Exists(CP1258(i)) Then
TuDien.Add CP1258(i), ChrW(CLng(CharCode(i)))
End If
If Not TuDien.Exists(UCase(CP1258(i))) Then
TuDien.Add UCase(CP1258(i)), UCase(ChrW(CLng(CharCode(i))))
End If
Next i
KetQua = text
For Each key In TuDien.Keys
KetQua = Replace(KetQua, key, TuDien(key))
Next key
TV = KetQua
End Function
Mã:
Function MsgBoxVN(ByVal Noidung As String, Optional ByVal Tieude As String, Optional ByVal Kieu As _
MsoAlertButtonType = vbOKOnly, Optional ByVal BieuTuong As MsoAlertIconType = msoAlertIconInfo) As VbMsgBoxResult
If Tieude = "" Then
Tieude = TV("Thông baìo!")
End If
Application.Assistant.DoAlert Tieude, Noidung, Kieu, BieuTuong, 0, 0, 0
End Function
Sub Test_Thongbao()
MsgBoxVN TV("ThýÒ nghiêòm hiêÒn thiò thông baìo Tiêìng Viêòt võìi baÒng maÞ Windows CP1258.")
End Sub
Bạn cần đăng nhập để thấy hình ảnh
Kết quả:
Bạn cần đăng nhập để thấy hình ảnh
Bạn cần đăng nhập để thấy link