Hiển thị tiếng việt cho msgbox trong ACCESS

Liên hệ QC

ckc2006

Thành viên mới
Tham gia
24/10/08
Bài viết
41
Được thích
16
Có 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!!
 
Có 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!!
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 DoAlert
Đầu tiên bạn chèn 1 module rồi paste code này 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
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 để thí nghiệm!
 
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



 
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



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)
Còn tôi làm 2 dòng thông báo là để bạn thấy sự khác nhau giữa 2 MsgBox: 1 cái có nút Yes, No còn cái còn lại thì chỉ có nút OK
2> Chính xác là vậy ---> Thay Text thành chuổi gì bạn muốn
 
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
(Đương nhiên vẫn cần đến hổ trở của hàm UniConvert nha)
 
Lần chỉnh sửa cuối:
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.
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)
Việc hiện tiếng Việt trên tiêu đề không dễ đâu ---> Phải dùng cách phức tạp (các hàm API) như đường link này đây
http://www.giaiphapexcel.com/forum/...àm-MsgBoxUni-hiển-thị-font-tiếng-Việt-Unicode
Nếu có nhu cầu cao thì đành phải nghiên cứu thêm vậy
 
cám ơn bạn rất nhiều !!! nhờ bạn hướng dẫn dùm phần form
 
Mới lọ mọ lập trình, bác "ndu..." có thể cho một cái mẫu được không ?
Cảm ơn bác nhiều.
 
Bác NDU cho hỏi: mình có thể dùng cách này với các đối tượng trên form không?
 
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
(Đươ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???
 
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???

Thì nó cũng giống MsgBox thông thường thôi mà
Ví dụ:
Mã:
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
 
Tình cờ mình đang cần và đã thực hiện thành công, xin mạo muội hướng dẫn lại mọi người như sau:
1. Tạo Macro MessageBox, Ở đây muốn nhập tiếng Việt ok hết
2. Gán Event cho đối tượng
3. Vào VBA gọi Macro có tiếng việt với cú pháp DoCmd.RunMacro "Tên macro"
Xong!
Chúc mọi người thành công
 
Web KT

Bài viết mới nhất

Back
Top Bottom