- Tham gia
- 17/8/08
- Bài viết
- 8,655
- Được thích
- 16,711
- Giới tính
- Nam
Tặng Hàm MsgBox Việt hóa bằng Unicode tuyệt đẹp!
Với cải tiến lần này, MsgBox thân thiện hơn, đẹp hơn, nút lệnh theo Application nên mượt mà hơn.
Có thể chọn Nút lệnh mặc định để khi Enter là chạy thủ tục tại nút đó
Đặc biệt, một phát hiện mới là có thể tô đậm dòng tiêu đề bên trong nội dung MsgBox
Và hơn thế nữa, đó chính là có thể Việt hóa tên nút lệnh một cách dễ dàng theo ý muốn của chúng ta!
![Picture1.jpg Picture1.jpg](https://www.giaiphapexcel.com/diendan/data/attachments/60/60642-871d99b066eb5f9ab7649fd4cfe8b717.jpg)
Hàm chuyển đổi nút lệnh:
Hàm MyUniMsgBox:
Cách sử dụng:
![Picture2.jpg Picture2.jpg](https://www.giaiphapexcel.com/diendan/data/attachments/60/60643-cb0e4d73581b045013965e876c3c99a9.jpg)
![Picture3.jpg Picture3.jpg](https://www.giaiphapexcel.com/diendan/data/attachments/60/60644-7ca74fcb9ad121838994a2ee9b945368.jpg)
![Picture4.jpg Picture4.jpg](https://www.giaiphapexcel.com/diendan/data/attachments/60/60645-756a1c0f2fd21aaa3e50d0eee8a7e903.jpg)
![Picture5.jpg Picture5.jpg](https://www.giaiphapexcel.com/diendan/data/attachments/60/60646-8b30c1c23d1bc5ab625562a8b03f8031.jpg)
![Picture6.jpg Picture6.jpg](https://www.giaiphapexcel.com/diendan/data/attachments/60/60647-5bf33fb1df675daa3951e52313d03d34.jpg)
Các bạn sẽ thấy có quá nhiều thủ tục trong hàm, làm sao nhớ đây? Đơn giản thôi, các bạn chỉ cần nhớ cấu trúc:
MyUniMsgBox Tiêu đề (bắt buộc), [Nội dung], [Kiểu nút lệnh], [Kiểu Icon], [Kiểu nút lệnh mặc định]
Các kiểu trong dấu ngoặc móc là không bắt buộc, có hay không cũng không thành vấn đề, tùy theo kiểu thông báo mà các bạn thêm hoặc bớt.
Nhưng các bạn vẫn còn thắc mắc là trong cấu trúc có nhiều tiếng Anh khó nhớ quá, xin thưa là không có vấn đề gì, cứ sau khi đặt dấu phẩy sau Tiêu đề là nó sẽ hiển thị các List Constants cho các bạn lựa chọn!
![Picture7.jpg Picture7.jpg](https://www.giaiphapexcel.com/diendan/data/attachments/60/60648-b935ac668ce2545d7b514281fe1aa447.jpg)
![Picture8.jpg Picture8.jpg](https://www.giaiphapexcel.com/diendan/data/attachments/60/60649-38cbee00bd03e82c55f0a4596762414e.jpg)
Chúc các bạn có các thông báo thật Việt Nam!
Với cải tiến lần này, MsgBox thân thiện hơn, đẹp hơn, nút lệnh theo Application nên mượt mà hơn.
Có thể chọn Nút lệnh mặc định để khi Enter là chạy thủ tục tại nút đó
Đặc biệt, một phát hiện mới là có thể tô đậm dòng tiêu đề bên trong nội dung MsgBox
Và hơn thế nữa, đó chính là có thể Việt hóa tên nút lệnh một cách dễ dàng theo ý muốn của chúng ta!
![Picture1.jpg Picture1.jpg](https://www.giaiphapexcel.com/diendan/data/attachments/60/60642-871d99b066eb5f9ab7649fd4cfe8b717.jpg)
Hàm chuyển đổi nút lệnh:
Mã:
Private Function MsgBoxHookProc(ByVal lMsg As Long, _
ByVal wParam As Long, _
ByVal lParam As Long) As Long
If lMsg = HCBT_ACTIVATE Then
[COLOR=#006400]'De biet Charcode, dung ham ASCW("KyTu")[/COLOR]
StrOK = ChrW$(272) & ChrW$(7891) & "&ng " & ChrW$(253) [COLOR=#006400] 'Dong y[/COLOR]
StrCancel = "&H" & ChrW$(7911) & "y b" & ChrW$(7887) [COLOR=#006400] 'Huy bo[/COLOR]
StrAbort = "&H" & ChrW$(7911) & "y ngang" [COLOR=#006400] 'Huy ngang[/COLOR]
StrRetry = "&Th" & ChrW$(7917) & " l" & ChrW$(7841) & "i" [COLOR=#006400] 'Thu lai[/COLOR]
StrIgnore = "&B" & ChrW$(7887) & " qua" [COLOR=#006400]'Bo qua[/COLOR]
StrYes = "&Có" [COLOR=#006400]'Co[/COLOR]
StrNo = "&Không" [COLOR=#006400] 'Khong[/COLOR]
StrYesAll = "Có &t" & ChrW$(7845) & "t c" & ChrW$(7843) [COLOR=#006400]'Co tat ca[/COLOR]
SetDlgItemText wParam, IdOK, StrConv(StrOK, vbUnicode)
SetDlgItemText wParam, IdCancel, StrConv(StrCancel, vbUnicode)
SetDlgItemText wParam, IdAbort, StrConv(StrAbort, vbUnicode)
SetDlgItemText wParam, IdRetry, StrConv(StrRetry, vbUnicode)
SetDlgItemText wParam, IdIgnore, StrConv(StrIgnore, vbUnicode)
SetDlgItemText wParam, IdYes, StrConv(StrYes, vbUnicode)
SetDlgItemText wParam, IdNo, StrConv(StrNo, vbUnicode)
SetDlgItemText wParam, IdYesAll, StrConv(StrYesAll, vbUnicode)
UnhookWindowsHookEx hHook
End If
MsgBoxHookProc = False
End Function
Hàm MyUniMsgBox:
Mã:
Function MyUniMsgBox(ByVal msgTitle As String, _
Optional msgText As String, _
Optional msgButtonType As MsoAlertButtonType, _
Optional msgIconType As MsoAlertIconType, _
Optional msgDefaultType As MsoAlertDefaultType) As VbMsgBoxResult
[COLOR=#006400] 'Cau truc:
'MyUniMsgBox TieuDe (bat buoc), NoiDung (bat buoc), [KieuNutLenh], [KieuIcon], [KieuNutLenhMacDinh][/COLOR]
hHook = SetWindowsHookEx(WH_CBT, AddressOf MsgBoxHookProc, 0, GetCurrentThreadId)
On Error GoTo DefaultFirst
MyUniMsgBox = Application.Assistant.DoAlert( _
msgTitle, _
msgText, _
msgButtonType, _
msgIconType, _
msgDefaultType, _
msoAlertCancelDefault, _
False)
Exit Function
DefaultFirst:
On Error Resume Next
MyUniMsgBox = Application.Assistant.DoAlert( _
msgTitle, _
msgText, _
msgButtonType, _
msgIconType, _
msoAlertDefaultFirst, _
msoAlertCancelDefault, _
False)
End Function
Cách sử dụng:
Mã:
MyUniMsgBox TieuDe, NoiDung
![Picture2.jpg Picture2.jpg](https://www.giaiphapexcel.com/diendan/data/attachments/60/60643-cb0e4d73581b045013965e876c3c99a9.jpg)
Mã:
MyUniMsgBox TieuDe, NoiDung & .[B3], _
msoAlertButtonOK, _
msoAlertIconInfo, _
msoAlertDefaultFirst
![Picture3.jpg Picture3.jpg](https://www.giaiphapexcel.com/diendan/data/attachments/60/60644-7ca74fcb9ad121838994a2ee9b945368.jpg)
Mã:
MyUniMsgBox TieuDe, NoiDung & .[B6], _
msoAlertButtonYesNoCancel, _
msoAlertIconQuery, _
msoAlertDefaultThird
![Picture4.jpg Picture4.jpg](https://www.giaiphapexcel.com/diendan/data/attachments/60/60645-756a1c0f2fd21aaa3e50d0eee8a7e903.jpg)
Mã:
MyUniMsgBox TieuDe, NoiDung & .[B8], _
msoAlertButtonAbortRetryIgnore, _
msoAlertIconCritical, _
msoAlertDefaultSecond
![Picture5.jpg Picture5.jpg](https://www.giaiphapexcel.com/diendan/data/attachments/60/60646-8b30c1c23d1bc5ab625562a8b03f8031.jpg)
Mã:
MyUniMsgBox TieuDe, NoiDung & .[B7], _
msoAlertButtonYesAllNoCancel, _
msoAlertIconWarning, _
msoAlertDefaultFourth
![Picture6.jpg Picture6.jpg](https://www.giaiphapexcel.com/diendan/data/attachments/60/60647-5bf33fb1df675daa3951e52313d03d34.jpg)
Các bạn sẽ thấy có quá nhiều thủ tục trong hàm, làm sao nhớ đây? Đơn giản thôi, các bạn chỉ cần nhớ cấu trúc:
MyUniMsgBox Tiêu đề (bắt buộc), [Nội dung], [Kiểu nút lệnh], [Kiểu Icon], [Kiểu nút lệnh mặc định]
Các kiểu trong dấu ngoặc móc là không bắt buộc, có hay không cũng không thành vấn đề, tùy theo kiểu thông báo mà các bạn thêm hoặc bớt.
Nhưng các bạn vẫn còn thắc mắc là trong cấu trúc có nhiều tiếng Anh khó nhớ quá, xin thưa là không có vấn đề gì, cứ sau khi đặt dấu phẩy sau Tiêu đề là nó sẽ hiển thị các List Constants cho các bạn lựa chọn!
![Picture7.jpg Picture7.jpg](https://www.giaiphapexcel.com/diendan/data/attachments/60/60648-b935ac668ce2545d7b514281fe1aa447.jpg)
![Picture8.jpg Picture8.jpg](https://www.giaiphapexcel.com/diendan/data/attachments/60/60649-38cbee00bd03e82c55f0a4596762414e.jpg)
Chúc các bạn có các thông báo thật Việt Nam!
File đính kèm
Lần chỉnh sửa cuối: