Xin code chuyển mã kiểu gõ telex! (1 người xem)

Liên hệ QC

Người dùng đang xem chủ đề này

dazkangel

<New Horizons>
Tham gia
28/2/17
Bài viết
2,880
Được thích
4,039
Giới tính
Nam
Chào các bác, em muốn đổi các chữ kiểu telex giống như sau: "DDaf Nawxng" thành "Đà Nẵng"
Các bác giải giúp em ạ, xin cảm ơn mọi người.
 

File đính kèm

tại em thấy chữ á với chữ Á có 2 mã chrw khác nhau ấy thầy. hay là có mã cho từng dấu vậy thầy.
Vào VBA, bấm Ctrl + G mở cửa số Immediate, gõ vào dòng lệnh:
Mã:
?UCase("á") = "Á"
Enter phát, xem kết quả và tự rút ra kết luận
--------------------------------------------
nếu người dùng nhập kiểu Telex: Chuyeenr max thì sao? Unikey cho phép gỏ tương đối thoải mái
Nếu mình làm được cái vụ "thoải mái" này thì mình ngon lành "gần bằng" với Phạm Kim Long rồi đó hen!
 
Upvote 0
Vào VBA, bấm Ctrl + G mở cửa số Immediate, gõ vào dòng lệnh:
Mã:
?UCase("á") = "Á"
Enter phát, xem kết quả và tự rút ra kết luận
--------------------------------------------

Nếu mình làm được cái vụ "thoải mái" này thì mình ngon lành "gần bằng" với Phạm Kim Long rồi đó hen!
khà khà, Thầy nghiên cứu xem :P
 
Upvote 0
Vào VBA, bấm Ctrl + G mở cửa số Immediate, gõ vào dòng lệnh:
Mã:
?UCase("á") = "Á"
Enter phát, xem kết quả và tự rút ra kết luận
--------------------------------------------

Nếu mình làm được cái vụ "thoải mái" này thì mình ngon lành "gần bằng" với Phạm Kim Long rồi đó hen!
nhưng mã "á" = 7854 còn "Á" =7855 là sao thầy?. không khác nhau sao? vẫn chưa hiểu chỗ đó.
đúng là ucase sẽ bằng nhau nhưng sau khi chuyển lại thì nó chuyển thành chữ thường, chữ hoa, hay thành toàn bộ chữ thường, hay toàn bộ chữ hoa vậy thầy.
 
Lần chỉnh sửa cuối:
Upvote 0
nhưng mã "á" = 7854 còn "Á" =7855 là sao thầy?. không khác nhau sao? vẫn chưa hiểu chỗ đó.
đúng là ucase sẽ bằng nhau nhưng sau khi chuyển lại chuyển luôn sang chữ thường hay chữ hoa hết sao thầy?
bỏ bớt phần chữ in và thêm 1 dòng lệnh với Ucase xem sao
Mã:
Function TU(ByVal mTex As String, Optional Bo As Byte = 1) As String
Dim Nguon As Variant, KetQua As Variant, a, b
Dim i As Long
    Nguon = Split(sTelex, "-"): KetQua = Split(sChrW, "-")
    For i = LBound(Nguon, 1) To UBound(Nguon, 1) - Bo
        mTex = Replace(mTex, Nguon(i), ChrW$(KetQua(i)))
        mTex = Replace(mTex, UCase(Nguon(i)), UCase(ChrW$(KetQua(i))))
    Next i
    TU = mTex
End Function
 
Upvote 0
bỏ bớt phần chữ in và thêm 1 dòng lệnh với Ucase xem sao
Mã:
Function TU(ByVal mTex As String, Optional Bo As Byte = 1) As String
Dim Nguon As Variant, KetQua As Variant, a, b
Dim i As Long
    Nguon = Split(sTelex, "-"): KetQua = Split(sChrW, "-")
    For i = LBound(Nguon, 1) To UBound(Nguon, 1) - Bo
        mTex = Replace(mTex, Nguon(i), ChrW$(KetQua(i)))
        mTex = Replace(mTex, UCase(Nguon(i)), UCase(ChrW$(KetQua(i))))
    Next i
    TU = mTex
End Function
mãi mới thấy bác ghé thăm :D
 
