-
Lỗi font chữ khi sử dụng Tiếng Việt
AnNguyen > 25-09-23, 09:18 AM
Em gặp phải 1 vấn đề lỗi font chữ mà chưa thể khắc phục được. Máy cài win10 pro, office 2019 plus.
dùng đến hơn chục máy không vấn đề gì những riêng có 1 cái máy này thì em không hiểu sao? mặc dù em đã cài lại cả office cho nó mà vẫn bị lỗi font.
Em sử dụng kiểu convert chữ unicode ("aa" -> "â", "looxi" -> "Lỗi") sử dụng
Em sử dụng code sau để hiển thị Messagebox Tiếng Việt. Nhưng lạ 1 chỗ là đến trên form cũng bị lỗi chứ không phải riêng messagebox ạ.
Mã:Private Declare PtrSafe Function GetActiveWindow Lib "user32" () As Long
Private Declare PtrSafe Function MessageBoxW Lib "user32" (ByVal hwnd As Long, ByVal lpText As String, ByVal lpCaption As String, ByVal wType As Long) As Long
Function MsgBoxUni(ByVal PromptUni As String, Optional ByVal Buttons As VbMsgBoxStyle = vbOKOnly, Optional ByVal TitleUni As String = vbNullString) As VbMsgBoxResult
Dim BStrMsg, BStrTitle
BStrMsg = StrConv(UniConvert(PromptUni, "Telex"), vbUnicode)
MsgBoxUni = MessageBoxW(GetActiveWindow, BStrMsg, BStrTitle, Buttons)
End Function
Em cảm ơn ạ! -
RE: Lỗi font chữ khi sử dụng Tiếng Việt
danhxetnghiem > 25-09-23, 11:11 AM
(25-09-23, 09:18 AM)AnNguyen Đã viết: Em gặp phải 1 vấn đề lỗi font chữ mà chưa thể khắc phục được. Máy cài win10 pro, office 2019 plus.
Cài lại win thôi. chứ vấn đền mình nghĩ không phải nằm ở office
dùng đến hơn chục máy không vấn đề gì những riêng có 1 cái máy này thì em không hiểu sao? mặc dù em đã cài lại cả office cho nó mà vẫn bị lỗi font.
Em sử dụng kiểu convert chữ unicode ("aa" -> "â", "looxi" -> "Lỗi") sử dụng
Em sử dụng code sau để hiển thị Messagebox Tiếng Việt. Nhưng lạ 1 chỗ là đến trên form cũng bị lỗi chứ không phải riêng messagebox ạ.
Mã:Private Declare PtrSafe Function GetActiveWindow Lib "user32" () As Long
Private Declare PtrSafe Function MessageBoxW Lib "user32" (ByVal hwnd As Long, ByVal lpText As String, ByVal lpCaption As String, ByVal wType As Long) As Long
Function MsgBoxUni(ByVal PromptUni As String, Optional ByVal Buttons As VbMsgBoxStyle = vbOKOnly, Optional ByVal TitleUni As String = vbNullString) As VbMsgBoxResult
Dim BStrMsg, BStrTitle
BStrMsg = StrConv(UniConvert(PromptUni, "Telex"), vbUnicode)
MsgBoxUni = MessageBoxW(GetActiveWindow, BStrMsg, BStrTitle, Buttons)
End Function
Em cảm ơn ạ! -
RE: Lỗi font chữ khi sử dụng Tiếng Việt
ongke0711 > 25-09-23, 11:56 AM
Em đổi qua dùng hàm này xem:
Mã PHP:#If VBA7 Then
Public Declare PtrSafe Function MessageBoxW Lib "user32" _
(ByVal hwnd As LongPtr, _
ByVal lpText As LongPtr, _
ByVal lpCaption As LongPtr, _
ByVal wType As Long) As Long
#Else
Public Declare Function MessageBoxW Lib "user32" _
(ByVal hwnd As Long, _
ByVal lpText As Long, _
ByVal lpCaption As Long, _
ByVal wType As Long) As Long
#End If
Public Function msgBoxUni(ByVal sMsgUni As String, Optional ByVal Buttons As VbMsgBoxStyle = vbOKOnly, Optional ByVal sTitleUni As String = vbNullString) As VbMsgBoxResult
msgBoxUni = MessageBoxW(0, StrPtr(sMsgUni), StrPtr(sTitleUni), Buttons)
End Function
- Chuỗi thì chuyển đổi sẳn rồi đưa vô code VBA.
- Hàm trên khác cái hàm em đang làm ở chỗ là nó trỏ thẳng vào ô nhớ chứa đoạn text chứ không dịch lại nên có thể tránh lỗi font.
Em thử xem.
Nếu không được thì bỏ luôn cái hàm này đi, nó không xử lý được nhiều trường hợp, dùng Application.DoAlert xem.