MsgBox tiếng Việt Unicode đơn giản với sự trợ giúp của hàm Macro 4

Liên hệ QC
Coi thử đi
Chỉ có cái nhược diểm là tiêu dề không tiếng việt được
 
Dùng hàm msgboxuni là được chứ gì, chút xíu mình post code lên cho
Chỉ có cái nhược điểm là tiêu đề không tiếng việt được

Hàm MsgBoxUni do tôi lập trình ra, bạn copy được ở đâu đó nên không hiểu rõ bản chất của chuỗi unicode.

Hàm MsgBoxUni được lập trình sử dụng hàm API MessageBoxW của user32.dll của Windows. Đây là hàm chuẩn theo unicode dùng chung cho các ứng dụng Windows. Title không không lên tiếng Việt chỉ xảy ra với Windows XP vì font trên Title/Caption của Form không phả là font unicode. Muốn hiện đúng chuỗi unicode thì font chọn trong Control Panel là: tahoma; veranda; Time New Roman.

Hình ảnh dưới đây được chụp trên Windows Vista

image001.jpg


Bài viết gốc kèm theo mã nguồn hàm MsgBoxUni của tác giả Nguyễn Duy Tuân tại địa chỉ dưới đây:

 
Lần chỉnh sửa cuối:
Cảm ơn Nguyễn Duy Tuân đã chia sẻ về hàm MsgBoxUni

em có áp dụng hàm này của bác một thời gian dài từ win 7, win 8 đều thể hiện tốt, nhưng khi sang dùng Windows 10 Pro thì không còn đúng

ví dụ: gõ "Đã đăng nhập" và "Thời gian thử việc ..."

da dang nhap.png thu viec.png

không biết có còn chỉnh sửa gì trong code hay hệ thống nữa ko?
 
Lần chỉnh sửa cuối:
Làm sao để thay đổi Caption mặc định của hộp thông báo là "Microsoft Excel" bằng phương thức Application.ExecuteExcel14Macro vậy anh?
 
Làm sao để thay đổi Caption mặc định của hộp thông báo là "Microsoft Excel" bằng phương thức Application.ExecuteExcel14Macro vậy anh?
Xin lỗi bạn, trong đây nhiều ANH lắm, hỏng biết bạn hỏi anh nào vậy?

Nếu có hỏi liên quan đến bài nào thì nên trích dẫn bài đó nha bạn!
 
Cảm ơn Nguyễn Duy Tuân đã chia sẻ về hàm MsgBoxUni

em có áp dụng hàm này của bác một thời gian dài từ win 7, win 8 đều thể hiện tốt, nhưng khi sang dùng Windows 10 Pro thì không còn đúng

ví dụ: gõ "Đã đăng nhập" và "Thời gian thử việc ..."

View attachment 147011 View attachment 147014

không biết có còn chỉnh sửa gì trong code hay hệ thống nữa ko?
Mình thấy dùng bản mã Unicode tổ hợp thì hộp thông báo hiển thị được tiếng Việt, nhưng có vấn đề là khi gõ tiếng Việt trong code thì vị trí con trỏ không chính xác với vị trí của chữ, mỗi lần gõ chữ có dấu thì con trỏ nhảy thêm 1 bước gây khó khăn khi chỉnh sửa.
 

File đính kèm

  • Book1.xls
    33.5 KB · Đọc: 38
Mình thấy dùng bản mã Unicode tổ hợp thì hộp thông báo hiển thị được tiếng Việt, nhưng có vấn đề là khi gõ tiếng Việt trong code thì vị trí con trỏ không chính xác với vị trí của chữ, mỗi lần gõ chữ có dấu thì con trỏ nhảy thêm 1 bước gây khó khăn khi chỉnh sửa.

Sao không dùng bảng mã Unicode dựng sẳn đi bạn? Unicode tổ hợp khá rắc rối khi ghi trên caption của các control hoặc đối tượng.
 
Sao không dùng bảng mã Unicode dựng sẳn đi bạn? Unicode tổ hợp khá rắc rối khi ghi trên caption của các control hoặc đối tượng.

Không biết ở máy bạn thế nào nhưng mình thấy ở máy mình chỉ Unicode tổ hợp mới gõ được tiếng Việt trong code nếu không dùng hàm chuyển đổi ( mình dùng excel2013)
 
