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

anhtuan1066

Thành viên gạo cội
Tham gia
10/3/07
Bài viết
5,802
Được thích
6,905
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
 

File đính kèm

  • UniMsgBox.xls
    24 KB · Đọc: 1,644
Mã:
Private Sub CommandButton2_Click()
  Application.ExecuteExcel4Macro ("ALERT(""" & Evaluate("MsgText") & """,2)")
End Sub
anhtuan1066 có nhiều chiêu quá hay. Không ngờ nó lại đơn giản đến thế !
Hạn chế của nó là phải đưa chuỗi ("MsgText") vào bằng name, đối số 1,2,3 phải nhập trực tiếp. Không thể thay bằng các biến được.
 
Mã:
Private Sub CommandButton2_Click()
  Application.ExecuteExcel4Macro ("ALERT(""" & Evaluate("MsgText") & """,2)")
End Sub
anhtuan1066 có nhiều chiêu quá hay. Không ngờ nó lại đơn giản đến thế !
Hạn chế của nó là phải đưa chuỗi ("MsgText") vào bằng name, đối số 1,2,3 phải nhập trực tiếp. Không thể thay bằng các biến được.
Thay dc chứ anh!
Ví dụ:
PHP:
Private Sub CommandButton2_Click()
  Dim i As Long
  For i = 1 To 3
    Application.ExecuteExcel4Macro ("ALERT(""" & Evaluate("MsgText") & """," & i & " )")
  Next i
End Sub
 
Thay dc chứ anh!
Ví dụ:
PHP:
Private Sub CommandButton2_Click()
  Dim i As Long
  For i = 1 To 3
    Application.ExecuteExcel4Macro ("ALERT(""" & Evaluate("MsgText") & """," & i & " )")
  Next i
End Sub
Cứ quen dấu phẩy trong MsgBox VBA, không để ý nó là chuỗi !
 
Thêm 1 MsgBox tiếng Việt Unicode đơn giản nữa đây! Thậm chí còn đơn giản hơn cái trên, ai nhìn thấy cũng có thể làm đc ngay (chỉ là VẼ và VIẾT)
Ở đây dùng DialogSheet
Code chỉ có vầy:
PHP:
Sub ShowMsgBox()
  DialogSheets("MsgBox").Show
End Sub
Xem file!
MsgBox này còn "ăn tiền" ở chổ: Bạn muốn cho nó nằm ở vị trí nào thì nó sẽ nằm vị trí đấy! (trong khi với MsgBox thông thường là điều không dể dàng tí nào)
 

File đính kèm

  • UniMsgBox2.xls
    19 KB · Đọc: 1,084
Thêm 1 MsgBox tiếng Việt Unicode đơn giản nữa đây! Thậm chí còn đơn giản hơn cái trên, ai nhìn thấy cũng có thể làm đc ngay (chỉ là VẼ và VIẾT)
Ở đây dùng DialogSheet
Code chỉ có vầy:
PHP:
Sub ShowMsgBox()
  DialogSheets("MsgBox").Show
End Sub
Xem file!
MsgBox này còn "ăn tiền" ở chổ: Bạn muốn cho nó nằm ở vị trí nào thì nó sẽ nằm vị trí đấy! (trong khi với MsgBox thông thường là điều không dể dàng tí nào)

Cách này rất hay, mình muốn vận dụng luôn để làm chương trình nhưng chưa làm được vì mình đang mắc một số vấn đề sau:
1. Mình muốn "MsgBox" có thêm nút Cancel, việc tạo thêm nút thì thì mình làm được nhưng làm thế nào để máy hiểu được mình chọn nút này (mục đích là khi ta chọn cancel thì exit sub).
2. Có thể tạo nhiều "MsgBox" (Msg1, Msg2, Msg3...) trong DialogSheets("MsgBox") không? nếu được thì câu lệnh gọi Msg... như thế nào? (tôi đã làm thử bằng cách copy ra nhiều Msg cái nhưng nó chỉ hiện được 1 Msg gốc) hay là mỗi Msg phải làm riêng 1 DialogSheets?.
Thanks!
 
Cách này rất hay, mình muốn vận dụng luôn để làm chương trình nhưng chưa làm được vì mình đang mắc một số vấn đề sau:
1. Mình muốn "MsgBox" có thêm nút Cancel, việc tạo thêm nút thì thì mình làm được nhưng làm thế nào để máy hiểu được mình chọn nút này (mục đích là khi ta chọn cancel thì exit sub).!
Anh muốn tạo thêm bao nhiêu nút hay ComboBox, ListBox gì gì đó cũng ko có vấn đề. Cách dùng vẩn như khi anh dùng các Object trên thanh Form thôi, nghĩa là khi anh muốn Object nào làm việc gì thì viết cho nó 1 Sub, tiếp theo Assign macro object cho sub là xong!
Trường hợp anh muốn khi bấm nút OK thì làm 1 việc, còn Cancel thì ko làm gì cả. Vậy anh xem file đính kèm dưới đây (Gán nút OK cho 1 sub, còn Cancel thi ko cần, anh bấm vào nó sẽ thoát Form ngay)
2. Có thể tạo nhiều "MsgBox" (Msg1, Msg2, Msg3...) trong DialogSheets("MsgBox") không? nếu được thì câu lệnh gọi Msg... như thế nào? (tôi đã làm thử bằng cách copy ra nhiều Msg cái nhưng nó chỉ hiện được 1 Msg gốc) hay là mỗi Msg phải làm riêng 1 DialogSheets?.
Thanks!
Theo chổ em biết thì không thể... Nếu muốn bao nhiêu MsgBox, anh Insert bấy nhiêu Dialog sheet (click phải sheet tab, chọn Insert)
Thật ra cái em đang làm ở file trên, nêu nói nó là MsgBox cũng không đúng... chỉ là giả lập MsgBox mà thôi. Đúng ra anh phải xem mổi 1 Dialog sheet như 1 UserForm thì chính xác hơn (mổi Dialog sheet có thể chèn rất nhiều Object)
Với những ai cần 1 UserForm với các tính năng đơn giản thì DialogSheet là lựa chọn khá thích hợp (vẽ vời đơn giản, không đòi hỏi cao cấp, viết code khá dể dàng)
 

File đính kèm

  • UniMsgBox3.xls
    20 KB · Đọc: 611
Lần chỉnh sửa cuối:
Với cách này ta có thể lợi dụng để làm Form với giao diện được cải thiện hoàn toàn so với VBA và 1 điểm nữa đó là có thể đặt ký tự truy cập nhanh (Accelerator Key) cho các control nhưng lại gặp phải vấn đề về xử lý các sự kiện. Nan giải thật.
 
Với cách này ta có thể lợi dụng để làm Form với giao diện được cải thiện hoàn toàn so với VBA và 1 điểm nữa đó là có thể đặt ký tự truy cập nhanh (Accelerator Key) cho các control nhưng lại gặp phải vấn đề về xử lý các sự kiện. Nan giải thật.
Được cái này mất cái kia mà!
Bạn có thể cho 1 ví dụ về khó khăn khi xử lý các sự kiện được không? Biết đâu có cách!
 
Tôi vừa thử nhưng không biết là làm thế nào để xuất hiện các sự kiện, thí dụ như mouse_up, down, move rồi việc truy xuất thông tin trên các control, quản lý control...
Đơn giản như tạo 1 form nhập liệu gồm 1 textbox và 1 button, khi click vào button thì sẽ gán giá trị của textbox vào cells(1,1) mà tôi cũng chẳng biết phải làm thế nào.
 
Tôi vừa thử nhưng không biết là làm thế nào để xuất hiện các sự kiện, thí dụ như mouse_up, down, move rồi việc truy xuất thông tin trên các control, quản lý control...
Đơn giản như tạo 1 form nhập liệu gồm 1 textbox và 1 button, khi click vào button thì sẽ gán giá trị của textbox vào cells(1,1) mà tôi cũng chẳng biết phải làm thế nào.
Bạn tham khảo thử trang này:
http://www.mrexcel.com/forum/showthread.php?t=390035
Thấy cũng hay đấy (có 1 ví dụ)
 
Ồ, hay đấy, có lẽ lại phải nghiên cứu về mảng này xem thế nào. Không ngờ nó lại quản lý control theo dạng mảng, như kiểu VB6, hình như thằng này nó lấy control chuẩn của windows thì phải.
 
Hỏi thêm

Em sử dụng đoạn code
Mã:
Private Sub CommandButton2_Click()
  Application.ExecuteExcel4Macro ("ALERT(""" & Evaluate("MsgText") & """,1)")
End Sub
và thu được MsgBox có hình như sau
vidu1.jpg

Các bác hướng dẫn em bằng cách nào để:
- Thay title của cái bảng trên
- Khi bấm vào OK thì nó làm tiếp việc khác.
 
Lần chỉnh sửa cuối:
Em sử dụng đoạn code
Mã:
Private Sub CommandButton2_Click()
  Application.ExecuteExcel4Macro ("ALERT(""" & Evaluate("MsgText") & """,1)")
End Sub
và thu được MsgBox có hình như sau
vidu1.jpg

Các bác hướng dẫn em bằng cách nào để:
- Thay title của cái bảng trên
- Khi bấm vào OK thì nó làm tiếp việc khác.
Đoạn code này
Application.ExecuteExcel4Macro ("ALERT(""" & Evaluate("MsgText") & """,1)")
sẽ trả về giá trị = TRUE nếu bạn bấm OKFALSE nếu bạn bấm Cancel ---> Từ đây bạn biết phải làm gì rồi chứ
Ví dụ:
PHP:
If Application.ExecuteExcel4Macro ("ALERT(""" & Evaluate("MsgText") & """,1)") then
  '... Làm gì đó...
Else
 '... Làm cái khác
End If
Còn tiêu đề của Msg thì hình như không có cách thay đổi
 
msgbox tiếng việt đơn giản nhất đây!!!

Chào các bác !!!! mình đã làm được Msgbox VBA thông báo bằng tiếng việt thật đơ giản !!!đây
Các bác nhớ chỉ chỉnh ở ngoài win XP thui thì trong vba sẽ hỗ trợ ra tiếng việt thôi!!!

Cách chỉnh trong win đây
Cài đặt hệ điều hành 2K/XP

Vào Control panel->Regional and Language Options. Trong bảng này có 3 tab:

+ Tab Regional options (gọi là Tab 1)

+ Tab Languages (gọi là Tab 2)

+ Tab Advanced (gọi là Tab 3)

- Đầu tiên bạn vào Tab 2, đánh dấu chọn "Install files for complex script and right-to-left languages (including Thai)" (nếu chưa chọn). Có thể chương trình yêu cầu bạn đưa vào đĩa cài đặt WinXP(2K). Lưu ý: không nên dùng các đĩa cài đặt XP đã được chỉnh sửa như Wesmosiss WinXP,...

- Chọn OK và khởi động lại máy.

- Vào lại Tab 1, chọn Vietnamese.

- Vào Tab 3, chọn Vietnamese.

- Chọn OK và khởi động lại máy.

Cài đặt MS Office

Sau khi đã cài đặt MS Office, bạn vào Start -> Programs -> Microsoft Office Tools -> Microsoft Office Language Settings, chọn ngôn ngữ mặc định là Vietname.
chúc các bác thành công!!!
xin lỗi các bác!!Mình ko biết post hình lên diễn đàn!!!
có gì đt 0983304958 hay gời mail quan314k@yahoo.com mình chỉ tận tình!!!hiiiiiiiiiiiiiii
 
Lần chỉnh sửa cuối:
Chào các bác !!!! mình đã làm được Msgbox VBA thông báo bằng tiếng việt thật đơ giản !!!đây
Các bác nhớ chỉ chỉnh ở ngoài win XP thui thì trong vba sẽ hỗ trợ ra tiếng việt thôi!!!

Trước tiên, cám ơn BÁC! Trong trường hợp của Bác là Win2K/XP, thế nhưng đối với Vista hoặc Win7 thì sao? (Tôi chưa dám thử vì ngại lỗi chương trình) Bác có cao kiến gì không?
Riêng tôi thì vẫn phải chọn code MsgUni (hình như của Thầy TUÂN UNI), bởi vì qua máy bất kỳ cũng chạy được tiếng Việt, còn cách của bạn, có thể chỉ tốt cho máy của tôi.

Cũng xin hỏi, có ai đã làm như cách của quan314k chưa? Và có kinh nghiệm gì không?
 
Lần chỉnh sửa cuối:
Trước tiên, cám ơn BÁC! Trong trường hợp của Bác là Win2K/XP, thế nhưng đối với Vista hoặc Win7 thì sao? (Tôi chưa dám thử vì ngại lỗi chương trình) Bác có cao kiến gì không?
Riêng tôi thì vẫn phải chọn code MsgUni (hình như của Thầy TUÂN UNI), bởi vì qua máy bất kỳ cũng chạy được tiếng Việt, còn cách của bạn, có thể chỉ tốt cho máy của tôi.

Cũng xin hỏi, có ai đã làm như cách của quan314k chưa? Và có kinh nghiệm gì không?


Tôi cũng đã thử cách của quan314k , và thực hiện như sau:
Máy tôi dùng UNIKEY
- Kiểu gõ : VNI
- Bảng mã : Unicode tổ hợp
Có nhận xét là khi đánh chữ trong MsgBox con trỏ chuột chạy khá xa so với các chữ đang đánh không nằm kế chữ đang đánh. Nên đánh câu mới dễ hơn là sửa những câu cũ.
Không biết quan314k có hướng dẫn thêm gì không?
 
Tôi cũng đã thử cách của quan314k , và thực hiện như sau:
Máy tôi dùng UNIKEY
- Kiểu gõ : VNI
- Bảng mã : Unicode tổ hợp
Có nhận xét là khi đánh chữ trong MsgBox con trỏ chuột chạy khá xa so với các chữ đang đánh không nằm kế chữ đang đánh. Nên đánh câu mới dễ hơn là sửa những câu cũ.
Không biết quan314k có hướng dẫn thêm gì không?

icon7.gif
msgbox tiếng việt đơn giản nhất đây!!!
Chào các bác !!!! mình đã làm được Msgbox VBA thông báo bằng tiếng việt thật đơ giản !!!đây
Các bác nhớ chỉ chỉnh ở ngoài win XP thui thì trong vba sẽ hỗ trợ ra tiếng việt thôi!!!

Cách chỉnh trong win đây
Cài đặt hệ điều hành 2K/XP

Vào Control panel->Regional and Language Options. Trong bảng này có 3 tab:

+ Tab Regional options (gọi là Tab 1)

+ Tab Languages (gọi là Tab 2)

+ Tab Advanced (gọi là Tab 3)

- Đầu tiên bạn vào Tab 2, đánh dấu chọn "Install files for complex script and right-to-left languages (including Thai)" (nếu chưa chọn). Có thể chương trình yêu cầu bạn đưa vào đĩa cài đặt WinXP(2K). Lưu ý: không nên dùng các đĩa cài đặt XP đã được chỉnh sửa như Wesmosiss WinXP,...

- Chọn OK và khởi động lại máy.

- Vào lại Tab 1, chọn Vietnamese.

- Vào Tab 3, chọn Vietnamese.

- Chọn OK và khởi động lại máy.

Cài đặt MS Office

Sau khi đã cài đặt MS Office, bạn vào Start -> Programs -> Microsoft Office Tools -> Microsoft Office Language Settings, chọn ngôn ngữ mặc định là Vietname.
chúc các bác thành công!!!
có gì đt 0983304958 hay gời mail quan314k@yahoo.com mình chỉ tận tình!!!hiiiiiiiiiiiiiii

gởi các bác xem file mình làm nhe!!!! win XP/vista/2000/windơw 7đều đươc cả các bác!!!!!!!!!!! chép qua máy tính khác định như trên là vẫn hiện ra Msgbox tiếng việt hà!!!!
 

File đính kèm

  • untitled1111.JPG
    untitled1111.JPG
    167.8 KB · Đọc: 102
  • untitled.JPG
    untitled.JPG
    166.1 KB · Đọc: 127
  • untitled1.JPG
    untitled1.JPG
    129.4 KB · Đọc: 107
  • untitled11.JPG
    untitled11.JPG
    168.3 KB · Đọc: 71
Lần chỉnh sửa cuối:
các anh ơi gõ chữ trong msgbox ở chỗ nào vậy?
 
Em đã setup đủ các font cho máy tính rồi mà sao không thể viết được font unicode trong vba????
Mà khi chỉnh vietnamese cho language setting thì excel sẽ tự động chỉnh các mặc định theo quy định việt nam (ví dụ như "." thành ",") như thế rất bất tiện.
Các Anh chỉ giúp E!
 
Web KT
Back
Top Bottom