• Lỗi font chữ khi sử dụng Tiếng Việt
  • 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
    [Hình: xUhGywv.png]
    [Hình: MimmSGt.png]
    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. 
    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
    [Hình: xUhGywv.png]
    [Hình: MimmSGt.png]
    Em cảm ơn ạ!
    Cài lại win thôi. chứ vấn đền mình nghĩ không phải nằm ở office
  • 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 StringOptional ByVal Buttons As VbMsgBoxStyle vbOKOnlyOptional ByVal sTitleUni As String vbNullString) As VbMsgBoxResult
        msgBoxUni 
    MessageBoxW(0StrPtr(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.