Lần chỉnh sửa cuối:
Không biết ở máy bạn thế nào nhưng mình thấy ở máy mình chỉ Unicode tổ hợp mới gõ được tiếng Việt trong code nếu không dùng hàm chuyển đổi ( mình dùng excel2013)
Vì bạn muốn gõ tiếng Việt trong VBA (cái thứ mà người dùng chẳng cần thấy) nên MsgBox bị lỗi font (cái hiển thị bị lỗi), vậy bạn muốn chọn cái nào thì tùy. Riêng gõ tiếng Việt trong đó thì font VNI-Times cũng gõ thấy vậy đâu nhất thiết phải Unicode Tổ hợp.

Tôi thì luôn chọn Unicode dựng sẳn thôi. Muốn có tiếng Việt thì tôi gõ ở sheet nào đó rồi gọi nó vào thôi.
 
Vì bạn muốn gõ tiếng Việt trong VBA (cái thứ mà người dùng chẳng cần thấy) nên MsgBox bị lỗi font (cái hiển thị bị lỗi), vậy bạn muốn chọn cái nào thì tùy. Riêng gõ tiếng Việt trong đó thì font VNI-Times cũng gõ thấy vậy đâu nhất thiết phải Unicode Tổ hợp.

Tôi thì luôn chọn Unicode dựng sẳn thôi. Muốn có tiếng Việt thì tôi gõ ở sheet nào đó rồi gọi nó vào thôi.
Mình cũng chỉ thích dùng Unicode dựng sẵn cho tiện, nhưng khi gọi vào MsgBox toàn bị lỗi font ( kiểu gõ telex).
Trong file gửi kèm đây mình dùng Msgbox hiển thị 3 câu ở 3 ô khác nhau thì chỉ có câu gõ bằng Unicode tổ hợp là không bị lỗi font. Mình không hiểu nguyên nhân tại sao, bạn xem qua rồi giải thích giúp với (sorry, gọi là "bạn" vì chưa biết tuổi ||||| )
 

File đính kèm

  • Book2.xls
    34.5 KB · Đọc: 27
Mình cũng chỉ thích dùng Unicode dựng sẵn cho tiện, nhưng khi gọi vào MsgBox toàn bị lỗi font ( kiểu gõ telex).
Trong file gửi kèm đây mình dùng Msgbox hiển thị 3 câu ở 3 ô khác nhau thì chỉ có câu gõ bằng Unicode tổ hợp là không bị lỗi font. Mình không hiểu nguyên nhân tại sao, bạn xem qua rồi giải thích giúp với (sorry, gọi là "bạn" vì chưa biết tuổi ||||| )
Sao không dùng kiểu sau đi cho nó khỏe thân vậy...
PHP:
Sub Test_MsgboxUnicode()
Dim CH As String, Dl As String
CH = "C" & ChrW(7897) & "ng h" & ChrW(242) & "a x" & ChrW(227) & " h" & ChrW(7897) _& "i ch" & ChrW(7911) & " ngh" & ChrW(297) & "a vi" & ChrW(7879) & "t Nam"
Dl = ChrW(272) & ChrW(7897) & "c L" & ChrW(7853) & "p - T" & ChrW(432) & " Do - H" _& ChrW(7841) & "nh Ph" & ChrW(250) & "c"
CreateObject("WScript.Shell").PopUp CH & vbNewLine & Dl, , "Thông Báo"
End Sub
 
Mình cũng chỉ thích dùng Unicode dựng sẵn cho tiện, nhưng khi gọi vào MsgBox toàn bị lỗi font ( kiểu gõ telex).
Trong file gửi kèm đây mình dùng Msgbox hiển thị 3 câu ở 3 ô khác nhau thì chỉ có câu gõ bằng Unicode tổ hợp là không bị lỗi font. Mình không hiểu nguyên nhân tại sao, bạn xem qua rồi giải thích giúp với (sorry, gọi là "bạn" vì chưa biết tuổi ||||| )
Hiển thị tiếng Việt ư? Quá đơn giản!

