VBA chưa hỗ trợ với bộ Unicode, Các ký tự hỗ trợ trong bảng mã Unicode mới chỉ được từ 0- 225 thôi. Nên các ký tự có mã unicode nhiều hơn sẽ hiển thị dấu (? )
Bởi vậy, để có thể gõ được tiếng việt trong VBA ta thực hiện theo 1 số cách thủ công như sau:
1. Gõ nội dung vào 1 ô trong bảng tính ( VD gõ vào ô A2) Thực hiện lệnh truy xuất nội dung của ô A2: Cells(1,2) = Sheets(“Sheet1”).cells(1,2). Nhược điểm là các ô trong sheet phải có dữ liệu. Nếu vô tình xóa đi thì dữ liệu cũng sẽ mất.
2: Sử dụng phép nối chuỗi và hàm Chrw để viết code. VD: Viết chữ Lập trình = “L”&chrw(7853)&”p trình”. Đối với cách này mình phải nhớ và biết được bảng mã unicode cuả từng ký tự. Có thể dựa vào Bảng mã để tham chiếu
3. Sử dụng 1 hàm tự tạo (UniVBa) để dịch lại nội dung gõ trong sheet ra bảng Unicode. Từ đó nhập bản dịch vào bảng lập trình ( quay trở lại cách 2).
Đoạn code dịch như sau:
Function UniVba(TxtUni As String) As String
If TxtUni = “” Then
UniVba = “”””””
Else
TxtUni = TxtUni & ” “
If AscW(Left(TxtUni, 1)) < 256 Then UniVba = “”””
For n = 1 To Len(TxtUni) – 1
uni1 = Mid(TxtUni, n, 1)
uni2 = AscW(Mid(TxtUni, n + 1, 1))
If AscW(uni1) > 255 And uni2 > 255 Then
UniVba = UniVba & “ChrW(” & AscW(uni1) & “) & “
ElseIf AscW(uni1) > 255 And uni2 < 256 Then
UniVba = UniVba & “ChrW(” & AscW(uni1) & “) & “””
ElseIf AscW(uni1) < 256 And uni2 > 255 Then
UniVba = UniVba & uni1 & “”” & “
Else
UniVba = UniVba & uni1
End If
Next
If Right(UniVba, 4) = ” & “”” Then
UniVba = Mid(UniVba, 1, Len(UniVba) – 4)
Else
UniVba = UniVba & “”””
End If
End If
End Function