Trên Excel, ta có thể dùng Macro 4 để trợ giúp, nhưng Access thì không dùng được! Tuy nhiên vẫn có cách khác, đó là dùng DoAlertCó cách nào để hiển thị tiếng việt trong msgbox không, nhờ các bạn hướng dẫn dùm.
Thank!!
Function UniConvert(Text As String, InputMethod As String) As String
Dim VNI_Type, Telex_Type, CharCode, Temp, i As Long
UniConvert = Text
VNI_Type = Array("a81", "a82", "a83", "a84", "a85", "a61", "a62", "a63", "a64", "a65", "e61", _
"e62", "e63", "e64", "e65", "o61", "o62", "o63", "o64", "o65", "o71", "o72", "o73", "o74", _
"o75", "u71", "u72", "u73", "u74", "u75", "a1", "a2", "a3", "a4", "a5", "a8", "a6", "d9", _
"e1", "e2", "e3", "e4", "e5", "e6", "i1", "i2", "i3", "i4", "i5", "o1", "o2", "o3", "o4", _
"o5", "o6", "o7", "u1", "u2", "u3", "u4", "u5", "u7", "y1", "y2", "y3", "y4", "y5")
Telex_Type = Array("aws", "awf", "awr", "awx", "awj", "aas", "aaf", "aar", "aax", "aaj", "ees", _
"eef", "eer", "eex", "eej", "oos", "oof", "oor", "oox", "ooj", "ows", "owf", "owr", "owx", _
"owj", "uws", "uwf", "uwr", "uwx", "uwj", "as", "af", "ar", "ax", "aj", "aw", "aa", "dd", _
"es", "ef", "er", "ex", "ej", "ee", "is", "if", "ir", "ix", "ij", "os", "of", "or", "ox", _
"oj", "oo", "ow", "us", "uf", "ur", "ux", "uj", "uw", "ys", "yf", "yr", "yx", "yj")
CharCode = Array(ChrW(7855), ChrW(7857), ChrW(7859), ChrW(7861), ChrW(7863), ChrW(7845), ChrW(7847), _
ChrW(7849), ChrW(7851), ChrW(7853), ChrW(7871), ChrW(7873), ChrW(7875), ChrW(7877), ChrW(7879), _
ChrW(7889), ChrW(7891), ChrW(7893), ChrW(7895), ChrW(7897), ChrW(7899), ChrW(7901), ChrW(7903), _
ChrW(7905), ChrW(7907), ChrW(7913), ChrW(7915), ChrW(7917), ChrW(7919), ChrW(7921), ChrW(225), _
ChrW(224), ChrW(7843), ChrW(227), ChrW(7841), ChrW(259), ChrW(226), ChrW(273), ChrW(233), ChrW(232), _
ChrW(7867), ChrW(7869), ChrW(7865), ChrW(234), ChrW(237), ChrW(236), ChrW(7881), ChrW(297), ChrW(7883), _
ChrW(243), ChrW(242), ChrW(7887), ChrW(245), ChrW(7885), ChrW(244), ChrW(417), ChrW(250), ChrW(249), _
ChrW(7911), ChrW(361), ChrW(7909), ChrW(432), ChrW(253), ChrW(7923), ChrW(7927), ChrW(7929), ChrW(7925))
Select Case InputMethod
Case Is = "VNI": Temp = VNI_Type
Case Is = "Telex": Temp = Telex_Type
End Select
For i = 0 To UBound(CharCode)
UniConvert = Replace(UniConvert, Temp(i), CharCode(i))
UniConvert = Replace(UniConvert, UCase(Temp(i)), UCase(CharCode(i)))
Next i
End Function
Sub TestVNI()
Dim Text As String
Text = "Gia3i pha1p Excel - Co6ng cu5 tuye65t vo72i cu3a ba5n"
Application.Assistant.DoAlert "THÔNG BÁO", UniConvert(Text, "VNI"), 4, 4, 1, 1, 0
Application.Assistant.DoAlert "THÔNG BÁO", UniConvert(Text, "VNI"), 0, 4, 0, 0, 0
End Sub
1> Bôi đen chữ DoAlert rồi bấm F1 sẽ có ngay câu trả lời (kể cả ví dụ mình họa) ---> Nó cũng gần giống với MsgBox thông thường thôi (có điều nó hổ trợ Unicode)Hai dòng này có ý nghĩa như thế nào vậy bạn:
Application.Assistant.DoAlert "THÔNG BÁO", UniConvert(Text, "VNI"), 4, 4, 1, 1, 0
Application.Assistant.DoAlert "THÔNG BÁO", UniConvert(Text, "VNI"), 0, 4, 0, 0, 0
đối với trường hợp của mình thì ở mỗi dòng msgbox mình sẽ thay bằng dòng này phải ko?
Dim Text As String
Text = "Gia3i pha1p Excel - Co6ng cu5 tuye65t vo72i cu3a ba5n"
Application.Assistant.DoAlert "THÔNG BÁO", UniConvert(Text, "VNI"), 4, 4, 1, 1, 0
Application.Assistant.DoAlert "THÔNG BÁO", UniConvert(Text, "VNI"), 0, 4, 0, 0, 0
Sub Test()
Dim Text As String
Text = "Gia3i pha1p Excel, co6ng cu5 tuye65t vo72i cu3a ba5n"
With CreateObject("WScript.Shell")
.Popup UniConvert(Text, "VNI"), , "THÔNG BÁO", vbOKOnly
End With
End Sub
Mình nghĩ có lẽ cách dùng WScript.Shell dễ hơn (vì nó gần giống với MsgBox nhất)vậy theo bạn thì dùng cách nào là đơn giản và tiện lợi nhất.
Có cách nào để cho tiêu đề của form hiện thị được tiếng việt ko vậy bạn.
Bác NDU cho em hỏi: làm sao mình lấy được giá trị của 2 nút OK với Cancel để mình làm thêm hàm if nữa vậy???Ngoài cách dùng DoAlert như trên còn có cách khác dùng WScript.Shell như sau:
Cách này gần giống với MsgBox thông thường nhất ---> Thêm nữa, MsgBox loại này còn có khả năng tự động tắt sau 1 thời gian tùy ta chỉ định nữa đấyPHP:Sub Test() Dim Text As String Text = "Gia3i pha1p Excel, co6ng cu5 tuye65t vo72i cu3a ba5n" With CreateObject("WScript.Shell") .Popup UniConvert(Text, "VNI"), , "THÔNG BÁO", vbOKOnly End With End Sub
(Đương nhiên vẫn cần đến hổ trở của hàm UniConvert nha)
Bác NDU cho em hỏi: làm sao mình lấy được giá trị của 2 nút OK với Cancel để mình làm thêm hàm if nữa vậy???
Sub Test()
Dim Text As String
[COLOR=#ff0000]Dim answer As Long[/COLOR]
Text = "Gia3i pha1p Excel, co6ng cu5 tuye65t vo72i cu3a ba5n"
With CreateObject("WScript.Shell")
[COLOR=#ff0000] answer = .Popup(UniConvert(Text, "VNI"), , "THÔNG BÁO", vbOKCancel)[/COLOR]
End With
[COLOR=#ff0000]If answer = [B]vbOK[/B] then[/COLOR] '' hoặc [COLOR=#ff0000][B]vbCancel[/B][/COLOR]
'' Làm gì tùy ý
End If
End Sub