Mã:
Sub Test()
    Dim MyMsg As Long
    Dim MsgTitle As String, MsgText As String
    MsgTitle = Sheet1.Range("B1").Value & vbLf & Sheet1.Range("B2").Value & vbLf
    MsgText = Sheet1.Range("B3").Value & vbLf & vbLf & Sheet1.Range("B4").Value & vbLf
    MyMsg = Application.Assistant.DoAlert(MsgTitle, MsgText, msoAlertButtonYesNo, _
          msoAlertIconQuery, msoAlertDefaultFirst, msoAlertCancelDefault, False)
End Sub
 

File đính kèm

  • QuaDonGian.xls
    31.5 KB · Đọc: 133
thank các anh đẹp trai |||||||||||||||
 
Anh ơi, cái này để chạy tiếp lệnh khác nếu chọn Yes hoặc No thì làm như thế nào ạ.

Hiển thị tiếng Việt ư? Quá đơn giản!

Mã:
Sub Test()
    Dim MyMsg As Long
    Dim MsgTitle As String, MsgText As String
    MsgTitle = Sheet1.Range("B1").Value & vbLf & Sheet1.Range("B2").Value & vbLf
    MsgText = Sheet1.Range("B3").Value & vbLf & vbLf & Sheet1.Range("B4").Value & vbLf
    MyMsg = Application.Assistant.DoAlert(MsgTitle, MsgText, msoAlertButtonYesNo, _
          msoAlertIconQuery, msoAlertDefaultFirst, msoAlertCancelDefault, False)
End Sub
 
Có nhiều giải pháp cho MsgBox tiếng Việt Unicode, ở đây xin giới thiệu 1 giải pháp cực đơn giản với sự trợ giúp của hàm Macro 4
Các bước thực hiện:
1> Tạo 1 Name với nội dụng là đoạn text mà bạn cần hiển thị
ví dụ: MsgText ="Đây là MsgBox tiếng Việt"
2> Vẽ 1 CommandButton và chèn đoạn code này vào:
PHP:
Private Sub CommandButton2_Click()
  Application.ExecuteExcel4Macro ("ALERT(""" & Evaluate("MsgText") & """,2)")
End Sub
Lưu ý:
- Tham số2 trong đoạn code có thể thay thế từ 1 đến 3 (hãy thay thế và thí nghiệm xem thử)
- Xem file đính kèm (bên trong có luôn 1 đoạn hiển thị Statusbar cũng bằng macro 4)
Bài viết này tham khảo từ cách làm của bạn Đào Việt Cường (nhưng rút gọn để các bạn dể hiểu hơn)
Mến
ANH TUẤN
Các bạn giúp mình với ạ. Mình muốn ra Yes, No thì thay số 1,2,3 chọn số nào để ra mình đã thử từ 1 đến 3 mà không ra Yes, No. Mong các bạn giúp đỡ mình với ạ
 
Các bạn giúp mình với ạ. Mình muốn ra Yes, No thì thay số 1,2,3 chọn số nào để ra mình đã thử từ 1 đến 3 mà không ra Yes, No. Mong các bạn giúp đỡ mình với ạ
Sao không dùng bài #52? Ai đó dí súng vào đầu bắt dùng cách "này" à?
 
Hàm MsgBoxUni do tôi lập trình ra, bạn copy được ở đâu đó nên không hiểu rõ bản chất của chuỗi unicode.

Hàm MsgBoxUni được lập trình sử dụng hàm API MessageBoxW của user32.dll của Windows. Đây là hàm chuẩn theo unicode dùng chung cho các ứng dụng Windows. Title không không lên tiếng Việt chỉ xảy ra với Windows XP vì font trên Title/Caption của Form không phả là font unicode. Muốn hiện đúng chuỗi unicode thì font chọn trong Control Panel là: tahoma; veranda; Time New Roman.

Hình ảnh dưới đây được chụp trên Windows Vista

image001.jpg


Bài viết gốc kèm theo mã nguồn hàm MsgBoxUni của tác giả Nguyễn Duy Tuân tại địa chỉ dưới đây:

Sử dụng hàm này, nếu lựa chọn là Yes/No; nếu chọn Yes thì thực hiện lệnh A, thì phải làm sao bạn nhỉ?
 
Web KT
Back
Top Bottom