Giúp code lọc không phân biệt chử hoa chử thường (1 người xem)

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

congnguyen88

Thành viên bị đình chỉ hoạt động
Thành viên bị đình chỉ hoạt động
Tham gia
22/7/14
Bài viết
355
Được thích
31
Mình tìm đoạn code này tại trang: http://www.giaiphapexcel.com/forum/showthread.php?72633-Hỏi-cách-tạo-combo-box-thông-minh

tác giả Của bạn : quang hà

Code này khá là hay, chỉ cần đánh 1 số từ liên quan trong textbox thì Listbox sẽ hiện ra danh sách những từ liên quan. tất cả đều ok , chỉ còn 1 nhược điểm là vẫn còn phân biệt chữ hoa chử thường. Ví dụ gõ từ " giải "

thì hiện ra như sau :

- giải pháp
- Giải pháp
- GIẢI PHÁP

mong các bạn sửa lại code sao cho gõ chử hoa chử thường đều lọc ra hết


Sub loc3()
Dim dl(), i As Long
dl = Sheets("hanghoa").Range("B4:B503").Value 'lay nguon hang hoa
Sheet10.ListBox1.Clear
For i = 1 To UBound(dl)
If dl(i, 1) <> "" Then
If TV(dl(i, 1)) Like TV("*" & Sheet10.TextBox1.Value & "*") Then
Sheet10.ListBox1.AddItem dl(i, 1)
End If
End If
Next
End Sub








Function TV(ByVal Text As String) As String
Dim CharCode, ResText As String, i As Long, tmp As String
On Error Resume Next
tmp = Text
CharCode = Array(ChrW(7855), ChrW(7857), ChrW(7859), ChrW(7861), ChrW(7863), ChrW(7845), ChrW(7847), _
ChrW(7849), ChrW(7851), ChrW(7853), ChrW(225), ChrW(224), ChrW(7843), ChrW(227), ChrW(7841), _
ChrW(259), ChrW(226), ChrW(273), ChrW(7871), ChrW(7873), ChrW(7875), ChrW(7877), ChrW(7879), _
ChrW(233), ChrW(232), ChrW(7867), ChrW(7869), ChrW(7865), ChrW(234), ChrW(237), ChrW(236), _
ChrW(7881), ChrW(297), ChrW(7883), ChrW(7889), ChrW(7891), ChrW(7893), ChrW(7895), ChrW(7897), _
ChrW(7899), ChrW(7901), ChrW(7903), ChrW(7905), ChrW(7907), ChrW(243), ChrW(242), ChrW(7887), _
ChrW(245), ChrW(7885), ChrW(244), ChrW(417), ChrW(7913), ChrW(7915), ChrW(7917), ChrW(7919), _
ChrW(7921), ChrW(250), ChrW(249), ChrW(7911), ChrW(361), ChrW(7909), ChrW(432), ChrW(253), _
ChrW(7923), ChrW(7927), ChrW(7929), ChrW(7925))
ResText = "aaaaaaaaaaaaaaaaadeeeeeeeeeeeiiiiiooooooooooooooooouuuuuuuuuuuyyyyy"
For i = 0 To UBound(CharCode)
tmp = Replace(tmp, CharCode(i), Mid(ResText, i + 1, 1))
tmp = Replace(tmp, UCase(CharCode(i)), UCase(Mid(ResText, i + 1, 1)))
Next
TV = tmp
End Function
 
Lần chỉnh sửa cuối:
Mình tìm đoạn code này tại trang: http://www.giaiphapexcel.com/forum/showthread.php?72633-Hỏi-cách-tạo-combo-box-thông-minh

tác giả Của bạn : quang hà

Code này khá là hay, chỉ cần đánh 1 số từ liên quan trong textbox thì Listbox sẽ hiện ra danh sách những từ liên quan. tất cả đều ok , chỉ còn 1 nhược điểm là vẫn còn phân biệt chữ hoa chử thường. Ví dụ gõ từ " giải "

thì hiện ra như sau :

- giải pháp
- Giải pháp
- GIẢI PHÁP

mong các bạn sửa lại code sao cho gõ chử hoa chử thường đều lọc ra hết


Sub loc3()
Dim dl(), i As Long
dl = Sheets("hanghoa").Range("B4:B503").Value 'lay nguon hang hoa
Sheet10.ListBox1.Clear
For i = 1 To UBound(dl)
If dl(i, 1) <> "" Then
If TV(dl(i, 1)) Like TV("*" & Sheet10.TextBox1.Value & "*") Then
Sheet10.ListBox1.AddItem dl(i, 1)
End If
End If
Next
End Sub

Có 2 cách để bạn không phân biệt chữ hoa chữ thường khi dùng LIKE:

Cách 1:

Tại Module chứa toán tử Like, bạn đặt bên ngoài Sub và trên cùng Module câu lệnh sau:

Mã:
Option Compare Text

Cách 2: (Nên dùng cách này)

Mã:
    If [COLOR=#ff0000][B]LCase([/B][/COLOR]TV(dl(i, 1))[B][COLOR=#ff0000])[/COLOR][/B] Like [COLOR=#ff0000][B]LCase([/B][/COLOR]TV("*" & Sheet10.TextBox1.Value & "*")[B][COLOR=#ff0000]) [/COLOR][/B]Then
 
Upvote 0
Có 2 cách để bạn không phân biệt chữ hoa chữ thường khi dùng LIKE:

Cách 1:

Tại Module chứa toán tử Like, bạn đặt bên ngoài Sub và trên cùng Module câu lệnh sau:

Mã:
Option Compare Text

Cách 2: (Nên dùng cách này)

Mã:
    If [COLOR=#ff0000][B]LCase([/B][/COLOR]TV(dl(i, 1))[B][COLOR=#ff0000])[/COLOR][/B] Like [COLOR=#ff0000][B]LCase([/B][/COLOR]TV("*" & Sheet10.TextBox1.Value & "*")[B][COLOR=#ff0000]) [/COLOR][/B]Then



thank chú nha . mình làm được rồi
 
Upvote 0

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

Back
Top Bottom