Cách đánh TIẾNG VIỆT (Có dấu) trong cửa số soạn thảo VBA

Liên hệ QC

hoacomay8x

Thành viên mới
Tham gia
2/8/11
Bài viết
33
Được thích
6
Nghề nghiệp
Là kế toán viên
Chào các thành viên GPE.
Em mới chập chững học về VBA.
Em xin thình giáo các bác một vấn để: Làm thế nào để đánh được TIẾNG VIỆT (có dấu) ở trong của số của Microshoft Visual Basic.
Ví dụ:
If OptionNu Then Cells(NextRow, 2) = "Nu"

Em muốn đánh là chữ Nữ

Hoặc trong các phần chú thích em muốn đánh TIẾNG VIỆT
 
Việc này là không thể bạn à. Tuy nhiên để có kết quả là tiếng việt unicode thì có nhiều cách, bạn search trên DĐ sẽ rõ.
 
Upvote 0
Chào các thành viên GPE.
Em mới chập chững học về VBA.
Em xin thình giáo các bác một vấn để: Làm thế nào để đánh được TIẾNG VIỆT (có dấu) ở trong của số của Microshoft Visual Basic.
Ví dụ:
If OptionNu Then Cells(NextRow, 2) = "Nu"

Em muốn đánh là chữ Nữ

Hoặc trong các phần chú thích em muốn đánh TIẾNG VIỆT
Bạn dùng font nào cũng được, trừ font Unicode, để chọn font, trong cửa sổ VBA vào Tools\Options\Editor Format.
Và muốn gán Cells(NextRow, 2) = "Nữ" thì trong Excel phải cùng Font với VBA.
 
Upvote 0
Em thử rùi nhưng ko được. Hai thứ đều cùng MÃ UNI code.

Em đính kèm luon cho các bác dễ hiểu em nói
(Em muốn có chữ NỮ trong phần giới tính của Sheet1)
 

File đính kèm

  • Nhap lieu.xls
    36.5 KB · Đọc: 113
Upvote 0
Em thử rùi nhưng ko được. Hai thứ đều cùng MÃ UNI code.

Em đính kèm luon cho các bác dễ hiểu em nói
(Em muốn có chữ NỮ trong phần giới tính của Sheet1)
Đoạn code của bạn là:
If OptionNu Then Cells(NextRow, 2) = "Nu"
Hãy thay thành:
If OptionNu Then Cells(NextRow, 2) = "N" & ChrW(7919)
Hoặc:
If OptionNu Then Cells(NextRow, 2) = OptionNu.Caption
Quá đơn giản
 
Upvote 0
Em đã làm được rùi.
Cảm ơn thầy ndu96081631 nhiều.
 
Upvote 0
Chào các thành viên GPE.
Em mới chập chững học về VBA.
Em xin thình giáo các bác một vấn để: Làm thế nào để đánh được TIẾNG VIỆT (có dấu) ở trong của số của Microshoft Visual Basic.
Ví dụ:
If OptionNu Then Cells(NextRow, 2) = "Nu"

Em muốn đánh là chữ Nữ

Hoặc trong các phần chú thích em muốn đánh TIẾNG VIỆT
Tặng bạn luôn đầy đủ bộ mã ACII các ký tự tiếng việt (cả chữ thường và chữ hoa).
Trường hợp bạn cần dòng text quá dài mà lọ mọ dùng hàm ChrW() thì hơi mệt, bạn chuyển sang đánh bằng font TCVN3, rồi đặt cả đoạn text trong hàm TCVN3toUNICODE() sau đây, nhanh mà tiện hơn nhiều:
Function TCVN3toUNICODE(vnstr As String)
Dim c As String, i As Long
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 "¡": c = ChrW$(258)
Case "¢": c = ChrW$(194)
Case "£": c = ChrW$(202)
Case "¤": c = ChrW$(212)
Case "¥": c = ChrW$(416)
Case "¦": c = ChrW$(431)
Case "§": c = ChrW$(272)
Case "A": c = ChrW$(65)
Case "B": c = ChrW$(66)
Case "C": c = ChrW$(67)
Case "D": c = ChrW$(68)
Case "E": c = ChrW$(69)
Case "F": c = ChrW$(70)
Case "G": c = ChrW$(71)
Case "H": c = ChrW$(72)
Case "I": c = ChrW$(73)
Case "J": c = ChrW$(74)
Case "K": c = ChrW$(75)
Case "L": c = ChrW$(76)
Case "M": c = ChrW$(77)
Case "N": c = ChrW$(78)
Case "O": c = ChrW$(79)
Case "P": c = ChrW$(80)
Case "Q": c = ChrW$(81)
Case "R": c = ChrW$(82)
Case "S": c = ChrW$(83)
Case "T": c = ChrW$(84)
Case "U": c = ChrW$(85)
Case "V": c = ChrW$(86)
Case "W": c = ChrW$(87)
Case "X": c = ChrW$(88)
Case "W": c = ChrW$(89)
Case "Z": c = ChrW$(90)
End Select
TCVN3toUNICODE = TCVN3toUNICODE + c
Next i
End Function
 