Upvote 0
Trước khi chuyển, bạn ghi lại xem cái ký tự đầu nó là in hay thường. (1)
Lúc chuyển, đổi cả hai ký tự thành thường (2). Và chuyển thành tiếng có dấu
Chuyển xong, dựa vào ký tự đầu là in hay thường mà UCase chúng trở lại.

Gợi ý:
(1) bảng mã Ascii chuẩn thì ký tự thường = ký tự in + 32. Có thể xét in/thường qua cái bit 32 của nó
thuong = (Asc(kyTu) And 32)
(2) đổi ký tự từ in thành thường cũng có thể dùng cái bit 32
kyTu = Char(Asc(kyTu) Or 32)
 
Upvote 0
nhưng mã "á" = 7854 còn "Á" =7855 là sao thầy?. không khác nhau sao? vẫn chưa hiểu chỗ đó.
đúng là ucase sẽ bằng nhau nhưng sau khi chuyển lại thì nó chuyển thành chữ thường, chữ hoa, hay thành toàn bộ chữ thường, hay toàn bộ chữ hoa vậy thầy.
Bài 24 chính là điều tôi muốn nói
Ngoài ra có 2 góp ý nhỏ:
- Với hằng số bạn nên viết hoa toàn bộ các ký tự nhé
- Với tên biến: Hoặc là tiếng Việt, hoặc là tiếng Anh toàn bộ. Đừng lộn xộn khi tiếng Việt lúc lại tiếng Anh, nhìn kỳ cục lắm!
 
Upvote 0
bạn thông cảm, lấy code cũ hồi xưa viết chưa khai báo
bạn xem file đính kèm nhé
Hình như cái hàm UNItoVBA là của tôi thì phải :))
http://www.giaiphapexcel.com/dienda...-để-làm-thư-viện-hàm.50873/page-3#post-325712
nếu người dùng nhập kiểu Telex: Chuyeenr max thì sao? Unikey cho phép gỏ tương đối thoải mái
Cũng trong topic trên có bài sắp xếp lại chuỗi nhập cho đúng chuẩn Telex trước khi chuyển.
 
Upvote 0
Upvote 0
Bài 24 chính là điều tôi muốn nói
Ngoài ra có 2 góp ý nhỏ:
- Với hằng số bạn nên viết hoa toàn bộ các ký tự nhé
- Với tên biến: Hoặc là tiếng Việt, hoặc là tiếng Anh toàn bộ. Đừng lộn xộn khi tiếng Việt lúc lại tiếng Anh, nhìn kỳ cục lắm!
chắc thế này được rồi thầy nhỉ, không biết có chạy nhanh hay không :V
Mã:
Option Explicit
Const mUNICODE = "7845-7847-7849-7851-7853-7855-7857-7859-7861-7863-7871-7873-7875-7877-7879-7889-7891-7893-7895-7897-7899-7901-7903-7905-7907-7913-7915-7917-7919-7921-224-225-7843-227-7841-226-259-273-233-232-7867-7869-7865-234-237-236-7881-297-7883-243-242-7887-245-7885-244-417-250-249-7911-361-7909-432-253-7923-7927-7929-7925"
Const mTELEX = "aas-aaf-aar-aax-aaj-aws-awf-awr-awx-awj-ees-eef-eer-eex-eej-oos-oof-oor-oox-ooj-ows-owf-owr-owx-owj-uws-uwf-uwr-uwx-uwj-af-as-ar-ax-aj-aa-aw-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"
Const mVNI = "a61-a62-a63-a64-a65-a81-a82-a83-a84-a85-e61-e62-e63-e64-e65-o61-o62-o63-o64-o65-o71-o72-o73-o74-o75-u71-u72-u73-u74-u75-a2-a1-a3-a4-a5-a6-a8-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"
Const mXOADAU = "a-a-a-a-a-a-a-a-a-a-e-e-e-e-e-o-o-o-o-o-o-o-o-o-o-u-u-u-u-u-a-a-a-a-a-a-a-d-e-e-e-e-e-e-i-i-i-i-i-o-o-o-o-o-o-o-u-u-u-u-u-u-y-y-y-y-y"
Function ChuyenMaTiengViet(ByVal txt As String, ByVal MaNguon As String, Optional ByVal MaDich As String = "") As String

    Dim Nguon As Variant, Dich As Variant, i As Byte

