Hàm ChrW hiển thị không chính xác

  • Thread starter Thread starter USB1394
  • Ngày gửi Ngày gửi
Liên hệ QC

USB1394

Thành viên hoạt động
Tham gia
20/12/08
Bài viết
173
Được thích
12
Nghề nghiệp
Lính triều đình
Mình muốn mã chữ unicode hiển thị ra chữ Việt trong hộp thoại VBA msgbox thì dùng hàm ChrW , nhưng kết quả lại hiển thị dấu "?" Mong các bạn giúp đỡ , xin cám ơn +-+-+-++-+-+-++-+-+-+
ví dụ như cho chữ ấ trong MsgBox ChrW(7845)

Sub TV()
Msgbox
ChrW(7845)
End sub

kết quả hiện dấu "?"


 
Đúng là Msgbox không hỗ trợ tiếng Việt với hàm ChrW rồi. Bạn muốn có Msgbox hiển thị tiếng Việt thì cũng còn nhiều cách khác. Ví dụ :
+ Dùng Macro4 (cách của anh NDU)
+ Tạo một hàm chuyển font từ VNI sang UNI như Msgbox Vni2Uni("Dùng bộ gõ VNI")
+ Tạo một Msgbox có dạng như Msg "Gia3i pha1p Excel ra51t tuye65t vo2i"
+... ...
Tất cả đều có trên GPE, bạn tìm xem
TDN
 
Upvote 0
Đúng là Msgbox không hỗ trợ tiếng Việt với hàm ChrW rồi. Bạn muốn có Msgbox hiển thị tiếng Việt thì cũng còn nhiều cách khác. Ví dụ :
+ Dùng Macro4 (cách của anh NDU)
+ Tạo một hàm chuyển font từ VNI sang UNI như Msgbox Vni2Uni("Dùng bộ gõ VNI")
+ Tạo một Msgbox có dạng như Msg "Gia3i pha1p Excel ra51t tuye65t vo2i"
+... ...
Tất cả đều có trên GPE, bạn tìm xem
TDN
xin cám ơn bạn , mình có đọc được bài của thầy Phạm Duy Long là dùng hàm chuyển từ tiếng việt ra kí tự dùng mã chrW rồi dán vào msgbox ! có phải đây chỉ là lý thuyết (vì 1 số mã lớn hơn 225 thì ko hiển thị đc) Mong bạn giúp mình hiểu rõ hơn ,xin cám ơn
 
Upvote 0
xin cám ơn bạn , mình có đọc được bài của thầy Phạm Duy Long là dùng hàm chuyển từ tiếng việt ra kí tự dùng mã chrW rồi dán vào msgbox ! có phải đây chỉ là lý thuyết (vì 1 số mã lớn hơn 225 thì ko hiển thị đc) Mong bạn giúp mình hiểu rõ hơn ,xin cám ơn
Nói chung thì MsgBox không thể hiển thị được tiếng Việt Unicode bạn à! Muốn giải quyết ta phải dùng... mẹo
Tôi có cái này giống với MsgBox nhất (dùng WScript.Shell) ---> Bạn xem thử nhé
 

File đính kèm

Upvote 0
Nói chung thì MsgBox không thể hiển thị được tiếng Việt Unicode bạn à! Muốn giải quyết ta phải dùng... mẹo
Tôi có cái này giống với MsgBox nhất (dùng WScript.Shell) ---> Bạn xem thử nhé
Cách này mình thấy sao đơn giản quá !?? Bạn có thể giải thích cơ bản để mình có thể áp dụng ko ? nếu chọn yes thì chạy sub mình phải làm sao ? muốn thay đổi nút thành ok cacel phải làm sao ? trong cách bạn thì tiêu đề mình ko thể gõ tiếng việt ? vậy phải làm sao ? mình muốn xuống dòng trong nội dung thì dùng cách nào?
àh quên : trong file bạn gởi mình ko tìm đc nơi chèn marco cho 2 nút lệnh ,bạn "dấu" ở đâu vậy có thể chỉ cho mình ko ?

em có thử nghiệm nhưng không hiểu tại sao nó ko hiển thị đc tiếng việt . xin anh xem thử đoạn code của em
PHP:
Sub ThiNghiem()
    MsgBox UniConvert("Thu73 nghie65m MsgBox tie61ng Vie65t Unicode", "VNI")
End Sub
kết quả
a.jpg
xin anh cho biết lỗi ở đâu , em tìm hoài mà ko ra , tìm tới cách copy dùng của anh xuống mà ko đc
Mong bạn giúp đỡ ,xin cám ơn
 
Lần chỉnh sửa cuối:
Upvote 0
Cách này mình thấy sao đơn giản quá !?? Bạn có thể giải thích cơ bản để mình có thể áp dụng ko ? nếu chọn yes thì chạy sub mình phải làm sao ? muốn thay đổi nút thành ok cacel phải làm sao ? trong cách bạn thì tiêu đề mình ko thể gõ tiếng việt ? vậy phải làm sao ? mình muốn xuống dòng trong nội dung thì dùng cách nào?
àh quên : trong file bạn gởi mình ko tìm đc nơi chèn marco cho 2 nút lệnh ,bạn "dấu" ở đâu vậy có thể chỉ cho mình ko ?

em có thử nghiệm nhưng không hiểu tại sao nó ko hiển thị đc tiếng việt . xin anh xem thử đoạn code của em
PHP:
Sub ThiNghiem()
    MsgBox UniConvert("Thu73 nghie65m MsgBox tie61ng Vie65t Unicode", "VNI")
