CÔNG TY CỔ PHẦN BLUESOFTS

Hiển thị MsgBox chữ có dấu tiếng việt - Unicode

Trong lập trình VBA, để hiển thị thông báo ta dùng hàm MsgBox, tuy nhiên hàm này không thể hiển thị chữ tiếng Việt có dấu -unicode. Bài viết này tôi xin hướng dẫn cách tạo ra một hàm MsgBox có khả năng hiển thị chữ tiếng Việt có dấu, unicode.

image001.jpg

Trong môi trường VBA, tạo một module mới, copy đoạn code dưới đây:

'****************************************
'Tac gia: Nguyen Duy Tuan
'Tel : 0904.210.337
'Email : tuanktcdcn@yahoo.com OR duytuan@bluesofts.net
'Website: www.bluesofts.net
'****************************************
'Khai bao cac ham API trong thu vien User32.DLL. Chạy trong môi truờng Office 32 hoặc 64-bit
#If VBA7 Then 
Private Declare PtrSafe Function GetActiveWindow Lib "user32" () As LongPtr 
Private Declare PtrSafe Function MessageBoxW Lib "user32" (ByVal hwnd As LongPtr, ByVal lpText As String, ByVal lpCaption As String, ByVal wType As Long) As Long 
#Else 
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 
#End If 

Function MsgBoxUni(ByVal PromptUni As Variant, Optional ByVal Buttons As VbMsgBoxStyle = vbOKOnly, Optional ByVal TitleUni As Variant = vbNullString) As VbMsgBoxResult 
   'BStrMsg, BStrTitle : La chuoi Unicode
   Dim BStrMsg, BStrTitle 
   'Hàm StrConv Chuyen chuoi ve ma Unicode
   BStrMsg = StrConv(PromptUni, vbUnicode) 
   BStrTitle = StrConv(TitleUni, vbUnicode) 
   MsgBoxUni = MessageBoxW(GetActiveWindow, BStrMsg, BStrTitle, Buttons) 
End Function 

Sub TestMsgBoxUni() 
   'Test trong Excel
   'O B3 chua noi dung thong bao
   'O B4 chua tieu de cua so
   MsgBoxUni Range("B3").Value, vbInformation, Range("B4").Value 
End Sub 
Theo ví dụ trên, ô B3 chưa nội dung thông báo, B4 nội dung tiêu đề bảng thông báo, tất cả là chữ unicode.

Như vậy từ nay các bạn có thể sử dụng hàm MsgBoxUni thay thế hàm MsgBox trong VBA là có thể hiển thị chữ tiếng Việt có dấu -  unicode.

Download mã nguồn:

http://www.bluesofts.net/Baiviet/Laptrinh/VB_VBA/MsgBoxUnicode.zip

Mã nguồn hàm UniMsgBoxPos hiển thị chuỗi unicode và tùy biến thay đổi vị trí hiển thị

Học lập trình VBA cơ bản của tác giả tại đây
Học lập trình VBA nâng cao của tác giả tại đây

Tác giả: Nguyễn Duy Tuân - Công ty Cổ phần Bluesofts - Xem hồ sơ