Bài viết: Hiển thị tiếng việt cho hộp thông báo trong ACCESS & Excel

Liên hệ QC

ndu96081631

Huyền thoại GPE
Thành viên BQT
Super Moderator
Tham gia
5/6/08
Bài viết
30,703
Được thích
53,930
Khi muốn hiển thị hộp thông báo cho người dùng thì chúng ta có thể dùng Msgbox. Tuy nhiên, Msgbox không hỗ trợ tiếng việt Unicode cho nên chúng ta có thể sử dụng DoAlert để tương tác với người dùng.

Đầu tiên bạn chèn 1 module rồi paste code bên dưới vào:
PHP:
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

Chèn thêm thủ tục sau để kiểm tra kết quả

PHP:
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

Chạy thử Sub TextVNI để xem kết quả!

3-28-2014-HopThongBao-Code.jpg


Ngoài cách dùng DoAlert như trên còn có cách khác dùng WScript.Shell như sau:

PHP:
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

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 đấy.

Chúc thành công.
 
Chỉnh sửa lần cuối bởi điều hành viên:
Upvote 0
Hiển thị tiếng việt cho hộp thông báo trong ACCESS & Excel

Có bác nào giúp được em trường hợp này không ạ!View attachment Thong bao.xls
 
Lần chỉnh sửa cuối:
Mình cũng đã thử theo 2 cách trên nhưng còn vướng ở chỗ là chọn Yes hoặc No thì sẽ cho 2 kết quả khác nhau và mình sẽ lấy kết quả đó để làm công đoạn khác nhau là chưa ra. Kết quả của sub() toàn bằng 0 thôi. Có ai có cách nào khác không ạ.
View attachment Thong bao_new.xls
 
Lần chỉnh sửa cuối:
Web KT
Back
Top Bottom