Cách dùng ChrW trong VBA

Liên hệ QC

a.nguoidensau

Thành viên hoạt động
Tham gia
12/4/12
Bài viết
138
Được thích
28
Chào các Anh/chị

Tôi muốn có dòng chữ tại ô A1 là " Không có gì quý hơn độc lập tự do", thì tại Module tôi phải viết như thế nào. Xin cảm ơn
 
Chào các Anh/chị

Tôi muốn có dòng chữ tại ô A1 là " Không có gì quý hơn độc lập tự do", thì tại Module tôi phải viết như thế nào. Xin cảm ơn

Nó vầy:
Mã:
Range("A1").Value = "Không có gì quý h" & ChrW(417) & "n " & ChrW(273) & ChrW(7897) & "c l" & ChrW(7853) & "p t" & ChrW(7921) & " do"
 
Upvote 0
Chào các Anh/chị

Tôi muốn có dòng chữ tại ô A1 là " Không có gì quý hơn độc lập tự do", thì tại Module tôi phải viết như thế nào. Xin cảm ơn

Unicode luôn
Mã:
[A1].Value = "Kh" & ChrW$(244) & "ng c" & ChrW$(243) & " g" & ChrW$(236) & " qu" & ChrW$(253) & " h" & ChrW$(417) & "n " & ChrW$(273) & ChrW$(7897) & "c l" & ChrW$(7853) & "p t" & ChrW$(7921) & " do"
 
Upvote 0
KHÔNG CÓ GÌ QUÝ HƠN ĐỘC LẬP TỰ DO

"KHÔNG CÓ GÌ QUÝ H" & ChrW(416) & "N " & ChrW(272) & ChrW(7896) & "C L" & ChrW(7852) & "P T" & ChrW(7920) & " DO"


Không Có Gì Quý Hơn Độc Lập Tự Do

"Không Có Gì Quý H" & ChrW(417) & "n " & ChrW(272) & ChrW(7897) & "c L" & ChrW(7853) & "p T" & ChrW(7921) & " Do"



không có gì quý hơn độc lập tự do

"không có gì quý h" & ChrW(417) & "n " & ChrW(273) & ChrW(7897) & "c l" & ChrW(7853) & "p t" & ChrW(7921) & " do"
 
Upvote 0
Nó vầy:
Mã:
Range("A1").Value = "Không có gì quý h" & ChrW(417) & "n " & ChrW(273) & ChrW(7897) & "c l" & ChrW(7853) & "p t" & ChrW(7921) & " do"

Cảm ơn anh.
Anh vui lòng bật mí giúp em là tại sao anh làm nhanh được như vây?
Ý em là có thể có 1 code tra ngược từ chuỗi " Không gì quý hơn độc lập tự do" ra chuỗi ChrW(..)..& ChrW(...)
 
Upvote 0
Cảm ơn anh.
Anh vui lòng bật mí giúp em là tại sao anh làm nhanh được như vây?
Ý em là có thể có 1 code tra ngược từ chuỗi " Không gì quý hơn độc lập tự do" ra chuỗi ChrW(..)..& ChrW(...)

Mở MS Word lên, record macro rồi gõ chuỗi tiếng Việt. Xong, bấm Alt + F11 vào xem code sẽ có ngay kết quả. Copy kết quả ấy sang Excel mà dùng
----------------------
Cái này là do thằng ku có cái nick màu xanh lá ở bài số 4 phát minh nha (hổng phải tui)
 
Upvote 0
Xin các bác khác cho ý kiến về việc dùng code để chuyển 1 chuỗi ký tự cho trước về dạng ChrW(..)&ChrW(..)....
 
Upvote 0
Mở MS Word lên, record macro rồi gõ chuỗi tiếng Việt. Xong, bấm Alt + F11 vào xem code sẽ có ngay kết quả. Copy kết quả ấy sang Excel mà dùng
----------------------
Cái này là do thằng ku có cái nick màu xanh lá ở bài số 4 phát minh nha (hổng phải tui)

Cảm ơn bác, hay quá, em đã thử.
Vậy là hôm nay em đã học được 1 điều hay.
 
Upvote 0
Xin các bác khác cho ý kiến về việc dùng code để chuyển 1 chuỗi ký tự cho trước về dạng ChrW(..)&ChrW(..)....

