Cách viết tiếng Việt có dấu trong VBA

Chào các bạn, do VBA không hỗ trợ Unicode cho nên từ lâu việc viết tiếng Việt có dấu trong VBA đã là một vấn đề tương đối đau đầu với nhiều bạn.
Hôm nay, mình sẽ hướng dẫn các bạn cách đơn giản và nhanh để viết đc tiếng Việt có dấu trong VBA.
Công cụ được giới thiệu ở đây là 1 add-in mình đã viết.

Link Dowload Add-in

Video hướng dẫn sử dụng:

Việc mà các bạn phải làm là điền vào các thông số, nó sẽ tạo ra các đoạn code, các bạn chỉ cần copy và dán vào trong code VBA của các bạn là được.

Cách tạo thông báo bằng tiếng Việt trong VBA

Với phần này, các bạn điền các thông số: Tiêu đề, nội dung, chọn kiểu Button và kiểu Icon kèm theo trong thông báo:


Kết quả đạt được

Cách viết tiếng Việt trong UserForm VBA

Cách viết tiếng Việt với Label, CommandButton, OptionButton, CheckButton VBA

Với các đối tượng này, các bạn chỉ cần click vào đối tượng để gõ trực tiếp các nội dung trên đó.

Cách viết tiếng Việt Page Control VBA

Với đối tượng Page, các bạn ấn chuột phải vào tab của page rồi chọn Rename và sửa nội dung phần Caption

Cách viết tiếng Việt Frame UserForm VBA

Với đối tượng Frame, bạn sẽ không thể sửa trực tiếp như vậy, thì cách làm ở đây là: bạn dùng add-in, ở tab thứ 2, Biên dịch tiếng Việt sang VBA, các bạn gõ tên Frame cần tạo.

Sau đó copy đoạn code đc tạo ra, để set thuộc tính Caption cho Frame trong Private Sub UserForm_Initialize()

Private Sub UserForm_Initialize()
    Frame1.Caption = "H" & ChrW(7885) & "c Excel Online - Frame Ti" & ChrW(7871) & "ng Vi" & ChrW(7879) & "t"
End Sub

Kết quả đạt được:

Cách viết tiêu đề UserForm bằng tiếng Việt

Tại Tab Tiêu đề UserForm tiếng Việt, các bạn điền tiêu đề muốn tạo, code sẽ đc tạo ra:

Sau đó các bạn Copy và dán theo hướng dẫn:

Private Const WM_SETTEXT = &HC
#If Win64 Then
    Private Declare PtrSafe Function DefWindowProcW Lib "user32" (ByVal HWnd As Long, ByVal wMsg As Long, ByVal wParam As Long, ByVal lParam As LongPtr) As Long
    Private Declare PtrSafe Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
#Else
    Private Declare Function DefWindowProcW Lib "user32" (ByVal HWnd As Long, ByVal wMsg As Long, ByVal wParam As Long, ByVal lParam As LongPtr) As Long
    Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
#End If

Private Sub UserForm_Initialize()
    Dim HWnd&
	HWnd = FindWindow("ThunderDFrame", Caption)
	DefWindowProcW HWnd, WM_SETTEXT, 0, StrPtr("Ti" & ChrW(234) & "u " & ChrW(273) & ChrW(7873) & " Ti" & ChrW(7871) & "ng Vi" & ChrW(7879) & "t")
    Frame1.Caption = "H" & ChrW(7885) & "c Excel Online - Frame Ti" & ChrW(7871) & "ng Vi" & ChrW(7879) & "t"    
End Sub

Kết quả đạt được:

 

Link Dowload Add-in

Ngoài việc giải quyết được vấn đề cụ thể trong bài viết này, ngôn ngữ lập trình VBA còn có thể giúp bạn tự động hóa được rất nhiều công việc sử dụng Excel, Word, PowerPoint và các phần mềm khác. Để làm được điều đó, hãy bắt đầu với Khóa học VBA tại Hocexcel.online

VBA101 – Tự động hoá Excel với lập trình VBA cho người mới bắt đầu

VBA201 – Lập trình VBA nâng cao trong Excel


Tác giả: Tuấn Phạm

· · ·

Khóa học mới xuất bản