Lọc listbox theo textbox

haokira

Thành viên mới
Nhờ mọi người trợ giúp em vấn đề sau ạ:
Em tạo 1 form trong đó có 1 listbox và 1 textbox.
Listbox hiện dữ liệu lọc từ sheet Data. Bình thường nếu em cho kết quả lọc đó ra sheet khác xong mới cho vào listbox thì lọc listbox theo textbox được. Nhưng bây giờ khi em đưa trực tiếp kết quả vào listbox thì không biết viết thế nào ạ. Nhờ mọi người giúp đỡ ạ.
Em cảm ơn.
Link File ạ:
 

tuhocvba

Administrator
Thành viên BQT
Bạn tham khảo topic về listbox ở đây:
 

phamthach

Thành viên
Bạn coi đúng k nhé.
Bạn cần đăng nhập để thấy hình ảnh

 

haokira

Thành viên mới
Trong code mình có coment khá rõ.
Tất cả trong đó đều học hỏi dưới sự giúp đỡ của các thành viên trong diễn đàn mình.
Hãy dành lời cảm ơn đó cho diễn đàn nhé bạn
Dạ vâng, em cảm ơn diễn đàn & các anh chị ạ.
 

mrbomst

Thành viên mới
Chuẩn luôn anh ạ. Mấy cái code thêm vào còn cách em 1 khoảng quá xa ạ =))
Cám ơn anh ạ.
link die rồi mong bác có thể gửi lại file hay code không ạ.
em đang muốn áp dụng vào file của em để lọc nhưng chưa biết làm. nếu có thể bác giúp em trên file của em được không ạ!
 

haokira

Thành viên mới
Code đây bạn nhé
Mã:
Private Sub TextBox6_KeyUp(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)  'Khi txt6 dung phim len or xuong
    If KeyCode = 40 Or KeyCode = 38 Then Exit Sub   'Khi nhan phim mui ten xuong or len
    If KeyCode = 13 Then    'Phim tro lai/enter
        Me.TextBox6.SetFocus    'Setfocus cho txt6
        Exit Sub
    End If
'-----------------------------------'Loc du lieu tu listbox theo txt6
    Dim lr As Integer   'Khai bao bien
    Dim i, a   As Integer
    Dim dk1 As String
    Dim kq, dk2
    Const rt As Byte = 1 'Tieu de dong 1    'Giu tieu de dong 1
    dk1 = UCase(TextBox6.text) 'dua toan bo chu Hoa thanh chu thuong
    dk2 = UniConvert(dk1, "Telex") 'Unicode
    With ListBox1
        .Clear      ' xoa toan bo listbox
        .ColumnCount = 7    ' Chia listbox thnh 7 cot
        '.ColumnWidths = "20;90;60;60;60;60;0"    'Chia do dong cua cac cot trong listbox
        '.ListStyle = fmListStyleOption
        .MultiSelect = False    'Chon nhieu dong trong listbox là false
    ReDim kq(1 To UBound(Arrkq), 1 To 7)  ' Khai bao lai mang (kq) theo mang da gan vao listbox 'So cot là:7
        For i = LBound(Arrkq, 1) To UBound(Arrkq, 1) Step 1 'Cho i chay tu ... den ...
           If InStr(1, UCase(Arrkq(i, 3)), dk2) Then 'Tim cac ky tu danh vao textbox(txt_tenhang.value) trong mang ArrKQ()
                a = a + 1                                   'Tim theo dk2 trong cot 3 mang ArrKQ
                kq(a, 1) = Arrkq(i, 1)  'Gan ket qua vao mang kq
                kq(a, 2) = Arrkq(i, 2)
                kq(a, 3) = Arrkq(i, 3)
                kq(a, 4) = Arrkq(i, 4)
                kq(a, 5) = Arrkq(i, 5)
                kq(a, 6) = Arrkq(i, 6)
                kq(a, 7) = Arrkq(i, 7)
            End If
        Next i
               ListBox1.List = kq 'dua ket qua loc vao listbox
    End With
End Sub
 

mrbomst

Thành viên mới
Code đây bạn nhé
Mã:
Private Sub TextBox6_KeyUp(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)  'Khi txt6 dung phim len or xuong
    If KeyCode = 40 Or KeyCode = 38 Then Exit Sub   'Khi nhan phim mui ten xuong or len
    If KeyCode = 13 Then    'Phim tro lai/enter
        Me.TextBox6.SetFocus    'Setfocus cho txt6
        Exit Sub
    End If
'-----------------------------------'Loc du lieu tu listbox theo txt6
    Dim lr As Integer   'Khai bao bien
    Dim i, a   As Integer
    Dim dk1 As String
    Dim kq, dk2
    Const rt As Byte = 1 'Tieu de dong 1    'Giu tieu de dong 1
    dk1 = UCase(TextBox6.text) 'dua toan bo chu Hoa thanh chu thuong
    dk2 = UniConvert(dk1, "Telex") 'Unicode
    With ListBox1
        .Clear      ' xoa toan bo listbox
        .ColumnCount = 7    ' Chia listbox thnh 7 cot
        '.ColumnWidths = "20;90;60;60;60;60;0"    'Chia do dong cua cac cot trong listbox
        '.ListStyle = fmListStyleOption
        .MultiSelect = False    'Chon nhieu dong trong listbox là false
    ReDim kq(1 To UBound(Arrkq), 1 To 7)  ' Khai bao lai mang (kq) theo mang da gan vao listbox 'So cot là:7
        For i = LBound(Arrkq, 1) To UBound(Arrkq, 1) Step 1 'Cho i chay tu ... den ...
           If InStr(1, UCase(Arrkq(i, 3)), dk2) Then 'Tim cac ky tu danh vao textbox(txt_tenhang.value) trong mang ArrKQ()
                a = a + 1                                   'Tim theo dk2 trong cot 3 mang ArrKQ
                kq(a, 1) = Arrkq(i, 1)  'Gan ket qua vao mang kq
                kq(a, 2) = Arrkq(i, 2)
                kq(a, 3) = Arrkq(i, 3)
                kq(a, 4) = Arrkq(i, 4)
                kq(a, 5) = Arrkq(i, 5)
                kq(a, 6) = Arrkq(i, 6)
                kq(a, 7) = Arrkq(i, 7)
            End If
        Next i
               ListBox1.List = kq 'dua ket qua loc vao listbox
    End With
End Sub
bác có thể gửi file em tham khảo được không ạ, nà nếu em dùng mã này cho textbox và listbox không ở trên form mà được tạo trêo sheet thì sửa lại sao ạ.
 
Top