phantuhuong 227 Báo cáo bài đăng Đã đăng Tháng 11 3, 2008 VB6 cũng như VBA, việc thể hiện tiếng Việt rất khó khăn vì chúng không trợ Unicode. Module sau sẽ giúp chúng ta sử dụng thông báo (Msgbox) hiện tiếng Việt với MsgboxUni (biến tấu từ Msgbox): '****************************************'Tac gia: Nguyen Duy Tuan 'Tel : 0904.210.337 'E.Mail : tuanktcdcn@yahoo.com 'Website: www.bluesofts.net '**************************************** 'Khai bao cac ham API trong thu vien User32.DLL Private Declare Function GetActiveWindow Lib "user32" () As Long Private Declare 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 Variant, Optional ByVal Buttons As VbMsgBoxStyle, Optional ByVal TitleUni As Variant = vbNullString) As VbMsgBoxResult 'Function MsgBoxUni(ByVal PromptUni As Variant, Optional ByVal Buttons As VbMsgBoxStyle = vbOKOnly, Optional ByVal TitleUni As Variant, Optional HelpFile, Optional Context) As VbMsgBoxResult 'BStrMsg,BStrTitle : La chuoi Unicode Dim BStrMsg, BStrTitle 'Hàm StrConv Chuyen chuoi ve ma Unicode BStrMsg = StrConv(PromptUni, vbUnicode) BStrTitle = StrConv(TitleUni, vbUnicode) MsgBoxUni = MessageBoxW(GetActiveWindow, BStrMsg, BStrTitle, Buttons) End Function 'Ham TCVN3toUNICODE duoc viet boi Binh - OverAC 'www.giaiphapexcel.com Public Function TCVN3toUNICODE(vnstr As String) Dim C As String, i As Integer For i = 1 To Len(vnstr) C = Mid(vnstr, i, 1) Select Case C Case "a": C = ChrW$(97) Case "¸": C = ChrW$(225) Case "µ": C = ChrW$(224) Case "¶": C = ChrW$(7843) Case "·": C = ChrW$(227) Case "¹": C = ChrW$(7841) Case "¨": C = ChrW$(259) Case "¾": C = ChrW$(7855) Case "»": C = ChrW$(7857) Case "¼": C = ChrW$(7859) Case "½": C = ChrW$(7861) Case "Æ": C = ChrW$(7863) Case "©": C = ChrW$(226) Case "Ê": C = ChrW$(7845) Case "Ç": C = ChrW$(7847) Case "È": C = ChrW$(7849) Case "É": C = ChrW$(7851) Case "Ë": C = ChrW$(7853) Case "e": C = ChrW$(101) Case "Ð": C = ChrW$(233) Case "Ì": C = ChrW$(232) Case "Î": C = ChrW$(7867) Case "Ï": C = ChrW$(7869) Case "Ñ": C = ChrW$(7865) Case "ª": C = ChrW$(234) Case "Õ": C = ChrW$(7871) Case "Ò": C = ChrW$(7873) Case "Ó": C = ChrW$(7875) Case "Ô": C = ChrW$(7877) Case "Ö": C = ChrW$(7879) Case "o": C = ChrW$(111) Case "ã": C = ChrW$(243) Case "ß": C = ChrW$(242) Case "á": C = ChrW$(7887) Case "â": C = ChrW$(245) Case "ä": C = ChrW$(7885) Case "«": C = ChrW$(244) Case "è": C = ChrW$(7889) Case "å": C = ChrW$(7891) Case "æ": C = ChrW$(7893) Case "ç": C = ChrW$(7895) Case "é": C = ChrW$(7897) Case "¬": C = ChrW$(417) Case "í": C = ChrW$(7899) Case "ê": C = ChrW$(7901) Case "ë": C = ChrW$(7903) Case "ì": C = ChrW$(7905) Case "î": C = ChrW$(7907) Case "i": C = ChrW$(105) Case "Ý": C = ChrW$(237) Case "×": C = ChrW$(236) Case "Ø": C = ChrW$(7881) Case "Ü": C = ChrW$(297) Case "Þ": C = ChrW$(7883) Case "u": C = ChrW$(117) Case "ó": C = ChrW$(250) Case "ï": C = ChrW$(249) Case "ñ": C = ChrW$(7911) Case "ò": C = ChrW$(361) Case "ô": C = ChrW$(7909) Case "": C = ChrW$(432) Case "ø": C = ChrW$(7913) Case "õ": C = ChrW$(7915) Case "ö": C = ChrW$(7917) Case "÷": C = ChrW$(7919) Case "ù": C = ChrW$(7921) Case "y": C = ChrW$(121) Case "ý": C = ChrW$(253) Case "ú": C = ChrW$(7923) Case "û": C = ChrW$(7927) Case "ü": C = ChrW$(7929) Case "þ": C = ChrW$(7925) Case "®": C = ChrW$(273) Case "A": C = ChrW$(65) Case "¡": C = ChrW$(258) Case "¢": C = ChrW$(194) Case "E": C = ChrW$(69) Case "£": C = ChrW$(202) Case "O": C = ChrW$(79) Case "¤": C = ChrW$(212) Case "¥": C = ChrW$(416) Case "I": C = ChrW$(73) Case "U": C = ChrW$(85) Case "¦": C = ChrW$(431) Case "Y": C = ChrW$(89) Case "§": C = ChrW$(272) End Select TCVN3toUNICODE = TCVN3toUNICODE + C Next i End Function Public Function UNC(strTCVN3 As String) UNC = TCVN3toUNICODE(strTCVN3) End Function Thủ tục dưới đây: Private Sub CommandButton2_Click() MsgBoxUni UNC("Chµo mõng c¸c b¹n ®Õn víi ng«n ng÷ lËp tr×nh VBA trong AutoCad"), vbInformation, UNC("DiÔn ®µn www.cadviet.com") End Sub Tuy nhiên với phương thức InputBox hiện vẫn đang "bó tay". Bác nào có kinh nghiệm cho ý kiến nhé. Chia sẻ bài đăng này Liên kết tới bài đăng Chia sẻ trên các trang web khác
Nguyen Hoanh 4670 Báo cáo bài đăng Đã đăng Tháng 11 3, 2008 (Đă chỉnh sửa) Tuy nhiên với phương thức InputBox hiện vẫn đang "bó tay". Bác nào có kinh nghiệm cho ý kiến nhé. Em tìm được trên mạng cái UniInputBox, em test rồi, chay good lắm. Về mặt nguyên tắc thì cũng giống như cái bác Hướng vừa post, là làm hàm chuyển TCVN sang Unicode và sử dụng lại một số hàm API của Windows. Phần code hàm chuyển font của người viết đoạn code dưới đây sáng sủa hơn một chút, đỡ phải làm một đoạn case dài dằng dặc. Code của form *** Download ở bài bên dưới **** Code của Module: *** Download ở bài bên dưới **** Chỉnh sửa Tháng 11 5, 2008 theo Nguyen Hoanh Chỉnh sửa vì code hiển thị không đúng, xin đọc bài viết phía bên dưới 1 Chia sẻ bài đăng này Liên kết tới bài đăng Chia sẻ trên các trang web khác
phantuhuong 227 Báo cáo bài đăng Đã đăng Tháng 11 5, 2008 Cái này bên Excel chạy tốt, nhưng Cad vẫn bị hạn chế. Riêng phương thức InputBox thì phải sử dụng Application.InputBox mới hiện được chữ tiếng Việt. Chia sẻ bài đăng này Liên kết tới bài đăng Chia sẻ trên các trang web khác
Nguyen Hoanh 4670 Báo cáo bài đăng Đã đăng Tháng 11 5, 2008 Cái này bên Excel chạy tốt, nhưng Cad vẫn bị hạn chế. Riêng phương thức InputBox thì phải sử dụng Application.InputBox mới hiện được chữ tiếng Việt. Code trên là em thử nghiệm thành công với AutoCAD mà bác! Chia sẻ bài đăng này Liên kết tới bài đăng Chia sẻ trên các trang web khác
phantuhuong 227 Báo cáo bài đăng Đã đăng Tháng 11 5, 2008 Code trên là em thử nghiệm thành công với AutoCAD mà bác! Đang nói về code mình post Hoành ạ. Còn code Hoành post mình chạy toàn thấy lỗi, có thể tải file nên được không? Chia sẻ bài đăng này Liên kết tới bài đăng Chia sẻ trên các trang web khác
Nguyen Hoanh 4670 Báo cáo bài đăng Đã đăng Tháng 11 5, 2008 Đang nói về code mình post Hoành ạ. Còn code Hoành post mình chạy toàn thấy lỗi, có thể tải file nên được không? Đúng là đoạn code trên bị lỗi, do khi dòng quá dài sẽ bị tự động ngắt dòng. Do đó hằng số string bị thay đổi giá trị. Đây là file trên: InputBoxTiengViet.dvb 2 Chia sẻ bài đăng này Liên kết tới bài đăng Chia sẻ trên các trang web khác
phantuhuong 227 Báo cáo bài đăng Đã đăng Tháng 4 10, 2012 Còn một vấn đề nữa là Việt hóa Cation của Form. Trong Excel thì tôi đã thực hiện được, còn AutoCad thì chưa. Chia sẻ bài đăng này Liên kết tới bài đăng Chia sẻ trên các trang web khác
phantuhuong 227 Báo cáo bài đăng Đã đăng Tháng 1 16, 2019 Vào lúc 5/11/2008 tại 21:36, Nguyen Hoanh đã nói: Đúng là đoạn code trên bị lỗi, do khi dòng quá dài sẽ bị tự động ngắt dòng. Do đó hằng số string bị thay đổi giá trị. Đây là file trên: InputBoxTiengViet.dvb Tôi tải lại InputBox tiếng Việt trong VBA. InputBoxTiengViet.rar 1 Chia sẻ bài đăng này Liên kết tới bài đăng Chia sẻ trên các trang web khác