End Sub
kết quả
View attachment 49092
xin anh cho biết lỗi ở đâu , em tìm hoài mà ko ra , tìm tới cách copy dùng của anh xuống mà ko đc
Mong bạn giúp đỡ ,xin cám ơn
Đã bào MsgBox không thể hiển thị được tiếng Viết mà bạn cứ cố
Phải thế này mới được
PHP:
Sub ThiNghiem()
  With CreateObject("WScript.Shell")
    .Popup UniConvert("Thu73 nghie65m MsgBox tie61ng Vie65t Unicode", "VNI")
  End With
End Sub
Hoặc
PHP:
Sub ThiNghiem()
  With CreateObject("WScript.Shell")
    .Popup UniConvert("Thu73 nghie65m MsgBox tie61ng Vie65t Unicode", "VNI"), , , vbYesNo
  End With
End Sub
Quy định về việc hiển thị các nút là hoàn toàn y chang như 1 MsgBox thông thường
--------------
Cú pháp:
PHP:
With CreateObject("WScript.Shell")
  .Popup Nội dung, thời gian đợi, Tiêu đề, kiểu MsgBox
End With
Riêng cái thời gian đợi này cũng khá hay! Ví dụ code này:
PHP:
Sub ThiNghiem()
  With CreateObject("WScript.Shell")
    .Popup UniConvert("Thu73 nghie65m MsgBox tie61ng Vie65t Unicode", "VNI"), 3, , vbOKOnly
  End With
End Sub
Khi chạy code, sau 3 giây thì MsgBox tự tắt
Có lý không?
Lưu ý: MsgBox chỉ tự tắt khi con trỏ chuột nằm trong khu vực của MsgBox
 
Lần chỉnh sửa cuối:
Upvote 0
PHP:
Sub ThiNghiem()
  With CreateObject("WScript.Shell")
    .Popup UniConvert("Thu73 nghie65m MsgBox tie61ng Vie65t Unicode", "VNI"), 3, , vbOKOnly
  End With
End Sub
Khi chạy code, sau 3 giây thì MsgBox tự tắt
Có lý không?
Lưu ý: MsgBox chỉ tự tắt khi con trỏ chuột nằm trong khu vực của MsgBox
Anh ơi, giả sử VbYesNo hoặc Vb... thì sau khi tự tắt giá trị mặc định trả về là gì vậy ?

TDN
 
Upvote 0
Anh ơi, giả sử VbYesNo hoặc Vb... thì sau khi tự tắt giá trị mặc định trả về là gì vậy ?

TDN
Thầy cứ thí nghiệm sẽ biết liền
PHP:
Sub ThiNghiem()
  Dim ReVal As Long
  With New WshShell
    ReVal = .Popup(UniConvert("Thu73 nghie65m MsgBox tie61ng Vie65t Unicode", "VNI"), 3, , vbYesNo)
  End With
  MsgBox ReVal
End Sub
 
Upvote 0
Tìm mãi hôm nay mới thấy 1 bài hoàn chỉnh về Msg Uni mà lại đơn giản nữa, nhưng em còn có 1 câu hỏi này, mong được giải đáp giúp ạ
Ví dụ như sau:

Sub Test()
With CreateObject("WScript.Shell")
.Popup [a1], , [a2]
End With
End Sub

Ở đây là kết quả hiển thị tại ô A1 và A2 của sheet hiện tại, trong khi em muốn là LUÔN LUÔN hiển thị tại sheet 2 thì phải sửa như thế nào ạ, em đã làm nhiều cách nhưng không được
 
Upvote 0
Tìm mãi hôm nay mới thấy 1 bài hoàn chỉnh về Msg Uni mà lại đơn giản nữa, nhưng em còn có 1 câu hỏi này, mong được giải đáp giúp ạ
Ví dụ như sau:

Sub Test()
With CreateObject("WScript.Shell")
.Popup [a1], , [a2]
End With
End Sub

Ở đây là kết quả hiển thị tại ô A1 và A2 của sheet hiện tại, trong khi em muốn là LUÔN LUÔN hiển thị tại sheet 2 thì phải sửa như thế nào ạ, em đã làm nhiều cách nhưng không được
Thì ghi tên sheet vào thôi!
PHP:
Sub Test()
  With CreateObject("WScript.Shell")
    .Popup Sheet2.[a1], , Sheet2.[a2]
  End With
End Sub
 
Upvote 0
Thì ra là dấu chấm, vậy mà em làm từa lưa cách, nào là ( ), [ ], " ", ! ......
Có những thứ tưởng đơn giản nhưng không phải dễ tìm ra, hic
Cảm ơn thầy rất nhiều ạ!
 
Upvote 0
Thì ra là dấu chấm, vậy mà em làm từa lưa cách, nào là ( ), [ ], " ", ! ......
Có những thứ tưởng đơn giản nhưng không phải dễ tìm ra, hic
Cảm ơn thầy rất nhiều ạ!
Ấy, dùng dấu [] được luôn nha! Như vầy:
PHP:
Sub Test()
  With CreateObject("WScript.Shell")
    .Popup [Sheet2!A1], , [Sheet2!A2]
  End With
End Sub
Dấu [] này tương đương với Evaluate, tức code trên là "biến thể" của:
PHP:
Sub Test()
  With CreateObject("WScript.Shell")
    .Popup Evaluate("Sheet2!A1"), , Evaluate("Sheet2!A2")
  End With
End Sub
 
Upvote 0
Ồ, thì ra là các cách thử của em đều được hết, chỉ là em không biết cách kết hợp chúng lại với nhau thôi (em làm từng cái một)
Trước giờ thầy đã giúp em rất nhiều, một lần nữa xin chân thành cảm ơn thầy
 
Upvote 0
Web KT

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

Back
Top Bottom