Lần chỉnh sửa cuối:
Upvote 0
Nói vậy nhưng khi viết Code ngồi chuyển ngữ kiểu này cũng mệt lắm. Mình cũng từng bị dính chuyện này nên mình viết luôn 1 cái hàm chuyển ngữ Unicode trong cửa sổ VBA. Vì mình viết để dùng "chữa cháy" nên cũng không chau chuốt hoàn chỉnh. Có thể còn lỗi hay vướng mắc (Chỉnh sửa tay vậy vì cũng nhanh thôi). Cách sử dụng như sau

Tại 1 ô nào đó trên sheet mình gõ dòng chữ cần thể hiện trong VBA. Ví dụ ô A1 mình gõ:

Tôi đồng ý rằng âm nhạc là một phần không thể thiếu trong cuộc sống

Tại ô A3 tôi gõ công thức gọi hàm

=MaUNICODE(A1)

Tôi có kết quả:
"T"&ChrW$(244)&"i "&ChrW$(273)&ChrW$(7891)&"ng "&ChrW$(253)&" r"&ChrW$(7857)&"ng "&ChrW$(226)&"m nh"&ChrW$(7841)&"c l"&ChrW$(224)&" m"&ChrW$(7897)&"t ph"&ChrW$(7847)&"n kh"&ChrW$(244)&"ng th"&ChrW$(7875)&" thi"&ChrW$(7871)&"u trong cu"&ChrW$(7897)&"c s"&ChrW$(7889)&"ng"

Vậy là tôi copy cái ô A3 đó vào VBA Paste 1 nhát là ổn rồi bổ xung code. Ví dụ:

Msgbox "T"&ChrW$(244)&"i "&ChrW$(273)&ChrW$(7891)&"ng "&ChrW$(253)&" r"&ChrW$(7857)&"ng "&ChrW$(226)&"m nh"&ChrW$(7841)&"c l"&ChrW$(224)&" m"&ChrW$(7897)&"t ph"&ChrW$(7847)&"n kh"&ChrW$(244)&"ng th"&ChrW$(7875)&" thi"&ChrW$(7871)&"u trong cu"&ChrW$(7897)&"c s"&ChrW$(7889)&"ng"

Mình gửi lên các bạn tuỳ cơ sử dung nha

Mã:
Option Explicit

