Không sử dụng được tiếng Việt trên form?

Liên hệ QC

tanlahill

Thành viên chính thức
Tham gia
2/9/08
Bài viết
68
Được thích
138
Nghề nghiệp
Kinh doanh
Tôi tải UniVba về và làm theo hướng dẫn nhưng không hiện được tiếng Việt trên form mà lại bị bắt lỗi MsgBoxUni. Xin mọi người xem file và chỉ giúp. Cám ơn.
 
Lần chỉnh sửa cuối:
Tôi tải UniVba về và làm theo hướng dẫn nhưng không hiện được tiếng Việt trên form mà lại bị bắt lỗi MsgBoxUni. Xin mọi người xem file và chỉ giúp. Cám ơn.

File của bạn không bị lỗi mới là lạ đó! Không có Hàm MsgBoxUni thì làm sao mà nó chạy!
Trong Module của bạn, bạn không cần phải làm rắc rối vậy đâu, bạn có thể xoá hết trong module rồi chép đoạn code này vào module đó nhé!
PHP:
Option Explicit
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 = vbOKOnly, Optional ByVal TitleUni As Variant = vbNullString) As VbMsgBoxResult
Dim BStrMsg, BStrTitle
BStrMsg = StrConv(PromptUni, vbUnicode)
BStrTitle = StrConv(TitleUni, vbUnicode)
MsgBoxUni = MessageBoxW(GetActiveWindow, BStrMsg, BStrTitle, Buttons)
End Function
 
'===========================
Sub Rectangle1_Click()
UserForm1.Show
End Sub
 
Lần chỉnh sửa cuối:
Upvote 0
Tôi tải UniVba về và làm theo hướng dẫn nhưng không hiện được tiếng Việt trên form mà lại bị bắt lỗi MsgBoxUni. Xin mọi người xem file và chỉ giúp. Cám ơn.
Bạn sử dụng hàm MsgBoxUni mà trong Module không có cái hàm này thì lỗi là đúng rồi còn gì nữa. Chắc là do bạn copy mà để sót lại cái phần quan trọng nhất rồi.

Mấy cái hàm MsgBoxUni ở trên thực chất vẫn không gõ trực tiếp được font Uni trong VBE. Mà phải nhờ trợ giúp của cái hàm ChrW. Mà cái hàm này làm sao ta có thể nhớ được các tham số chứ. Như ChrW(7845) thì cũng không biết nó là gì trừ khi cho nó chạy.

Bạn tham khảo thêm mấy cái hàm mình viết hỗ trợ cho VBA, nhập trực tiếp font Unicode trong VBE, và có cả hàm dùng cho kiểu gõ Telex nữa. Trong bài này có hàm UniVBA, UniVBAT và MsgUni, MsgUniT
http://www.giaiphapexcel.com/forum/showthread.php?t=17469
 
Lần chỉnh sửa cuối:
Upvote 0
...Mấy cái hàm MsgBoxUni ở trên thực chất vẫn không gõ trực tiếp được font Uni trong VBE. Mà phải nhờ trợ giúp của cái hàm ChrW. Mà cái hàm này làm sao ta có thể nhớ được các tham số chứ. Như ChrW(7845) thì cũng không biết nó là gì trừ khi cho nó chạy...

Bởi vậy, người Việt Nam mình hay lắm, thông minh lắm, chế biến đủ kiểu, miễn là hiển thị được Tiếng Việt.
Ví như: MsgboxUni Range("A1").Value
Như thế thì viết thế nào mà chẳng được trên Sheet phải không? Đâu cần nhớ ChrW() gì gì làm chi cho nhức óc.
 
Upvote 0
Thật tuyệt vời! Rất cám ơn.

File của bạn không bị lỗi mới là lạ đó! Không có Hàm MsgBoxUni thì làm sao mà nó chạy!
Trong Module của bạn, bạn không cần phải làm rắc rối vậy đâu, bạn có thể xoá hết trong module rồi chép đoạn code này vào module đó nhé!
PHP:
Option Explicit
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 = vbOKOnly, Optional ByVal TitleUni As Variant = vbNullString) As VbMsgBoxResult
Dim BStrMsg, BStrTitle
BStrMsg = StrConv(PromptUni, vbUnicode)
BStrTitle = StrConv(TitleUni, vbUnicode)
MsgBoxUni = MessageBoxW(GetActiveWindow, BStrMsg, BStrTitle, Buttons)
End Function
 
'===========================
Sub Rectangle1_Click()
UserForm1.Show
End Sub
OK rồi! Cám ơn bạn rất nhiều. Tôi thấy còn có một MsgBox của một ai đó trên GPE mà sử dụng theo kiểu gõ VNI cũng hiện đúng tiếng Việt (MsgBox Hie65n d9u1ng tie61ng Vie65t). Cách này đơn giản hơn. Bạn có không cho mình xin với. Cám ơn.
 
Upvote 0
OK rồi! Cám ơn bạn rất nhiều. Tôi thấy còn có một MsgBox của một ai đó trên GPE mà sử dụng theo kiểu gõ VNI cũng hiện đúng tiếng Việt (MsgBox Hie65n d9u1ng tie61ng Vie65t). Cách này đơn giản hơn. Bạn có không cho mình xin với. Cám ơn.

Với kiểu Font VNI WINDOWS, bạn cần code làm gì. Cứ đặt thuộc tính Font cho tất cả là kiểu VNI-XXX là xong, bạn gõ nó nhảy tùm lum, chữ ta chữ tàu gì đó, sau khi bạn click chuột phải tại desktop > properties > Window color and Appearence trong bảng này, mục Item bạn chọn Message Box, sau đó bạn chọn hiển thị là VNI-XXX. Như vậy sau khi OK, msgbox của bạn đã hiển thị tiếng Việt Font VNI-XXX rồi đấy!
Thân ái.
p/s: Với cái này, bạn chọn kiểu gõ trong Vietkey, Unikey gì đó là VNI WINDOWS nhé!
 
Lần chỉnh sửa cuối:
Upvote 0
Web KT

Bài viết mới nhất

Back
Top Bottom