If InStr(UCase(MaNguon), "T") > 0 Then
    Nguon = Split(mTELEX, "-")
ElseIf InStr(UCase(MaNguon), "U") > 0 Then
    Nguon = Split(mUNICODE, "-")
ElseIf InStr(UCase(MaNguon), "V") > 0 Then
    Nguon = Split(mVNI, "-")
End If

If InStr(UCase(MaDich), "T") > 0 Then
    Dich = Split(mTELEX, "-")
ElseIf InStr(UCase(MaDich), "U") > 0 Then
    Dich = Split(mUNICODE, "-")
ElseIf InStr(UCase(MaDich), "V") > 0 Then
    Dich = Split(mVNI, "-")
Else
    Dich = Split(mXOADAU, "-")
End If

If InStr(UCase(MaNguon), "U") > 0 Then

    For i = 0 To UBound(Nguon)
        txt = Replace(txt, ChrW(Nguon(i)), Dich(i))
        txt = Replace(txt, UCase(ChrW(Nguon(i))), UCase(Dich(i)))
    Next i

ElseIf InStr(UCase(MaDich), "U") > 0 Then

    For i = 0 To UBound(Nguon)
        txt = Replace(txt, Nguon(i), ChrW$(Dich(i)))
        txt = Replace(txt, UCase(Nguon(i)), UCase(ChrW$(Dich(i))))
    Next i

Else

    For i = 0 To UBound(Nguon)
        txt = Replace(txt, Nguon(i), Dich(i))
        txt = Replace(txt, UCase(Nguon(i)), UCase(Dich(i)))
    Next i

End If

ChuyenMaTiengViet = txt

End Function
 

File đính kèm

Upvote 0
chắc thế này được rồi thầy nhỉ, không biết có chạy nhanh hay không :V
Mã:
Option Explicit
Const mUNICODE = "7845-7847-7849-7851-7853-7855-7857-7859-7861-7863-7871-7873-7875-7877-7879-7889-7891-7893-7895-7897-7899-7901-7903-7905-7907-7913-7915-7917-7919-7921-224-225-7843-227-7841-226-259-273-233-232-7867-7869-7865-234-237-236-7881-297-7883-243-242-7887-245-7885-244-417-250-249-7911-361-7909-432-253-7923-7927-7929-7925"
Const mTELEX = "aas-aaf-aar-aax-aaj-aws-awf-awr-awx-awj-ees-eef-eer-eex-eej-oos-oof-oor-oox-ooj-ows-owf-owr-owx-owj-uws-uwf-uwr-uwx-uwj-af-as-ar-ax-aj-aa-aw-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"
Const mVNI = "a61-a62-a63-a64-a65-a81-a82-a83-a84-a85-e61-e62-e63-e64-e65-o61-o62-o63-o64-o65-o71-o72-o73-o74-o75-u71-u72-u73-u74-u75-a2-a1-a3-a4-a5-a6-a8-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"
Const mXOADAU = "a-a-a-a-a-a-a-a-a-a-e-e-e-e-e-o-o-o-o-o-o-o-o-o-o-u-u-u-u-u-a-a-a-a-a-a-a-d-e-e-e-e-e-e-i-i-i-i-i-o-o-o-o-o-o-o-u-u-u-u-u-u-y-y-y-y-y"
Function ChuyenMaTiengViet(ByVal txt As String, ByVal MaNguon As String, Optional ByVal MaDich As String = "") As String

    Dim Nguon As Variant, Dich As Variant, i As Byte

If InStr(UCase(MaNguon), "T") > 0 Then
    Nguon = Split(mTELEX, "-")
ElseIf InStr(UCase(MaNguon), "U") > 0 Then
    Nguon = Split(mUNICODE, "-")
ElseIf InStr(UCase(MaNguon), "V") > 0 Then
    Nguon = Split(mVNI, "-")
End If

If InStr(UCase(MaDich), "T") > 0 Then
    Dich = Split(mTELEX, "-")