Chắc ý bạn là muốn gõ chúng trong môi trường VBA? Thấy trên diễn đàn cũng có hàm convert này, tuy nhiên tôi lại thích kiểu khác:
1> Đầu tiên tôi xây dựng hàm Unicovert:
Mã:
Function UniConvert(ByVal Text As String, ByVal 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 UCase(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
2> Áp dụng viết trong môi trường VBA:
Mã:
Sub TestVNI()
  Dim Text As String
  Text = "Gia3i pha1p Excel - Co6ng cu5 tuye65t vo72i cu3a ba5n"
  Application.ExecuteExcel4Macro ("ALERT(""" & UniConvert(Text, "VNI") & """,2)")
  Application.Assistant.DoAlert "TB", UniConvert(Text, "VNI"), 4, 4, 1, 1, 0
  Application.Assistant.DoAlert "TB", UniConvert(Text, "VNI"), 0, 4, 0, 0, 0
End Sub
Chỗ màu đỏ ta gõ bình thường như đang gõ trên bảng tính, khỏi convert gì cả
 
Upvote 0
Mở MS Word lên, record macro rồi gõ chuỗi tiếng Việt. Xong, bấm Alt + F11 vào xem code sẽ có ngay kết quả. Copy kết quả ấy sang Excel mà dùng
----------------------
Cái này là do thằng ku có cái nick màu xanh lá ở bài số 4 phát minh nha (hổng phải tui)
Cảm ơn Thầy Ndu- đúng là phong cách không lẫn đâu được, nhưng đây quả là 1 cái sáng tạo hay quá

Ngoctoan
 
Upvote 0
Tôi thường gõ TCVN3 sau đó dùng 1 hàm convert sang Unicode, đỡ nhọc hơn cái vụ ChrW() này nhiều!
 
Upvote 0
Cảm ơn các thầy. Tôi đã học được điều này rất bổ ích
 
Upvote 0
Chắc ý bạn là muốn gõ chúng trong môi trường VBA? Thấy trên diễn đàn cũng có hàm convert này, tuy nhiên tôi lại thích kiểu khác:
1> Đầu tiên tôi xây dựng hàm Unicovert:
Mã:
Function UniConvert(ByVal Text As String, ByVal 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 UCase(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
2> Áp dụng viết trong môi trường VBA:
Mã:
Sub TestVNI()
  Dim Text As String
  Text = "Gia3i pha1p Excel - Co6ng cu5 tuye65t vo72i cu3a ba5n"
  Application.ExecuteExcel4Macro ("ALERT(""" & UniConvert(Text, "VNI") & """,2)")
  Application.Assistant.DoAlert "TB", UniConvert(Text, "VNI"), 4, 4, 1, 1, 0
  Application.Assistant.DoAlert "TB", UniConvert(Text, "VNI"), 0, 4, 0, 0, 0
End Sub
Chỗ màu đỏ ta gõ bình thường như đang gõ trên bảng tính, khỏi convert gì cả
Thưa Thầy trên excel online có hương dẫn nhưng làm sao lấy kết quả trả về được chọn Yes/No ???
 
Upvote 0
Mở MS Word lên, record macro rồi gõ chuỗi tiếng Việt. Xong, bấm Alt + F11 vào xem code sẽ có ngay kết quả. Copy kết quả ấy sang Excel mà dùng
----------------------
Cái này là do thằng ku có cái nick màu xanh lá ở bài số 4 phát minh nha (hổng phải tui)
hay quá, em đã thử và thành công --=0
 
Upvote 0
1711005766804.png
Em thử thì thành dấu ? như hình, nguyên nhân và cách khắc phục như thế nào vậy, anh chị nào biết chỉ giúp em với!
 
Upvote 0
View attachment 299743
Em thử thì thành dấu ? như hình, nguyên nhân và cách khắc phục như thế nào vậy, anh chị nào biết chỉ giúp em với!
Bạn nên dùng thủ tục này:

Mã:
        Dim strTitle As String
        strTitle = "THÔNG BÁO" & vbLf & "Không có gì quý h" & ChrW(417) & "n " & ChrW(273) & ChrW(7897) & "c l" & _
                    ChrW(7853) & "p t" & ChrW(7921) & " do"
        Assistant.DoAlert strTitle, " ", msoAlertButtonOK, _
        msoAlertIconCritical, msoAlertDefaultFirst, msoAlertCancelDefault, False
 
Upvote 0
Web KT
Back
Top Bottom