Public Function MaUNICODE(ByVal ch As String) As String
Dim Ma1, Ma2, Uni1, Uni2
Dim kq, kt, kt1, i, j
Ma1 = "225;224;7843;227;7841;259;7855;7857;7859;7861;7863;226;7845;7847;7849;7851;7853;233;232;7867;7869;7865;234;7871;7873;7875;7877;7879;237;236;7881;297;7883;243;242;7887;245;7885;244;7889;7891;7893;7895;7897;417;7899;7901;7903;7905;7907;250;249;7911;361;7909;432;7913;7915;7917;7919;7921;253;7923;7927;7929;7925;273;193;192;7842;195;7840;258;7854;7856;7858;7860;7862;194;7844;7846;7848;7850;7852;201;200;7866;7868;7864;202;7870;7872;7874;7876;7878;205;204;7880;296;7882;211;210;7886;213;7884;212;7888;7890;7892;7894;7896;416;7898;7900;7902;7904;7906;218;217;7910;360;7908;431;7912;7914;7916;7918;7920;221;7922;7926;7928;7924;272"
Ma2 = "ChrW$(225);ChrW$(224);ChrW$(7843);ChrW$(227);ChrW$(7841);ChrW$(259);ChrW$(7855);ChrW$(7857);ChrW$(7859);ChrW$(7861);"
Ma2 = Ma2 & "ChrW$(7863);ChrW$(226);ChrW$(7845);ChrW$(7847);ChrW$(7849);ChrW$(7851);ChrW$(7853);ChrW$(233);ChrW$(232);ChrW$(7867);ChrW$(7869);ChrW$(7865);ChrW$(234);ChrW$(7871);ChrW$(7873);ChrW$(7875);ChrW$(7877);ChrW$(7879);ChrW$(237);ChrW$(236);ChrW$(7881);ChrW$(297);ChrW$(7883);ChrW$(243);ChrW$(242);ChrW$(7887);ChrW$(245);ChrW$(7885);ChrW$(244);ChrW$(7889);ChrW$(7891);ChrW$(7893);ChrW$(7895);ChrW$(7897);ChrW$(417);ChrW$(7899);ChrW$(7901);ChrW$(7903);ChrW$(7905);ChrW$(7907);ChrW$(250);ChrW$(249);ChrW$(7911);ChrW$(361);ChrW$(7909);ChrW$(432);ChrW$(7913);ChrW$(7915);ChrW$(7917);ChrW$(7919);ChrW$(7921);ChrW$(253);ChrW$(7923);ChrW$(7927);"
Ma2 = Ma2 & "ChrW$(7929);ChrW$(7925);ChrW$(273);ChrW$(193);ChrW$(192);ChrW$(7842);ChrW$(195);ChrW$(7840);ChrW$(258);ChrW$(7854);ChrW$(7856);ChrW$(7858);ChrW$(7860);ChrW$(7862);ChrW$(194);ChrW$(7844);ChrW$(7846);ChrW$(7848);ChrW$(7850);ChrW$(7852);ChrW$(201);ChrW$(200);ChrW$(7866);ChrW$(7868);ChrW$(7864);ChrW$(202);ChrW$(7870);ChrW$(7872);ChrW$(7874);ChrW$(7876);ChrW$(7878);ChrW$(205);ChrW$(204);ChrW$(7880);ChrW$(296);ChrW$(7882);ChrW$(211);ChrW$(210);ChrW$(7886);ChrW$(213);ChrW$(7884);ChrW$(212);ChrW$(7888);ChrW$(7890);ChrW$(7892);ChrW$(7894);ChrW$(7896);ChrW$(416);ChrW$(7898);ChrW$(7900);ChrW$(7902);ChrW$(7904);ChrW$(7906);ChrW$(218);"
Ma2 = Ma2 & "ChrW$(217);ChrW$(7910);ChrW$(360);ChrW$(7908);ChrW$(431);ChrW$(7912);ChrW$(7914);ChrW$(7916);ChrW$(7918);ChrW$(7920);ChrW$(221);ChrW$(7922);ChrW$(7926);ChrW$(7928);ChrW$(7924);ChrW$(272)"
Uni1 = Split(Ma1, ";")
Uni2 = Split(Ma2, ";")
ch = Replace(ch, "  ", " ")
For i = 1 To Len(ch)
kt = Mid(ch, i, 1)
For j = 0 To UBound(Uni1)
If AscW(kt) = Uni1(j) Then
kt = Chr(34) & "&" & Uni2(j) & "&" & Chr(34)
Exit For
End If
Next
kq = kq & kt
Next
If Left(kq, 6) <> "ChrW$(" Then kq = Chr(34) & kq
kq = Replace(kq, "&&", "&")
kq = Replace(kq, "&" & Chr(34) & Chr(34) & "&", "&")
If Right(kq, 2) <> "&" & Chr(34) Then kq = kq & Chr(34)
If Right(kq, 2) = "&" & Chr(34) Then kq = Left(kq, Len(kq) - 2)
MaUNICODE = kq
End Function
 

File đính kèm

  • FontUNICODE.xls
    74.5 KB · Đọc: 574
Lần chỉnh sửa cuối:
Upvote 0
Em thử rùi nhưng ko được. Hai thứ đều cùng MÃ UNI code.

Em đính kèm luon cho các bác dễ hiểu em nói
(Em muốn có chữ NỮ trong phần giới tính của Sheet1)
Bạn không đọc kỹ rồi, mình đã nói là trừ Font Unicode mà, chẳng hạn là Font của VNI Windows (mình vẫn thường dùng)
 
Lần chỉnh sửa cuối:
Upvote 0
Chào các thành viên GPE.
Em mới chập chững học về VBA.
Em xin thình giáo các bác một vấn để: Làm thế nào để đánh được TIẾNG VIỆT (có dấu) ở trong của số của Microshoft Visual Basic.
Ví dụ:
If OptionNu Then Cells(NextRow, 2) = "Nu"

Em muốn đánh là chữ Nữ

Hoặc trong các phần chú thích em muốn đánh TIẾNG VIỆT
Đề tài này rất thú vị. Những ai mới học lập trình VBA chắc chắn sẽ gặp phải tình huống này.
Mình đã mua cuốn sách LẬP TRÌNH VBA TRONG EXCEL của bác Phan Tự Hướng. Thấy rằng trong các đoạn Code minh hoạ đều viết được Tiếng Việt. Ví dụ như các chú thích đều có Tiếng Việt cả, hay ở trang 211 (Dùng câu lệnh Resune khi có lỗi phát sinh), Bác ấy cúng đánh được tiếng Việt mà ("Hãy vào giá trị để tính căn bậc 2:")...

