Thông thường chúng ta không thể viết chữ có dấu/unicode trên caption của userform. Một phương pháp tôi muốn giới thiệu các bạn là dùng hàm API DefWindowProcW của Windows để làm được việc này rất đơn giản. Phương pháp như sau:
Bước 1: Bạn hãy tạo hoặc mở userform trong VBA
Bước 2: Copy đoạn code dưới đây và dán vào của sổ code của userform. Đoạn code này giả định chuỗi hiển thị trên caption của form nằm ở ô A1 trong bảng tính vì vậy bạn hãy nhập chuỗi có dấu tại địa chỉ này.
Toàn bộ đoạn code dưới dưới đây:
Bước 1: Bạn hãy tạo hoặc mở userform trong VBA
Bước 2: Copy đoạn code dưới đây và dán vào của sổ code của userform. Đoạn code này giả định chuỗi hiển thị trên caption của form nằm ở ô A1 trong bảng tính vì vậy bạn hãy nhập chuỗi có dấu tại địa chỉ này.
Toàn bộ đoạn code dưới dưới đây:
Option Explicit
Private Const WM_SETTEXT = &HC
Private Declare Function DefWindowProc Lib "user32" Alias "DefWindowProcW" (ByVal hWnd As Long, ByVal wMsg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Private Sub UserForm_Initialize()
Dim hWnd&, sUnicode$
hWnd = FindWindow("ThunderDFrame", Caption) ' Tim HWnd cua UserForm
sUnicode = Range("A1").Value 'Noi chua chuoi unicode
DefWindowProc hWnd, WM_SETTEXT, 0, StrPtr(sUnicode)
End Sub
No comments :