Lớp học GPE tháng 10 - TPHCM: Conditional Formatting và Data Validation (tối 4, 6/10) | Excel cơ bản (tối 9, 11, 13/10) |
Thuần thục các hàm dò tìm (tối 10, 12/10) | Tất tần tật về PivotTable (tối 16, 18, 20/10) |
Tất tần tật về Filter và Advanced Filter (tối 23, 25/10) | Name động và biểu đồ (tối 24, 26, 28/10)

Đăng ký học Khởi đầu cùng Google Spreadsheet - 2 chủ nhật 1 và 8/10 - TPHCM

Đăng ký học Xây dựng ứng dụng Form bằng VBA - 2 chủ nhật 15 và 22/10 - TPHCM

Công cụ hỗ trợ tiếng Việt cho Excel

Thảo luận trong 'Lập Trình với Excel' bắt đầu bởi phamduylong, 3 Tháng bảy 2007.

  1. phamduylong

    phamduylong Thành viên danh dự

    Trên diễn đàn có nhiều bạn hỏi về xử lý tiếng Việt trên Excel như sắp xếp, chuyển từ bảng mã này sang bảng mã khác, tách họ, tách tên, sắp xếp, …
    Tôi đưa ra chủ đề này để chúng ta cùng tạo những công cụ hỗ trợ tiếng Việt cho Excel phong phú hơn.
    Tôi có viết một số hàm để thực hiện việc các việc đó. Nhưng để sử dụng thuận tiện hơn, tôi viết macro để người sử dụng không biết tên hàm, công thức cũng có thể sử dụng được bằng cách thao tác qua form bằng tiếng Việt. Tôi đã viết 2 tập tin TVEXCEL01.xls và TVEXCEL.xla, mỗi tập tin chứa một số công cụ phục vụ một số yêu cầu hỗ trợ tiếng Việt. Do chưa có thời gian nên tôi chưa gom chung tất cả công cụ thành một tập tin.

    A. Tập tin TVEXCEL.xla có các công cụ:
    1. Chuyển mã VNI, TCVN3-ABC, Unicode: chuyển qua lại giữa 3 bảng mã VNI-Windows, ABC TCVN3, Unicode (nên sử dụng bên TVEXCEL01).
    2. Sắp sếp (Sort): sắp xếp họ tên tiếng Việt.
    3. Chuyển câu (Change Case): chuyển qua lại giữa CHỮ HOA, chữ thường và Chữ Hoa Đầu Từ.
    4. Đọc số tiếng Việt: chuyển từ số sang cách đọc tiếng Việt (nên sử dụng bên TVEXCEL01)
    5. Tách ghép Họ Tên: tách họ tên 1 cột ra 2 cột, ghép họ tên 2 cột thành 1 cột.

    B. Tập tin TVEXCEL01.xla có các công cụ:
    1. Add-In TVEXCEL01: gán TVEXCEL01 vào Add-Ins.
    2. Chuyển bảng mã: chuyển qua lại giữa 3 bảng mã VNI-Windows, ABC TCVN3, Unicode.
    3. Đọc số tiếng Việt: chuyển từ số sang cách đọc tiếng Việt
    4. Lịch 1920-2099: cuốn lịch cho Excel.
    Tập tin TVEXCEL01 viết sau nên hoàn chỉnh hơn TVEXCEL, 2 công cụ chuyển mã và đọc số bạn nên sử dụng TVEXCEL01. Tôi gởi kèm 2 trang Web hướng dẫn sử dụng TVEXCEL01 là Chuyenma.zip và Docso.zip
     

    Các file đính kèm:

  2. vungoc

    vungoc Thành viên tiêu biểu

    Cảm ơn Thầy Long ! Những file này rất cần thiết và hữu ích cho người dùng office.

    Chúc Thầy Long luôn mạnh khỏe & thành đạt !
     
  3. levanduyet

    levanduyet Thành viên danh dự

    Xin chào Anh phamduylong,
    Sau khi thử tôi xin phép được góp ý về phần add-in của anh như sau:
    _Khi dùng menu chuyển bảng mã, nếu không có workbook nào đang mở thì chương trình thông báo, nhưng sau đó vẫn hiện form ra. Theo tôi nên không cho hiện form ra.
    Tương tự đối với các menu khác.
    _Còn lỗi như sau:

    [​IMG]

    Nên chăng anh dùng module tôi đã giới thiệu, để ngăn chặn các lỗi và ghi ra một file text. Như vậy người dùng sẽ cảm thấy dễ chịu hơn. Sau đó người dùng có thể gởi file báo lỗi này về cho anh.
    Anh xem lại lỗi này.

    [​IMG]

    Thông thường đối với lỗi này, anh nên khai báo tường minh.

    Form vẫn hiện ra

    [​IMG]

    Và cuối cùng dẫn đến báo lỗi sai

    [​IMG]

    Chúc anh thành công trong phiên bản sau.

    Lê Văn Duyệt
     
  4. phamduylong

    phamduylong Thành viên danh dự

    Cám ơn góp ý của Anh Duyệt.
    Tôi sẽ kiểm tra lại và chỉnh lại những sai sót. Mình viết và chạy thử thấy không vấn đề, nhưng chưa thử hết các trường hợp. Các anh em nếu có phát hiện lỗi báo lên diễn đàn để tôi khắc phục những lỗi giúp TVEXCEL hoàn thiện hơn.
     
  5. tnvtuan

    tnvtuan Thành viên mới

    Xin chào anh Phạm Duy Long!
    cảm ơn anh rất nhiều vì chương trình rất hay, tuy nhiên tôi muốn sửa một điểm nhưng không biết cách nào để sửa. Đó là tôi muốn chữ số không sẽ đọc là không chứ không đọc là linh. Xin anh chỉ giúp cho tôi cảm ơn rất nhiều
     
  6. phamduylong

    phamduylong Thành viên danh dự

    Password là phamduylong hoặc pham_duy_long
    Vào Module > Mod_Fun chỉnh lại "linh" thành "không" các function Docso (6 function cho 3 bảng mã)
     
  7. duongsatdn

    duongsatdn Thành viên tiêu biểu

    Anh Long ơi! Công cụ của anh tôi thấy thật là hay ở chỗ nó có thể chuyển mã cả trong nội dung công thức. (điều mà một số công cụ khác như Unikey hoặc VietkeyO chưa làm được). Cảm ơn anh nhiều.
    Tuy nhiên tôi có một trường hợp như sau: Nội dung sheet hoặc cả file nếu chủ yếu dùng font TCVN3, trong đó có một số cell lại dùng font Unicode (thậm chí trong cả một số cell chứa công thức), khi dùng chuyển mã sang Unicode thì công cụ này cho ra kết quả đúng với các cell là TCVN3, còn các cell định dạng là Uni thì lại không hiển thị được tiếng Việt. Có thể anh phát triển thêm:
    - Nếu nhận dạng cell nào đó đã định dạng đúng font đích rồi thì bỏ qua... (hoặc tương tự như vậy).
    - Có thể chọn một số cell để chuyển mã.
    Cảm ơn anh.
     
    Lần chỉnh sửa cuối: 6 Tháng tám 2007
  8. phamduylong

    phamduylong Thành viên danh dự

    Cám ơn em đã góp ý. Đúng là có một số bảng tính lại sử dụng nhiều bảng mã, tôi cũng nghĩ đến vấn đề này. Nhưng về kỹ thuật có một trở ngại là nếu phải kiểm tra bảng mã từng ô để chuyển thì chạy rất chậm, tôi sẽ tìm giải pháp nào tốt hơn để khắc phục.
     
    Lần chỉnh sửa cuối: 21 Tháng mười 2009
  9. phamduylong

    phamduylong Thành viên danh dự

    Hàm hỗ trợ tiếng Việt


    Để phục vụ cho các bảng tính sử dụng các bảng mã tiếng Việt như Unicode, VNI Windows, ABC-TCVN3, cần có một số hàm viết riêng cho các bảng mã đó.
    Trước đây tôi đã viết một số hàm hỗ trợ tiếng Việt cho 3 bảng mã trên. Qua sử dụng đã được các bạn góp ý, tôi đã chỉnh lại và hệ thống lại để các bạn tiện sử dụng.

    1. Sắp xếp
    Dùng để sắp xếp danh sách theo tiếng Việt theo quy tắc không dấu, sắc, huyền, hỏi, ngả, nặng.
    - Ví dụ SortUni(“Hổ trợ tiếng Việt”) > “hoz3 trozz5 tiezng1 viezt5”.
    - Với dữ liệu là họ tên, kết hợp với hàm DaoTen để sắp xếp theo tên. Ví dụ Sort(DaoTen(hoten))
    SortUni(text): Sắp xếp danh sách Unicode
    SortVn3(text): Sắp xếp danh sách ABC-TCVN3
    SortVni(text): Sắp xếp danh sách VNI Windows

    2. Chuyển bảng mã
    Chuyển từ bảng mã này sang bảng mã khác. Ví dụ ô A1 đang sử dụng font .VnTime nuốn chuyển sang Unicode, công thức =Vn3Uni(A1), sau khi chuyển xong định dạng lại font Time New Roman.
    UniVn3(text): Chuyển bảng mã Unicode sang ABC-TCVN3
    UniVni(text): Chuyển bảng mã Unicode sang VNI Windows
    Vn3Uni(text): Chuyển bảng mã ABC-TCVN3 sang Unicode
    Vn3Vni(text): Chuyển bảng mã ABC-TCVN3 sang VNI Windows
    VniUni(text): Chuyển bảng mã VNI Windows sang Unicode
    VniVn3(text): Chuyển bảng mã VNI Windows sang ABC-TCVN3

    3. Ngày tháng (riêng cho Unicode)
    Chuyển thứ, tháng từ 1 ngày sang tiếng Việt. Ví dụ WeekdayUni (“10/08/2007”) > “Thứ sáu”
    WeekdayUni(ngay): Thứ trong tuần (Chủ nhật, Thứ hai, …)
    MonthUni(ngay): Tháng trong năm (Tháng giêng, Tháng hai, …)

    4. Xử lý chuổi (riêng cho Unicode)
    CodeUni(text): Chuyển chuổi Unicode sang số mã (tương tự hàm CODE của Excel). Ví dụ CodeUni(“ỷ”) > 7927
    ProperUni(text): Chuyển câu sang Chữ Hoa Đầu Từ. Ví dụ ProperUni(“giải pháp excel”) > “Giải pháp Excel”
    VbaUni(text): chuyển chuổi Unicode sang cách viết kết hợp hàm ChrW dùng cho nhập chuổi Unicode trong Editor VBA.
    Ví dụ: UniVba(“Giải pháp”) > "Gi" & ChrW(7843) & "i pháp"

    5. Đọc số tiếng Việt
    Do cách đọc số chưa thống nhất (105 > một trăm linh năm) nên trước đây tôi viết cách đọc theo sách giáo khoa. Nhưng thực tế, nhiều nơi có cách đọc “linh” khác nhau như “lẻ”, “không”.
    Mặc khác có khi viết hoa ký tự đầu, có khi không. Được các bạn góp ý, tôi viết lại hàm đọc số linh hoạt hơn, cho phép bạn diễn đạt theo ý riêng của mình.
    DocSoUni(conso, doiso1, doiso2): Chuyển số sang sang đọc số cho Unicode
    DocSoVni(conso, doiso1, doiso2): Chuyển số sang sang đọc số cho VNI Windows
    DocSoVn3(conso, doiso1, doiso2): Chuyển số sang sang đọc số cho ABC-TCVN3
    Hàm có 3 đối số:
    conso: bắt buộc
    doiso1: không bắt buộc, ngầm định “linh”. Bạn nhập vào chuổi nào vào doiso1 thì “linh” sẽ thay bằng chuổi đó.
    doiso2: không bắt buộc, ngầm định 0 > viết hoa ký tự đầu tiên, 1 > không viết hoa.
    Ví dụ: Docso(105) > Một trăm linh năm
    _____Docso(105,”lẻ”,1) > một trăm lẻ năm

    6. Họ tên
    TachHo(hoten): Tách họ, tên đệm
    TachTen(hoten): Tách tên
    DaoHoTen(hoten): Đảo thứ tự họ, tên đệm, tên. Hàm này hổ trợ cho xếp danh sách họ tên.
    Ví dụ: TachHo(“pham duy long”) > “pham duy”
    _____TachTen(“pham duy long”) > “long”
    _____DaoTen(“pham duy long”) > “long duy pham”

    Do các hằng CodUni, StrVn3, StrVni, StrDau, StrMa dùng chung cho nhiều hàm nên các bạn nên để đầu Module.
     

    Các file đính kèm:

  10. phamduylong

    phamduylong Thành viên danh dự

    Khai báo hằng
    Để đầu module, do hằng dài nên tôi không ghi đầu đủ tại dây. Các bạn xem trong tập tin đính kèm
    Mã:
    [COLOR=black]Const CodUni = "225  224  7843 227  7841 259  7855 7857 7859 7861 ... "[/COLOR]
    [COLOR=black]Const StrVn3 = "¸µ¶·¹¨¾»¼½Æ©ÊÇÈÉËÐÌÎÏѪÕÒÓÔÖÝ×ØÜÞãßáçé¬í... "[/COLOR]
    [COLOR=black]Const StrVni = "aùaøaûaõaïaêaéaèaúaüaëaâaáaàaåaãaäeùeøeûeõeïeâ... "[/COLOR]
    [COLOR=black]Const StrDau = "12345 12345 1234512345 123451234512345 12345... "[/COLOR]
    [COLOR=black]Const StrMa = "a  a  a  a  a  az az az az az az azzazzazzazzazzazze ..."[/COLOR]
    [COLOR=black]Dim ArrUni[/COLOR]
    
    Hàm sắp xếp
    Mã:
    [COLOR=black]Function SortUni(text As String) As String[/COLOR]
    [COLOR=black]text = text & " "[/COLOR]
    [COLOR=black]madau = " "[/COLOR]
    [COLOR=black]For n = 1 To Len(text) - 1[/COLOR]
    [COLOR=black]kytu = Mid(text, n, 1)[/COLOR]
    [COLOR=black]codkytu = AscW(kytu) & String(5 - Len(CStr(AscW(kytu))), " ")[/COLOR]
    [COLOR=black]vitri = (InStr(1, CodUni, codkytu, 0) + 4) / 5[/COLOR]
    [COLOR=black]If vitri >= 1 Then[/COLOR]
    [COLOR=black] kytu = Trim(Mid(StrMa, vitri * 3 - 2, 3))[/COLOR]
    [COLOR=black] If madau = " " Then madau = Mid(StrDau, vitri, 1)[/COLOR]
    [COLOR=black]End If[/COLOR]
    [COLOR=black]If Mid(text, n + 1, 1) = " " Then[/COLOR]
    [COLOR=black] newtext = newtext & kytu & Trim(madau)[/COLOR]
    [COLOR=black] madau = " "[/COLOR]
    [COLOR=black]Else[/COLOR]
    [COLOR=black] newtext = newtext & kytu[/COLOR]
    [COLOR=black]End If[/COLOR]
    [COLOR=black]Next[/COLOR]
    [COLOR=black]SortUni = newtext[/COLOR]
    [COLOR=black]End Function[/COLOR]
     
    [COLOR=black]Function SortVn3(text As String) As String[/COLOR]
    [COLOR=black]text = text & " "[/COLOR]
    [COLOR=black]madau = " "[/COLOR]
    [COLOR=black]For n = 1 To Len(text) - 1[/COLOR]
    [COLOR=black]kytu = Mid(text, n, 1)[/COLOR]
    [COLOR=black]vitri = InStr(1, StrVn3, kytu, 0)[/COLOR]
    [COLOR=black]If vitri >= 1 Then[/COLOR]
    [COLOR=black] kytu = Trim(Mid(StrMa, vitri * 3 - 2, 3))[/COLOR]
    [COLOR=black] If madau = " " Then madau = Mid(StrDau, vitri, 1)[/COLOR]
    [COLOR=black]End If[/COLOR]
    [COLOR=black]If Mid(text, n + 1, 1) = " " Then[/COLOR]
    [COLOR=black] newtext = newtext & kytu & Trim(madau)[/COLOR]
    [COLOR=black] madau = " "[/COLOR]
    [COLOR=black]Else[/COLOR]
    [COLOR=black] newtext = newtext & kytu[/COLOR]
    [COLOR=black]End If[/COLOR]
    [COLOR=black]Next[/COLOR]
    [COLOR=black]SortVn3 = newtext[/COLOR]
    [COLOR=black]End Function[/COLOR]
     
    [COLOR=black]Function SortVni(text As String) As String[/COLOR]
    [COLOR=black]text = text & " "[/COLOR]
    [COLOR=black]madau = " "[/COLOR]
    [COLOR=black]For i = 1 To Len(text)[/COLOR]
    [COLOR=black]kytu = Mid(text, i, 2)[/COLOR]
    [COLOR=black]vitri = InStr(1, StrVni, kytu, 0)[/COLOR]
    [COLOR=black]If vitri = 0 Or Left(kytu, 1) = " " Or Right(kytu, 1) = " " Or Len(kytu) = 1 Then[/COLOR]
    [COLOR=black] kytu = Mid(text, i, 1)[/COLOR]
    [COLOR=black] vitri = InStr(1, StrVni, kytu, 0)[/COLOR]
    [COLOR=black] If (Asc(kytu) >= 65 And Asc(kytu) <= 122) Or kytu = " " Then[/COLOR]
    [COLOR=black]   vitri = 0[/COLOR]
    [COLOR=black] End If[/COLOR]
    [COLOR=black]Else[/COLOR]
    [COLOR=black] i = i + 1[/COLOR]
    [COLOR=black]End If[/COLOR]
    [COLOR=black]If vitri > 0 And kytu <> " " Then[/COLOR]
    [COLOR=black] kytu = Trim(Mid(StrMa, (vitri + 1) * 3 / 2 - 2, 3))[/COLOR]
    [COLOR=black] If madau = " " Then madau = Mid(StrDau, (vitri + 1) / 2, 1)[/COLOR]
    [COLOR=black]End If[/COLOR]
    [COLOR=black]If Mid(text, i + 1, 1) = " " Then[/COLOR]
    [COLOR=black] newtext = newtext & kytu & Trim(madau)[/COLOR]
    [COLOR=black] madau = " "[/COLOR]
    [COLOR=black]Else[/COLOR]
    [COLOR=black] newtext = newtext & kytu[/COLOR]
    [COLOR=black]End If[/COLOR]
    [COLOR=black]Next[/COLOR]
    [COLOR=black]SortVni = Left(newtext, Len(newtext) - 1)[/COLOR]
    [COLOR=black]End Function[/COLOR]
    
     
    Lần chỉnh sửa cuối: 10 Tháng tám 2007
  11. phamduylong

    phamduylong Thành viên danh dự

    Hàm ngày tháng
    Mã:
    [COLOR=black]Function WeekdayUni(ngay As Date) As String[/COLOR]
    [COLOR=black]ArrUni = Array("", "Ch" & ChrW(7911) & " nh" & ChrW(7853) & "t", "Th" & ChrW(7913) & " hai", "Th" & ChrW(7913) & " ba", "Th" & ChrW(7913) & [/COLOR]
    [COLOR=black][COLOR=white]____________[/COLOR]" t" & ChrW(432), "Th" & ChrW(7913) & " n" & ChrW(259) & "m", "Th" & ChrW(7913) & " sáu", "Th" & ChrW(7913) & " b" & ChrW(7843) & "y")[/COLOR]
    [COLOR=black]WeekdayUni = ArrUni(Weekday(ngay, vbSunday))[/COLOR]
    [COLOR=black]End Function[/COLOR]
     
    [COLOR=black]Function MonthUni(ngay As Date) As String[/COLOR]
    [COLOR=black]ArrUni = Array("", "Tháng giêng", "Tháng hai", "Tháng ba", "Tháng t" & ChrW(432), "Tháng n" & ChrW(259) & "m", "Tháng sáu", "Tháng b" & [/COLOR]
    [COLOR=black][COLOR=white]___________[/COLOR]ChrW(7843) & "y", "Tháng tám", "Tháng chín", "Tháng m" & ChrW(432) & ChrW(7901) & "i", "Tháng m" & ChrW(432) & ChrW(7901) & [/COLOR]
    [COLOR=black][COLOR=white]___________[/COLOR]"i m" & ChrW(7897) & "t", "Tháng m" & ChrW(432) & ChrW(7901) & "i hai")[/COLOR]
    [COLOR=black]MonthUni = ArrUni(Month(ngay))[/COLOR]
    [COLOR=black]End Function[/COLOR]
    
    Hàm xử lý chuỗi
    Mã:
    [COLOR=black]Function CodeUni(text As String) As Integer[/COLOR]
    [COLOR=black]CodeUni = AscW(text)[/COLOR]
    [COLOR=black]End Function[/COLOR]
     
    [COLOR=black]Function ProperUni(text As String) As String[/COLOR]
    [COLOR=black]text = " " & LCase(text)[/COLOR]
    [COLOR=black]For n = 2 To Len(text)[/COLOR]
    [COLOR=black]kytu = Mid(text, n, 1)[/COLOR]
    [COLOR=black]If Mid(text, n - 1, 1) = " " Then[/COLOR]
    [COLOR=black]  If AscW(kytu) < 256 Then[/COLOR]
    [COLOR=black]    kytu = UCase(kytu)[/COLOR]
    [COLOR=black]  Else[/COLOR]
    [COLOR=black]    kytu = ChrW(AscW(kytu) - 1)[/COLOR]
    [COLOR=black]  End If[/COLOR]
    [COLOR=black]End If[/COLOR]
    [COLOR=black]newtext = newtext & kytu[/COLOR]
    [COLOR=black]Next[/COLOR]
    [COLOR=black]ProperUni = newtext[/COLOR]
    [COLOR=black]End Function[/COLOR]
     
    [COLOR=black]Function VbaVba(text As String) As String[/COLOR]
    [COLOR=black]If text = "" Then[/COLOR]
    [COLOR=black]VbaVba = """"""[/COLOR]
    [COLOR=black]Else[/COLOR]
    [COLOR=black]text = text & " "[/COLOR]
    [COLOR=black]If AscW(Left(text, 1)) < 256 Then VbaUni = """"[/COLOR]
    [COLOR=black]For n = 1 To Len(text) - 1[/COLOR]
    [COLOR=black]  uni1 = Mid(text, n, 1)[/COLOR]
    [COLOR=black]  uni2 = AscW(Mid(text, n + 1, 1))[/COLOR]
    [COLOR=black]  If AscW(uni1) > 255 And uni2 > 255 Then[/COLOR]
    [COLOR=black]    VbaUni = VbaUni & "ChrW(" & AscW(uni1) & ") & "[/COLOR]
    [COLOR=black]  ElseIf AscW(uni1) > 255 And uni2 < 256 Then[/COLOR]
    [COLOR=black]    VbaUni = VbaUni & "ChrW(" & AscW(uni1) & ") & """[/COLOR]
    [COLOR=black]  ElseIf AscW(uni1) < 256 And uni2 > 255 Then[/COLOR]
    [COLOR=black]    VbaUni = VbaUni & uni1 & """ & "[/COLOR]
    [COLOR=black]  Else[/COLOR]
    [COLOR=black]    VbaUni = VbaUni & uni1[/COLOR]
    [COLOR=black]  End If[/COLOR]
    [COLOR=black]Next[/COLOR]
    [COLOR=black]If Right(VbaUni, 4) = " & """ Then[/COLOR]
    [COLOR=black]  VbaUni = Mid(VbaUni, 1, Len(VbaUni) - 4)[/COLOR]
    [COLOR=black]Else[/COLOR]
    [COLOR=black]  VbaUni = VbaUni & """"[/COLOR]
    [COLOR=black]End If[/COLOR]
    [COLOR=black]End If[/COLOR]
    [COLOR=black]End Function[/COLOR]
    
    Hàm họ tên
    Mã:
    [COLOR=black]Function TachHo(hoten As String) As String[/COLOR]
    [COLOR=black]hoten = Trim(hoten)[/COLOR]
    [COLOR=black]If hoten = "" Then[/COLOR]
    [COLOR=black]TachHo = ""[/COLOR]
    [COLOR=black]Else[/COLOR]
    [COLOR=black]vt = InStrRev(hoten, " ", Len(hoten))[/COLOR]
    [COLOR=black]If vt = 0 Then[/COLOR]
    [COLOR=black]  TachHo = ""[/COLOR]
    [COLOR=black]Else[/COLOR]
    [COLOR=black]  TachHo = Trim(Mid(hoten, 1, vt))[/COLOR]
    [COLOR=black]End If[/COLOR]
    [COLOR=black]End If[/COLOR]
    [COLOR=black]End Function[/COLOR]
    [COLOR=black]Function TachTen(hoten As String) As String[/COLOR]
    [COLOR=black]hoten = Trim(hoten)[/COLOR]
    [COLOR=black]If hoten = "" Then[/COLOR]
    [COLOR=black]TachTen = ""[/COLOR]
    [COLOR=black]Else[/COLOR]
    [COLOR=black]vt = InStrRev(hoten, " ", Len(hoten))[/COLOR]
    [COLOR=black]If vt = 0 Then[/COLOR]
    [COLOR=black]  TachTen = hoten[/COLOR]
    [COLOR=black]Else[/COLOR]
    [COLOR=black]  TachTen = Mid(hoten, vt + 1)[/COLOR]
    [COLOR=black]End If[/COLOR]
    [COLOR=black]End If[/COLOR]
    [COLOR=black]End Function[/COLOR]
     
    [COLOR=black]Function DaoHoTen(hoten As String) As String[/COLOR]
    [COLOR=black]hoten = " " & Trim(hoten)[/COLOR]
    [COLOR=black]If hoten = " " Then[/COLOR]
    [COLOR=black]DaoHoTen = ""[/COLOR]
    [COLOR=black]Else[/COLOR]
    [COLOR=black]Do[/COLOR]
    [COLOR=black]  vt = InStrRev(hoten, " ", Len(hoten))[/COLOR]
    [COLOR=black]  tendao = tendao & Mid(hoten, vt)[/COLOR]
    [COLOR=black]  hoten = Left(hoten, vt - 1)[/COLOR]
    [COLOR=black]  If vt = 1 Then Exit Do[/COLOR]
    [COLOR=black]Loop[/COLOR]
    [COLOR=black]DaoHoTen = Trim(tendao)[/COLOR]
    [COLOR=black]End If[/COLOR]
    [COLOR=black]End Function[/COLOR]
    
    Các bạn nên lấy code từ tập tin “Ho tro Tieng Viet VBA.xls” vì các mã trong các hằng rất khó nhập.
     
    Lần chỉnh sửa cuối: 10 Tháng tám 2007
  12. winplei

    winplei Thành viên mới

    Sau khi chọn add-ins thì báo lỗi 492.

    Chào anh Long!
    Em mới sử dụng chương trình này nên cũng không được rõ lắm. Sau khi chọn Add-Ins thì nhận được thông báo lỗi sau (Hình). Nhờ anh và mọi người hướng dẫn cách khắc phục.
     

    Các file đính kèm:

  13. chibi

    chibi Thành viên danh dự

    Gửi thầy phamduylong và các bạn quan tâm.
    Tôi đang dúng tiện ích chuyển đổi font của thầy, nhưng bất lực với file đính kèm, thầy và các bạn giúp tôi nhé.
    Chúc vui vẻ.
     

    Các file đính kèm:

  14. phamduylong

    phamduylong Thành viên danh dự

    Chuyển được chứ chibi. Nhưng tốc độ chuyển chậm.
    Bạn dùng hàm chỉnh tiếp họ tên (nhập không thống nhất chữ hoa, chữ thường)
     

    Các file đính kèm:

  15. chibi

    chibi Thành viên danh dự

    Cảm ơn thầy Long. Em chạy trên máy khác thấy bình thường. Không hiểu tại sao nữa. Em mô tả để thầy xem nhé (Máy không bình thường): Cấu hình không thấp (DualCore 1.86, 1G RAM), mọi thứ trên Excel chạy bình thường (Đại loại không virus), chỉ chuyển được <=100 dòng dữ liệu trong file mà em gửi trước.
     
  16. paulsteigel

    paulsteigel A Fool!

    Lần chỉnh sửa cuối: 27 Tháng mười hai 2009
  17. ggoo0105

    ggoo0105 Thành viên mới

    Sao vậy nè, các file bạn up lên mình down về thì hoàn toàn không mở được !! bạn giúp mình với nhé
     
    Chỉnh sửa lần cuối bởi điều hành viên: 26 Tháng hai 2009
  18. hoangdanh282vn

    hoangdanh282vn Nguyễn Cảnh Hoàng Danh Staff Member

    Nếu bạn down file về mà mở không lên thì có thể do máy bạn chưa cài phần mềm giải nén. Bạn down phần mềm nén và giải nén file như Winrar hay Winzip về, cài vào máy rồi dùng nó mở file lại xem sao nha.
     
  19. nautinus

    nautinus Thành viên mới

    Công cụ sắp xếp tên tiếng việt

    Mình thấy mọi người thảo luận rất sôi nổi.
    Mình có sưu tầm được tiện ích sắp sếp tiếng việt rất hay.
    Mình đã dùng và thấyđơnn giản nhưng hữu ích.
    Mọi người tham khảo nhé.
     

    Các file đính kèm:

  20. tnfsmith

    tnfsmith Thành viên hoạt động

    Xin hỏi ai có code loại bỏ dấu tiếng việt trong bảng tính excel. Share mình cái.
     

Chia sẻ trang này