Tui cũng đã từng gặp, nhưng ko bik giải quyết ra sao. Hôm nay đọc tham khảo trên GPE mới thấy các bác thành vien của GPE thật xuất sắc. Giải đáp tất cả mọi yêu cầu về lĩnh vực Excel. Chúc các bác luôn mạnh khoẻ - vui vẻ - hạnh phúc và cá nhiều tư liệu hay cho chúng em học tập.
 
Lần chỉnh sửa cuối:
Upvote 0
Đề tài này rất thú vị. Những ai mới học lập trình VBA chắc chắn sẽ gặp phải tình huống này.
Mình đã mua cuốn sách LẬP TRÌNH VBA TRONG EXCEL của bác Phan Tự Hướng. Thấy rằng trong các đoạn Code minh hoạ đều viết được Tiếng Việt. Ví dụ như các chú thích đều có Tiếng Việt cả, hay ở trang 211 (Dùng câu lệnh Resune khi có lỗi phát sinh), Bác ấy cúng đánh được tiếng Việt mà ("Hãy vào giá trị để tính căn bậc 2:")...

Tui cũng đã từng gặp, nhưng ko bik giải quyết ra sao. Hôm nay đọc tham khảo trên GPE mới thấy các bác thành vien của GPE thật xuất sắc. Giải đáp tất cả mọi yêu cầu về lĩnh vực Excel. Chúc các bác luôn mạnh khoẻ - vui vẻ - hạnh phúc và cá nhiều tư liệu hay cho chúng em học tập.
Muốn hiển thị font TCVN3 trong cửa sổ VB thì đơn giản hơn nhiều, vào tool -> option -> Editer format - Font - Chọn font nào đó của TCVN3, ví dụ như .VnAvant (Western). Khi đó đánh trực tiếp trên cửa sổ VB bằng tiếng việt được, hiển thị trên Msgbox bằng tiếng việt được. Các hàm chuyển mã sang Unicode không hiển thị được một số ký tự trên Msgbox, nhưng hiển thị trong bảng excel thì được (Chưa hiểu tại sao lại như thế!).
 
Upvote 0
Trong thực tế còn khối thứ đáng tiếc là không hỗ trợ tiếng Việt Unicode ví dụ như Listview, Treeview chẳng han. Thật thiệt thòi cho các ngôn ngữ phải bỏ dấu như tiếng Việt
 
Upvote 0
Muốn hiển thị font TCVN3 trong cửa sổ VB thì đơn giản hơn nhiều, vào tool -> option -> Editer format - Font - Chọn font nào đó của TCVN3, ví dụ như .VnAvant (Western). Khi đó đánh trực tiếp trên cửa sổ VB bằng tiếng việt được, hiển thị trên Msgbox bằng tiếng việt được. Các hàm chuyển mã sang Unicode không hiển thị được một số ký tự trên Msgbox, nhưng hiển thị trong bảng excel thì được (Chưa hiểu tại sao lại như thế!).
Em đã làm như Bác thì trong cửa số VBA đánh được TIẾNG VIỆT, nhưng trên MsgBox lại ko xuất hiện được Tiếng Việt? Em ko hiểu tại sao. Bác chỉ giáo thêm cho em với ạ.
 
Upvote 0
Em đã làm như Bác thì trong cửa số VBA đánh được TIẾNG VIỆT, nhưng trên MsgBox lại ko xuất hiện được Tiếng Việt? Em ko hiểu tại sao. Bác chỉ giáo thêm cho em với ạ.
Cái đó thì bản phải chỉnh font của Window. Bạn ra desktop, bấm chuột phải vào chỗ trống bất kỳ, chọn Properties. Sau đó vào trang Appearance, chọn nút Advanced, xổ list Item ra, chọn Message Box, rồi chọn Font cho nó là font nào đó của TCVN3 (Ví dụ .VnArial). Khi đó Msgbox sẽ hiển thị tiếng Việt cho bạn khi bạn đánh bằng font TCVN3 trong VBA.
 
