Tôi tải UniVba về và làm theo hướng dẫn nhưng không hiện được tiếng Việt trên form mà lại bị bắt lỗi MsgBoxUni. Xin mọi người xem file và chỉ giúp. Cám ơn.
Option Explicit
Private Declare Function GetActiveWindow Lib "user32" () As Long
Private Declare Function MessageBoxW Lib "user32" (ByVal hWnd As Long, ByVal lpText As String, ByVal lpCaption As String, ByVal wType As Long) As Long
Function MsgBoxUni(ByVal PromptUni As Variant, Optional ByVal Buttons As VbMsgBoxStyle = vbOKOnly, Optional ByVal TitleUni As Variant = vbNullString) As VbMsgBoxResult
Dim BStrMsg, BStrTitle
BStrMsg = StrConv(PromptUni, vbUnicode)
BStrTitle = StrConv(TitleUni, vbUnicode)
MsgBoxUni = MessageBoxW(GetActiveWindow, BStrMsg, BStrTitle, Buttons)
End Function
'===========================
Sub Rectangle1_Click()
UserForm1.Show
End Sub
Bạn sử dụng hàm MsgBoxUni mà trong Module không có cái hàm này thì lỗi là đúng rồi còn gì nữa. Chắc là do bạn copy mà để sót lại cái phần quan trọng nhất rồi.Tôi tải UniVba về và làm theo hướng dẫn nhưng không hiện được tiếng Việt trên form mà lại bị bắt lỗi MsgBoxUni. Xin mọi người xem file và chỉ giúp. Cám ơn.
...Mấy cái hàm MsgBoxUni ở trên thực chất vẫn không gõ trực tiếp được font Uni trong VBE. Mà phải nhờ trợ giúp của cái hàm ChrW. Mà cái hàm này làm sao ta có thể nhớ được các tham số chứ. Như ChrW(7845) thì cũng không biết nó là gì trừ khi cho nó chạy...
OK rồi! Cám ơn bạn rất nhiều. Tôi thấy còn có một MsgBox của một ai đó trên GPE mà sử dụng theo kiểu gõ VNI cũng hiện đúng tiếng Việt (MsgBox Hie65n d9u1ng tie61ng Vie65t). Cách này đơn giản hơn. Bạn có không cho mình xin với. Cám ơn.File của bạn không bị lỗi mới là lạ đó! Không có Hàm MsgBoxUni thì làm sao mà nó chạy!
Trong Module của bạn, bạn không cần phải làm rắc rối vậy đâu, bạn có thể xoá hết trong module rồi chép đoạn code này vào module đó nhé!
PHP:Option Explicit Private Declare Function GetActiveWindow Lib "user32" () As Long Private Declare Function MessageBoxW Lib "user32" (ByVal hWnd As Long, ByVal lpText As String, ByVal lpCaption As String, ByVal wType As Long) As Long Function MsgBoxUni(ByVal PromptUni As Variant, Optional ByVal Buttons As VbMsgBoxStyle = vbOKOnly, Optional ByVal TitleUni As Variant = vbNullString) As VbMsgBoxResult Dim BStrMsg, BStrTitle BStrMsg = StrConv(PromptUni, vbUnicode) BStrTitle = StrConv(TitleUni, vbUnicode) MsgBoxUni = MessageBoxW(GetActiveWindow, BStrMsg, BStrTitle, Buttons) End Function '=========================== Sub Rectangle1_Click() UserForm1.Show End Sub
OK rồi! Cám ơn bạn rất nhiều. Tôi thấy còn có một MsgBox của một ai đó trên GPE mà sử dụng theo kiểu gõ VNI cũng hiện đúng tiếng Việt (MsgBox Hie65n d9u1ng tie61ng Vie65t). Cách này đơn giản hơn. Bạn có không cho mình xin với. Cám ơn.