ElseIf InStr(UCase(MaDich), "U") > 0 Then
    Dich = Split(mUNICODE, "-")
ElseIf InStr(UCase(MaDich), "V") > 0 Then
    Dich = Split(mVNI, "-")
Else
    Dich = Split(mXOADAU, "-")
End If

If InStr(UCase(MaNguon), "U") > 0 Then

    For i = 0 To UBound(Nguon)
        txt = Replace(txt, ChrW(Nguon(i)), Dich(i))
        txt = Replace(txt, UCase(ChrW(Nguon(i))), UCase(Dich(i)))
    Next i

ElseIf InStr(UCase(MaDich), "U") > 0 Then

    For i = 0 To UBound(Nguon)
        txt = Replace(txt, Nguon(i), ChrW$(Dich(i)))
        txt = Replace(txt, UCase(Nguon(i)), UCase(ChrW$(Dich(i))))
    Next i

Else

    For i = 0 To UBound(Nguon)
        txt = Replace(txt, Nguon(i), Dich(i))
        txt = Replace(txt, UCase(Nguon(i)), UCase(Dich(i)))
    Next i

End If

ChuyenMaTiengViet = txt

End Function
Nhanh chậm chưa bàn đến. Vấn đề là tôi thấy bạn thường viết các tools để phục vụ cho công việc nào đó. Đã là tools thì sẽ có nhiều người dùng đến nên ngoài việc trau chuốt thuật toán thì bạn cũng nên hướng đến sự chuyên nghiệp trong cách trình bày!
Nói thật có đôi lúc tôi nghĩ ra thuật toán chỉ trong vài phút nhưng cứ ngồi sửa đi sửa lại hàng chục lần về cách trình bày, đặt tên biến mà vẫn cảm thấy chưa vừa ý. Hiện tại lúc rảnh rỗi, tôi lục lại những code viết hàng chục năm trước ra xem rồi chỉnh sửa lại (chủ yếu về cách trình bày)
Luôn luôn cảm thấy không hài lòng với những gì mình làm được là điều giúp ta phát triển bản thân
 
Upvote 0
Nhanh chậm chưa bàn đến. Vấn đề là tôi thấy bạn thường viết các tools để phục vụ cho công việc nào đó. Đã là tools thì sẽ có nhiều người dùng đến nên ngoài việc trau chuốt thuật toán thì bạn cũng nên hướng đến sự chuyên nghiệp trong cách trình bày!
đọc bài của bác làm em nghĩ đến cái phát hiện ngôn ngữ của google, vậy mình tạo hàm phát kiểu kiểu gõ rồi tự in ra :D
 
Upvote 0
Upvote 0
Nhanh chậm chưa bàn đến. Vấn đề là tôi thấy bạn thường viết các tools để phục vụ cho công việc nào đó. Đã là tools thì sẽ có nhiều người dùng đến nên ngoài việc trau chuốt thuật toán thì bạn cũng nên hướng đến sự chuyên nghiệp trong cách trình bày!
Nói thật có đôi lúc tôi nghĩ ra thuật toán chỉ trong vài phút nhưng cứ ngồi sửa đi sửa lại hàng chục lần về cách trình bày, đặt tên biến mà vẫn cảm thấy chưa vừa ý. Hiện tại lúc rảnh rỗi, tôi lục lại những code viết hàng chục năm trước ra xem rồi chỉnh sửa lại (chủ yếu về cách trình bày)
Luôn luôn cảm thấy không hài lòng với những gì mình làm được là điều giúp ta phát triển bản thân
Giờ ngồi trên cầu gió mát quá thông não thầy ạ. Nhìn kỹ lại. Có 1 hàm thì mắc gì khai báo biến const bên ngoài cho nó chiếm bộ nhớ. "Lôi cổ" nó vào trong hàm luôn cho gọn hơn thầy nhỉ.
Em thì phải ngồi ghi bước giải quyết vô giấy rồi cách giải quyết mọi trường hợp. Xong mới viết code, viết 1 hồi hết nhìn ra luôn. Hên viết tới đâu còn ghi chú tới đó, coi còn hiểu chỗ đó làm cái gì.
 