Upvote 0
Muốn hiển thị font TCVN3 trong cửa sổ VB thì đơn giản hơn nhiều, vào tool -> option -> Editer format - Font - Chọn font nào đó của TCVN3, ví dụ như .VnAvant (Western). Khi đó đánh trực tiếp trên cửa sổ VB bằng tiếng việt được, hiển thị trên Msgbox bằng tiếng việt được. Các hàm chuyển mã sang Unicode không hiển thị được một số ký tự trên Msgbox, nhưng hiển thị trong bảng excel thì được (Chưa hiểu tại sao lại như thế!).
Em đã làm như bác vu_tuan_manh_linh chỉ dẫn, thì trong cửa sổ VBA đánh được Tiếng việt, còn trong MsgBox thì lại ko. Em mong các bác chỉ rõ cho em cách hiển thị được Tiếng việt trong Msg.
Em đính kèm để các bác kiểm tra và giải dùm em với
 

File đính kèm

  • Book11.xls
    21 KB · Đọc: 58
Upvote 0
Cái đó thì bản phải chỉnh font của Window. Bạn ra desktop, bấm chuột phải vào chỗ trống bất kỳ, chọn Properties. Sau đó vào trang Appearance, chọn nút Advanced, xổ list Item ra, chọn Message Box, rồi chọn Font cho nó là font nào đó của TCVN3 (Ví dụ .VnArial). Khi đó Msgbox sẽ hiển thị tiếng Việt cho bạn khi bạn đánh bằng font TCVN3 trong VBA.[/QUOCTE ]
Cảm ơn bác đã chỉ giáo. Em đã làm được rùi.
 
Upvote 0
Em đã làm như bác vu_tuan_manh_linh chỉ dẫn, thì trong cửa sổ VBA đánh được Tiếng việt, còn trong MsgBox thì lại ko. Em mong các bác chỉ rõ cho em cách hiển thị được Tiếng việt trong Msg.
Em đính kèm để các bác kiểm tra và giải dùm em với
Tốt nhất bạn đừng nghe lời ai mà chỉnh sửa bậy bạ hệ thống
Nên nhớ rằng việc chỉnh như vậy có ảnh hướng đến mọi phần mềm chứ không riêng gì Excel ---> Nó sẽ gây rắc rối cho bạn dài dài
Riêng Excel, nếu muốn dùng MsgBox tiếp Việt Unicode thì có hàng đóng cách
Trước tiên dùng 1 hàm hổ trợ:
PHP:
Function UniConvert(Text As String, InputMethod As String) As String
  Dim VNI_Type, Telex_Type, CharCode, Temp, i As Long
  UniConvert = Text
  VNI_Type = Array("a81", "a82", "a83", "a84", "a85", "a61", "a62", "a63", "a64", "a65", "e61", _
      "e62", "e63", "e64", "e65", "o61", "o62", "o63", "o64", "o65", "o71", "o72", "o73", "o74", _
      "o75", "u71", "u72", "u73", "u74", "u75", "a1", "a2", "a3", "a4", "a5", "a8", "a6", "d9", _
      "e1", "e2", "e3", "e4", "e5", "e6", "i1", "i2", "i3", "i4", "i5", "o1", "o2", "o3", "o4", _
      "o5", "o6", "o7", "u1", "u2", "u3", "u4", "u5", "u7", "y1", "y2", "y3", "y4", "y5")
  Telex_Type = Array("aws", "awf", "awr", "awx", "awj", "aas", "aaf", "aar", "aax", "aaj", "ees", _
      "eef", "eer", "eex", "eej", "oos", "oof", "oor", "oox", "ooj", "ows", "owf", "owr", "owx", _
      "owj", "uws", "uwf", "uwr", "uwx", "uwj", "as", "af", "ar", "ax", "aj", "aw", "aa", "dd", _
      "es", "ef", "er", "ex", "ej", "ee", "is", "if", "ir", "ix", "ij", "os", "of", "or", "ox", _
      "oj", "oo", "ow", "us", "uf", "ur", "ux", "uj", "uw", "ys", "yf", "yr", "yx", "yj")
  CharCode = Array(ChrW(7855), ChrW(7857), ChrW(7859), ChrW(7861), ChrW(7863), ChrW(7845), ChrW(7847), _
      ChrW(7849), ChrW(7851), ChrW(7853), ChrW(7871), ChrW(7873), ChrW(7875), ChrW(7877), ChrW(7879), _
      ChrW(7889), ChrW(7891), ChrW(7893), ChrW(7895), ChrW(7897), ChrW(7899), ChrW(7901), ChrW(7903), _
      ChrW(7905), ChrW(7907), ChrW(7913), ChrW(7915), ChrW(7917), ChrW(7919), ChrW(7921), ChrW(225), _
      ChrW(224), ChrW(7843), ChrW(227), ChrW(7841), ChrW(259), ChrW(226), ChrW(273), ChrW(233), ChrW(232), _
      ChrW(7867), ChrW(7869), ChrW(7865), ChrW(234), ChrW(237), ChrW(236), ChrW(7881), ChrW(297), ChrW(7883), _
      ChrW(243), ChrW(242), ChrW(7887), ChrW(245), ChrW(7885), ChrW(244), ChrW(417), ChrW(250), ChrW(249), _
      ChrW(7911), ChrW(361), ChrW(7909), ChrW(432), ChrW(253), ChrW(7923), ChrW(7927), ChrW(7929), ChrW(7925))
  Select Case InputMethod
    Case Is = "VNI": Temp = VNI_Type
    Case Is = "Telex": Temp = Telex_Type
  End Select
  For i = 0 To UBound(CharCode)
    UniConvert = Replace(UniConvert, Temp(i), CharCode(i))
    UniConvert = Replace(UniConvert, UCase(Temp(i)), UCase(CharCode(i)))
  Next i
