Chào các anh/chị!
Em gặp 1 vấn đề lỗi với font chữ mà không xử lý được, mong anh/chị nào biết chỉ giáo em với ạ.
ví dụ:
Chữ "ê" có code là 1, em dùng hàm Char(1) thì không trả về ê mà lại ra ký tự "?",
em code trong vba dùng ChrW() cũng bị lỗi "?" như trên ạ.
Máy em chạy win 10 home x64, đã cài 284 font tiếng việt, excel thì chạy bản 2016 pro ạ.
Em cảm ơn.
Em cảm ơn bác nhiều ạ!
Nhưng vấn đề của em còn oái ăm ở chỗ userform viết tiếng việt thì khi show lên các ký tự là tiếng việt thì hiển thị thành dấu chấm hỏi ạ.
Em chỉ bị lỗi với con laptop win 10 home x64 này thôi ạ.
Em cảm ơn bác nhiều ạ!
Nhưng vấn đề của em còn oái ăm ở chỗ userform viết tiếng việt thì khi show lên các ký tự là tiếng việt thì hiển thị thành dấu chấm hỏi ạ.
Em chỉ bị lỗi với con laptop win 10 home x64 này thôi ạ.
Em xin gửi bác file ạ.
Em xin mô tả lại lỗi:
Label trên (không lỗi font): được nhập Caption trên máy tính windows 10 Home x64, Office 2016 Pro (Máy 1)
Label dưới (bị lỗi font): được nhập trên windows 10 Pro x64, Office 2016 Pro (Máy 2)
Nếu form có combobox và additem là giá trị tiếng việt (mã code bé hơn 255) thì máy 2 hiển thị bị lỗi thành dấu ?, còn máy 1 không bị.
ví dụ: combobox.AddItem ="Mã" ~~> Máy 1 show form lên không bị lỗi, máy 2 bị.
Cả 2 máy tính đều dùng ngôn ngữ US, kiểu gõ US và dùng cùng 1 bộ gõ thứ 3 là EVKey ạ.
Em xin cảm ơn! Link file
Em xin gửi bác file ạ.
Em xin mô tả lại lỗi:
Label trên (không lỗi font): được nhập Caption trên máy tính windows 10 Home x64, Office 2016 Pro (Máy 1)
Label dưới (bị lỗi font): được nhập trên windows 10 Pro x64, Office 2016 Pro (Máy 2)
Nếu form có combobox và additem là giá trị tiếng việt (mã code bé hơn 255) thì máy 2 hiển thị bị lỗi thành dấu ?, còn máy 1 không bị.
ví dụ: combobox.AddItem ="Mã" ~~> Máy 1 show form lên không bị lỗi, máy 2 bị.
Cả 2 máy tính đều dùng ngôn ngữ US, kiểu gõ US và dùng cùng 1 bộ gõ thứ 3 là EVKey ạ.
Em xin cảm ơn! Link file
Hãy luôn luôn dùng như sau nếu muốn gửi cho mọi đối tác (tức mở trên mọi máy) mà không bị lỗi
Mã:
ComboBox1.AddItem "M" & ChrW(227)
Tức mọi ký tự Việt (unicode nói chung) đều thay bằng ChrW(<mã ký tự>).
Nhiều người dịch "nửa vời", tức một số ký tự thay bằng ChrW(...) nhưng một số ký tự thì để nguyên. Kết quả là mở trên máy mình thì nhìn đẹp nhưng mở trên máy khác thì "đầu trâu mặt ngựa".
***: Tôi không dùng Unikey bao giờ nhưng tôi biết là gõ được. Còn EVKey thì không bao giờ dùng, không bao giờ nhìn thấy mặt. Tôi từ thời xưa tới giờ toàn dùng bàn phím của Windows để gõ văn bản tiếng Việt.
Hãy luôn luôn dùng như sau nếu muốn gửi cho mọi đối tác (tức mở trên mọi máy) mà không bị lỗi
Mã:
ComboBox1.AddItem "M" & ChrW(227)
Tức mọi ký tự Việt (unicode nói chung) đều thay bằng ChrW(<mã ký tự>).
Nhiều người dịch "nửa vời", tức một số ký tự thay bằng ChrW(...) nhưng một số ký tự thì để nguyên. Kết quả là mở trên máy mình thì nhìn đẹp nhưng mở trên máy khác thì "đầu trâu mặt ngựa".
***: Tôi không dùng Unikey bao giờ nhưng tôi biết là gõ được. Còn EVKey thì không bao giờ dùng, không bao giờ nhìn thấy mặt. Tôi từ thời xưa tới giờ toàn dùng bàn phím của Windows để gõ văn bản tiếng Việt.
Em cảm ơn anh.
Anh cho em hỏi vấn đề như sau ạ: em dùng MsgBox ChrW() thì có mày hiển thị đúng và có máy bị lỗi thành dấu ?, anh biết lỗi này do đâu không ạ?
Do phiên bản win hay office hay gì ạ?
Em cảm ơn anh.
Anh cho em hỏi vấn đề như sau ạ: em dùng MsgBox ChrW() thì có mày hiển thị đúng và có máy bị lỗi thành dấu ?, anh biết lỗi này do đâu không ạ?
Do phiên bản win hay office hay gì ạ?
Cám ơn nhưng tôi đã, đang và sẽ không dùng.
Để viết tiếng Việt trên mạng, Word, Excel, notepad, tóm lại ở mọi nơi tôi không phải cài đặt Unikey hay bất cứ bộ gõ nào cả. Tôi dùng bàn phím của Windows có sẵn trong system thôi.
Anh có biết lỗi hiển thị tiếng việt khi em dùng ChrW() cho MsgBox không ạ, Với mày 1 em dùng bình thường, còn máy 2 thì bị lỗi (lỗi cả khi gõ trực tiếp trong Properties caption label)
Em cảm ơn anh!
Trong đoạn mã trên em dùng hàm UniVba trong diễn đàn để chuyển đổi ký tự sang mã ChrW() trong giao diện excel, sau đó em copy vào code, nhưng có vài ký tự có code number <255 thì được giữ nguyên, sau khi em copy và dán vào VBA thì tự động chuyển thành ký tự VNI và show MsgBox lên thì hiển thị đúng. Nếu em chuyển cả các mã <255 thành ChrW() thì vẫn đúng.
Còn đối với máy 2 lại bị lỗi nếu dùng ChrW() thì các mã >255 sẽ thành ?, còn các mã <255 hiển thị đúng, nếu dùng hoàn toàn VNI để tương thích với máy 1 thì máy 2 lại hiển thị nguyên mã VNI mà không phải là Unicode (trên máy 2 em copy mã được chuyển đổi trong excel bằng Function UniVba thì copy sang code không tự chuyển các mã <255 sang VNI)
Trong đoạn mã trên em dùng hàm UniVba trong diễn đàn để chuyển đổi ký tự sang mã ChrW() trong giao diện excel, sau đó em copy vào code, nhưng có vài ký tự có code number <255 thì được giữ nguyên, sau khi em copy và dán vào VBA thì tự động chuyển thành ký tự VNI và show MsgBox lên thì hiển thị đúng. Nếu em chuyển cả các mã <255 thành ChrW() thì vẫn đúng.
Còn đối với máy 2 lại bị lỗi nếu dùng ChrW() thì các mã >255 sẽ thành ?, còn các mã <255 hiển thị đúng, nếu dùng hoàn toàn VNI để tương thích với máy 1 thì máy 2 lại hiển thị nguyên mã VNI mà không phải là Unicode (trên máy 2 em copy mã được chuyển đổi trong excel bằng Function UniVba thì copy sang code không tự chuyển các mã <255 sang VNI)
1. Thực ra tôi muốn kiểm tra code của tôi chứ không phải code của bạn. Chuỗi s của tôi chắc chắn là unicode, vì thế tôi muốn kiểm nghiệm nó trong MsgBox của bạn vì bạn khẳng định là MsgBox của bạn hiển thị được tiếng Việt. Tôi quan tâm tới chuỗi s của tôi thôi. Tức chạy code của tôi.
2. Về code của bạn thì tôi chạy trên XP Home 32 bit + Excel 2010 32 bit, Windows 8 32 bit + Excel 2013 32 bit, Windows 10 64 bit + Excel 2007 32 bit. Trên cả 3 tôi có như hình
2. Về code của bạn thì tôi chạy trên XP Home 32 bit + Excel 2010 32 bit, Windows 8 32 bit + Excel 2013 32 bit, Windows 10 64 bit + Excel 2007 32 bit. Trên cả 3 tôi có như hình
Như trong hình anh test code của em, em nhìn thấy 1 vấn đề mà trên máy 2 của em cũng bị và cũng show Msg lỗi: đó là các mã <255 sẽ tự động hiên thị thành dấu chấm hỏi mà không còn là ký tự VNI như code nguyên thuỷ ==> những máy bị như thế tức sẽ lỗi khi dùng Msg, kể cả dùng hết ChrW() như code của anh.
Em đang thắc mắc là với máy 1 thì có điều gì mới làm cho nó hỗ trợ show Msg Unicode!!!!!!!!