Upvote 0
Giờ ngồi trên cầu gió mát quá thông não thầy ạ. Nhìn kỹ lại. Có 1 hàm thì mắc gì khai báo biến const bên ngoài cho nó chiếm bộ nhớ. "Lôi cổ" nó vào trong hàm luôn cho gọn hơn thầy nhỉ.
Dùng hàm tự tạo trong bảng tính Excel, khi thao tác trên bảng tính thì code chạy lại và vẫn phải sử dụng bộ nhớ, nếu đưa vào Function sẽ tạo vùng nhớ cho các biến rất nhiều lần, không hiểu máy tính xử lý ra sao, có lần mình bị thiếu bộ nhớ và chạy rất chậm, đưa ra ngoài thì chạy rất nhẹ
 
Upvote 0
Dùng hàm tự tạo trong bảng tính Excel, khi thao tác trên bảng tính thì code chạy lại và vẫn phải sử dụng bộ nhớ, nếu đưa vào Function sẽ tạo vùng nhớ cho các biến rất nhiều lần, không hiểu máy tính xử lý ra sao, có lần mình bị thiếu bộ nhớ và chạy rất chậm, đưa ra ngoài thì chạy rất nhẹ

Chưa hẳn do thiếu bộ nhớ làm chậm. Cái chậm có thể do thời gian đưa code vào bộ nhớ.
VBA là loại ngôn ngữ chạy theo kiểu đến đâu dịch đến đó. Bién toàn cục chỉ đưa vào chương trình 1 lần rồi nằm luôn trong bộ nhớ (bộ nhớ heap). Biến nôi nằm trong function, khi function chạy thì nó đi theo vào bộ nhớ (bộ nhớ stack), chạy xong thì cả vùng stack đó được clear hết.