End Function
Tiếp theo dùng 1 trong các cách sau:
1> Cách 1: Dùng hàm Macro 4
PHP:
Sub Test1()
  Dim Text As String
  Text = "Gia1 tri5 nha65p vu7o75t quá 3 ro62i"
  If Range("B3").Value > 3 Then
    Application.ExecuteExcel4Macro ("ALERT(""" & UniConvert(Text, "VNI") & """,2)")
  End If
End Sub
2> Cách 2: Dùng DoAlert Method
PHP:
Sub Test2()
  Dim Text As String
  Text = "Gia1 tri5 nha65p vu7o75t quá 3 ro62i"
  If Range("B3").Value > 3 Then
    Application.Assistant.DoAlert "THÔNG BÁO", UniConvert(Text, "VNI"), 0, 4, 0, 0, 0
  End If
End Sub
3> Cách 3: Dùng WScript.Shell
PHP:
Sub Test3()
  Dim Text As String
  Text = "Gia1 tri5 nha65p vu7o75t quá 3 ro62i"
  If Range("B3").Value > 3 Then
    CreateObject("WScript.Shell").Popup UniConvert(Text, "VNI"), , "THÔNG BÁO", vbOKOnly
  End If
End Sub
4> Cách 4: Dùng Windows MsgBox (hàm API)
PHP:
Declare Function MessageBox Lib "user32" Alias "MessageBoxW" (ByVal hwnd As Long, ByVal lpText As Long, ByVal lpCaption As Long, ByVal wType As Long) As Long
Sub Test4()
  Dim Text As String
  Text = "Gia1 tri5 nha65p vu7o75t quá 3 ro62i"
  If Range("B3").Value > 3 Then
    MessageBox Application.hwnd, StrPtr(UniConvert(Text, "VNI")), StrPtr("THÔNG BÁO"), vbOKOnly
  End If
End Sub
Lưu ý về biến Text... Đây là cách gõ bàn phím thông thường. Với kiểu gõ VNI, nếu muốn gõ chữ Giá trị nhập vượt quá 3 rồi có phải ta sẽ gõ Gia1 tri5 nha65p vu7o75t quá 3 ro62i không? ---> Hàm Uniconvert sẽ chuyển cách gõ Gia1 tri5 nha65p vu7o75t quá 3 ro62i thành đúng tiếng Việt
 

File đính kèm

  • UniMsgBox.xls
    38 KB · Đọc: 293
Upvote 0
Tốt nhất bạn đừng nghe lời ai mà chỉnh sửa bậy bạ hệ thống
Nên nhớ rằng việc chỉnh như vậy có ảnh hướng đến mọi phần mềm chứ không riêng gì Excel ---> Nó sẽ gây rắc rối cho bạn dài dài
Riêng Excel, nếu muốn dùng MsgBox tiếp Việt Unicode thì có hàng đóng cách
Trước tiên dùng 1 hàm hổ trợ:
PHP:
Function UniConvert(Text As String, InputMethod As String) As String
  Dim VNI_Type, Telex_Type, CharCode, Temp, i As Long
  UniConvert = Text
  VNI_Type = Array("a81", "a82", "a83", "a84", "a85", "a61", "a62", "a63", "a64", "a65", "e61", _
      "e62", "e63", "e64", "e65", "o61", "o62", "o63", "o64", "o65", "o71", "o72", "o73", "o74", _
      "o75", "u71", "u72", "u73", "u74", "u75", "a1", "a2", "a3", "a4", "a5", "a8", "a6", "d9", _
      "e1", "e2", "e3", "e4", "e5", "e6", "i1", "i2", "i3", "i4", "i5", "o1", "o2", "o3", "o4", _
      "o5", "o6", "o7", "u1", "u2", "u3", "u4", "u5", "u7", "y1", "y2", "y3", "y4", "y5")
  Telex_Type = Array("aws", "awf", "awr", "awx", "awj", "aas", "aaf", "aar", "aax", "aaj", "ees", _
      "eef", "eer", "eex", "eej", "oos", "oof", "oor", "oox", "ooj", "ows", "owf", "owr", "owx", _
      "owj", "uws", "uwf", "uwr", "uwx", "uwj", "as", "af", "ar", "ax", "aj", "aw", "aa", "dd", _
      "es", "ef", "er", "ex", "ej", "ee", "is", "if", "ir", "ix", "ij", "os", "of", "or", "ox", _
      "oj", "oo", "ow", "us", "uf", "ur", "ux", "uj", "uw", "ys", "yf", "yr", "yx", "yj")
  CharCode = Array(ChrW(7855), ChrW(7857), ChrW(7859), ChrW(7861), ChrW(7863), ChrW(7845), ChrW(7847), _
      ChrW(7849), ChrW(7851), ChrW(7853), ChrW(7871), ChrW(7873), ChrW(7875), ChrW(7877), ChrW(7879), _
      ChrW(7889), ChrW(7891), ChrW(7893), ChrW(7895), ChrW(7897), ChrW(7899), ChrW(7901), ChrW(7903), _
      ChrW(7905), ChrW(7907), ChrW(7913), ChrW(7915), ChrW(7917), ChrW(7919), ChrW(7921), ChrW(225), _
      ChrW(224), ChrW(7843), ChrW(227), ChrW(7841), ChrW(259), ChrW(226), ChrW(273), ChrW(233), ChrW(232), _
      ChrW(7867), ChrW(7869), ChrW(7865), ChrW(234), ChrW(237), ChrW(236), ChrW(7881), ChrW(297), ChrW(7883), _
      ChrW(243), ChrW(242), ChrW(7887), ChrW(245), ChrW(7885), ChrW(244), ChrW(417), ChrW(250), ChrW(249), _
      ChrW(7911), ChrW(361), ChrW(7909), ChrW(432), ChrW(253), ChrW(7923), ChrW(7927), ChrW(7929), ChrW(7925))
  Select Case InputMethod
    Case Is = "VNI": Temp = VNI_Type
    Case Is = "Telex": Temp = Telex_Type
  End Select
  For i = 0 To UBound(CharCode)
    UniConvert = Replace(UniConvert, Temp(i), CharCode(i))
    UniConvert = Replace(UniConvert, UCase(Temp(i)), UCase(CharCode(i)))
  Next i
End Function
Tiếp theo dùng 1 trong các cách sau:
1> Cách 1: Dùng hàm Macro 4
PHP:
Sub Test1()
  Dim Text As String
  Text = "Gia1 tri5 nha65p vu7o75t quá 3 ro62i"
  If Range("B3").Value > 3 Then
    Application.ExecuteExcel4Macro ("ALERT(""" & UniConvert(Text, "VNI") & """,2)")
  End If
End Sub
2> Cách 2: Dùng DoAlert Method
PHP:
Sub Test2()
  Dim Text As String
  Text = "Gia1 tri5 nha65p vu7o75t quá 3 ro62i"
  If Range("B3").Value > 3 Then
    Application.Assistant.DoAlert "THÔNG BÁO", UniConvert(Text, "VNI"), 0, 4, 0, 0, 0
  End If
End Sub
3> Cách 3: Dùng WScript.Shell
PHP:
Sub Test3()
  Dim Text As String
  Text = "Gia1 tri5 nha65p vu7o75t quá 3 ro62i"
  If Range("B3").Value > 3 Then
    CreateObject("WScript.Shell").Popup UniConvert(Text, "VNI"), , "THÔNG BÁO", vbOKOnly
  End If
End Sub
4> Cách 4: Dùng Windows MsgBox (hàm API)
PHP:
Declare Function MessageBox Lib "user32" Alias "MessageBoxW" (ByVal hwnd As Long, ByVal lpText As Long, ByVal lpCaption As Long, ByVal wType As Long) As Long
Sub Test4()
  Dim Text As String
  Text = "Gia1 tri5 nha65p vu7o75t quá 3 ro62i"
  If Range("B3").Value > 3 Then
    MessageBox Application.hwnd, StrPtr(UniConvert(Text, "VNI")), StrPtr("THÔNG BÁO"), vbOKOnly
  End If
End Sub
Lưu ý về biến Text... Đây là cách gõ bàn phím thông thường. Với kiểu gõ VNI, nếu muốn gõ chữ Giá trị nhập vượt quá 3 rồi có phải ta sẽ gõ Gia1 tri5 nha65p vu7o75t quá 3 ro62i không? ---> Hàm Uniconvert sẽ chuyển cách gõ Gia1 tri5 nha65p vu7o75t quá 3 ro62i thành đúng tiếng Việt

Em chàoThầy ndu96081631, xin thầy cho em code ví dụ dùng code của Thầy áp dụng cho Msgbox loại có 2 nút Yes No và Inputbox nhé.
cụ thể em có 2 code này em không biết xữ lý như thế nào ở dòng
bienMsg = MsgBox("Dã In xong Ban muon giu lai Gach Duoi Không ?", vbYesNo + vbQuestion, "THÔNG BÁO")

Code 1
PHP:
Dim bienMsg As Integer
    bienMsg = MsgBox("Dã In xong Ban muon giu lai Gach Duoi Không ?", vbYesNo + vbQuestion, "THÔNG BÁO")
    If bienMsg = 6 Then
        Sheet4.Range("A1").Value = "Khoa"
    ElseIf bienMsg = 7 Then
        Sheet4.Range("A1").Value = ""



Và dòng SoTo = InputBox("Nhâp xong click OK mac dinh là 1 tò", "HAY NHAP SO TO CAN IN", default)

Code 2
PHP:
Dim SoTo As Variant, default
        default = "1"
        SoTo = InputBox("Nhâp xong click OK mac dinh là 1 tò", "HAY NHAP SO TO CAN IN", default)
    If SoTo = "" Then
        Sheets(23).Select

Code 1 Em sửa như thế này ,nhưng còn biến bienMsg phải viết như thế nào để khi click nút Yes No làm chạy code Sheet4.Range("A1").Value = "Khoa" và Sheet4.Range("A1").Value = ""
PHP:
Dim bienMsg As Integer, Text As String
   
    Text = "D9a4 In xong Ba5n muo61n giu74 la5i Ga5ch Du7o71i Kho6ng ?"
    MessageBox Application.hwnd, StrPtr(UniConvert(Text, "VNI")), StrPtr("THÔNG BÁO"), vbYesNo + vbQuestion
    If bienMsg = 6 Then
        Sheet4.Range("A1").Value = "Khoa"
    ElseIf bienMsg = 7 Then
        Sheet4.Range("A1").Value = ""
 
Lần chỉnh sửa cuối:
Upvote 0
Code 1 Em sửa như thế này ,nhưng còn biến bienMsg phải viết như thế nào để khi click nút Yes No làm chạy code Sheet4.Range("A1").Value = "Khoa" và Sheet4.Range("A1").Value = ""
Mã:
Dim bienMsg As Integer, Text As String
   
    Text = "D9a4 In xong Ba5n muo61n giu74 la5i Ga5ch Du7o71i Kho6ng ?"
    [COLOR=#ff0000]MessageBox Application.hwnd, StrPtr(UniConvert(Text, "VNI")), StrPtr("THÔNG BÁO"), vbYesNo + vbQuestion[/COLOR]
    If bienMsg = 6 Then
        Sheet4.Range("A1").Value = "Khoa"
    ElseIf bienMsg = 7 Then
        Sheet4.Range("A1").Value = ""

Chỗ màu đỏ sửa thành:
Mã:
bienMsg = MessageBox(Application.hwnd, StrPtr(UniConvert(Text, "VNI")), StrPtr("THÔNG BÁO"), vbYesNo + vbQuestion)
 
Upvote 0
Em làm theo thầy, Msgbox tạo ra trông rất bài bản đẹp như mơ luôn thầy ơi. Em cám ơn thầy nhiều lắm.

Cái code 2 em sửa thế này

Mã:
Dim SoTo As Variant, [COLOR=#b22222]Text As String[/COLOR], default
        default = "1"
        [COLOR=#b22222]Text = "Hay4 nha65p so61 to72 nha65p xong click OK ma85c d9inh la2 1 to72"
    SoTo = InputBox(Application.hwnd, StrPtr(UniConvert(Text, "VNI")), StrPtr("THÔNG BÁO"), default)[/COLOR]
    If SoTo = "" Then
        Sheets(23).Select

Không biết em sai sót thế nào làm cho Inputbox chỉ hiện toàn số không có chữ nào hết, mặc định = 1 trong Inputbox cũng sai theo.

hinh loi.png

Em xin thầy giúp em lần nữa nhé.
 
Lần chỉnh sửa cuối:
Upvote 0
Web KT

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

Back
Top Bottom