Trên nguyên tắc, có 2 lý do khiến ngừoi ta muốn đưa các Const's vào hàm:
1. code gọn hơn, lúc cần dời đổi thì chỉ cần cóp nguyên hàm. Nếu ngừoi viết khéo, đặt chúng ở đầu code thì ngừoi đọc nhìn vào, biết ngay hàm chạy dựa trên 1 số điều kiện thông số (trị của Const's) và sửa đổi dễ dàng (ngừoi viết thường có chú thích chỉ dẫn cách sửa đổi)
2. an toàn hơn, hàm nào có Const's nấy. Tha hồ đặt tên, khỏi bị xích mích nhau.

Cũng trên nguyên tắc, có 2 lý do người ta muốn đưa ra ngoài:
1. chúng là của chung, là thông số cho tất cả các hàm trong module
2. bắt buộc chúng nằm trong heap để không phải mất công đưa vào bộ nhớ nhiều lần (đây là Const, khong cần khở tạo, chứ biến thì người ta còn tiết kiệm thời gian khởi tạo)

Tôi nói đây là trên quan điểm kỹ thuật chung chứ tôi thực sự không biết bên trong VBA Const được xử như thế nào. Có môt số ngôn ngữ, const là dạng hằng được trình dịch đưa thẳng vào nơi sử dụng. Tức là:
Const C = 999 : lúc đọc đến dòng này, trình dịch nhớ rằng nó có 1 hằng số 999
A = B + C : lúc đọc đến dòng này, trình dịch sẽ tự động hiểu A = B + 999
 
Upvote 0
Giờ ngồi trên cầu gió mát quá thông não thầy ạ. Nhìn kỹ lại. Có 1 hàm thì mắc gì khai báo biến const bên ngoài cho nó chiếm bộ nhớ. "Lôi cổ" nó vào trong hàm luôn cho gọn hơn thầy nhỉ.
.
Tại bạn ôm đồm nhiều thứ trong hàm nên "cảm thấy" vậy! Nếu là tôi thì:
- Viết 1 hàm riêng để chuyển tiếng Việt có dấu sang cách gõ Telex (hoặc VNI)
- Viết 1 hàm riêng để chuyển cách gõ Telex (hoặc VNI) sang tiếng Việt có dấu
- Viết thêm vài hàm riêng khác nữa nếu cần (chẳng hạn loại bỏ dấu tiếng Việt hay gì đó)
- Xong tôi viết 1 hàm chính như hàm của bạn nhưng code ngắn gọn hơn vì khi ấy tôi chỉ làm động tác gọi mấy hàm phía trên là xong
Và theo cách viết tôi vừa nêu thì việc đặt Const bên ngoài là rất hợp lý
 
Upvote 0
không hiểu sao máy mình làm cái Msgbox Tiếng Việt nó cứ hiểu sai Từ Sau ...và 1 vài từ nữa .... biết được chắc chết
Sai: Đã = ChrW(272) & "ã"
Đúng: Đã = ChrW(272)&ChrW(227)
 
Upvote 0
chắc thế này được rồi thầy nhỉ, không biết có chạy nhanh hay không :V
Mã:
Option Explicit
Const mUNICODE = "7845-7847-7849-7851-7853-7855-7857-7859-7861-7863-7871-7873-7875-7877-7879-7889-7891-7893-7895-7897-7899-7901-7903-7905-7907-7913-7915-7917-7919-7921-224-225-7843-227-7841-226-259-273-233-232-7867-7869-7865-234-237-236-7881-297-7883-243-242-7887-245-7885-244-417-250-249-7911-361-7909-432-253-7923-7927-7929-7925"
Const mTELEX = "aas-aaf-aar-aax-aaj-aws-awf-awr-awx-awj-ees-eef-eer-eex-eej-oos-oof-oor-oox-ooj-ows-owf-owr-owx-owj-uws-uwf-uwr-uwx-uwj-af-as-ar-ax-aj-aa-aw-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"
Const mVNI = "a61-a62-a63-a64-a65-a81-a82-a83-a84-a85-e61-e62-e63-e64-e65-o61-o62-o63-o64-o65-o71-o72-o73-o74-o75-u71-u72-u73-u74-u75-a2-a1-a3-a4-a5-a6-a8-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"
Const mXOADAU = "a-a-a-a-a-a-a-a-a-a-e-e-e-e-e-o-o-o-o-o-o-o-o-o-o-u-u-u-u-u-a-a-a-a-a-a-a-d-e-e-e-e-e-e-i-i-i-i-i-o-o-o-o-o-o-o-u-u-u-u-u-u-y-y-y-y-y"
Function ChuyenMaTiengViet(ByVal txt As String, ByVal MaNguon As String, Optional ByVal MaDich As String = "") As String

    Dim Nguon As Variant, Dich As Variant, i As Byte

If InStr(UCase(MaNguon), "T") > 0 Then
    Nguon = Split(mTELEX, "-")
ElseIf InStr(UCase(MaNguon), "U") > 0 Then
    Nguon = Split(mUNICODE, "-")
ElseIf InStr(UCase(MaNguon), "V") > 0 Then
    Nguon = Split(mVNI, "-")
End If

If InStr(UCase(MaDich), "T") > 0 Then
    Dich = Split(mTELEX, "-")
ElseIf InStr(UCase(MaDich), "U") > 0 Then
    Dich = Split(mUNICODE, "-")
ElseIf InStr(UCase(MaDich), "V") > 0 Then
    Dich = Split(mVNI, "-")
Else
    Dich = Split(mXOADAU, "-")
End If

If InStr(UCase(MaNguon), "U") > 0 Then

    For i = 0 To UBound(Nguon)
        txt = Replace(txt, ChrW(Nguon(i)), Dich(i))
        txt = Replace(txt, UCase(ChrW(Nguon(i))), UCase(Dich(i)))
    Next i

ElseIf InStr(UCase(MaDich), "U") > 0 Then

    For i = 0 To UBound(Nguon)
        txt = Replace(txt, Nguon(i), ChrW$(Dich(i)))
        txt = Replace(txt, UCase(Nguon(i)), UCase(ChrW$(Dich(i))))
    Next i

Else

    For i = 0 To UBound(Nguon)
        txt = Replace(txt, Nguon(i), Dich(i))
        txt = Replace(txt, UCase(Nguon(i)), UCase(Dich(i)))
    Next i

End If

ChuyenMaTiengViet = txt

End Function
Anh ơi em muốn từ:
Đà Nẵng đổi thành DDaf Nawngx, là ý nghĩ để dấu ở cuối được không anh.
Em cần để làm mã đố ạ.
 
Upvote 0
Web KT

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

Back
Top Bottom