Lọc dữ liệu theo TextBox trong ListBox trên Userform

  • Thread starter haokira
  • Ngày gửi
Trạng thái
Không mở trả lời sau này.
H

haokira

Guest
Em xin chào cả nhà, thời gian trước em có được các thành viên trong diễn đàn hỗ trợ đưa dữ liệu đã lọc bằng Dictionary lên listbox và lọc listbox đó theo textbox. Code chạy rất mượt ạ, nhưng khi em áp sang file khác thì lại không được, em đã kiểm tra theo từng dòng và thay các chỗ theo file mới mà vẫn không được. Xin mọi người xem giúp ạ.
Em cảm ơn ạ!
Link file:
 
V

vothanhthu

Guest
Mình chưa hiểu cho lắm bạn giải thích kỹ hơn giúp mình:
1. Lấy các phần chích từ colum F làm key: Phần chích là phần nào bạn?, làm key là làm từ khóa tìm kiếm ở Textbox Dược Liệu hay đâu nhỉ?
2. Tổng hợp theo các điều kiện: Tổng hợp các điều kiện này rồi xuất ra như thế nào nhỉ?, trong form mình thấy đâu liên quan gì đâu?
3. Kết quả mong muốn tạo ra form như hình: Sao mình nhìn form và điều kiện không dính gì nhau a?, Các Sp đựa vào đâu mà lấy vậy bạn ?, mấy số ở cột 2 và 3 listbox là gì luôn vậy bạn?
Bạn nên cho thêm hình ảnh sơ đồ hóa yêu cầu của bài này giúp mình, yêu cầu vầy nếu không phải người code lúc trước cho bạn thì không ai hiểu được!
 
Sửa lần cuối bởi điều hành viên:
H

haokira

Guest
Cảm ơn bạn quan tâm, mình xin giải thích như sau:
Về phần lọc để đưa vào listbox sẽ theo điều kiện sau:
  • Lấy 4 ký tự đầu của cột F (Mã sản phẩm làm điều kiện lọc duy nhất).
  • Điều kiện 2 là: Nếu cột E là N (Nhập) thì:
  • Dựa trên ký tự cuối của cột F (Loại kg trong túi)
  • Nếu =1 thì cộng thêm số lượng cột H vào cột 3 của mảng kết quả
  • Nếu =2 thì cộng thêm số lượng cột H vào cột 4 của mảng kết quả
  • ….
  • Nếu =5 thì cộng thêm số lượng cột H vào cột 7 của mảng kết quả
  • Ngược lại nếu cột E là X (Xuất) thì:
  • Dựa trên ký tự cuối của cột F (Loại kg trong túi)
  • Nếu =1 thì Trừ đi số lượng cột H vào cột 3 của mảng kết quả
  • Nếu =2 thì Trừ đi số lượng cột H vào cột 4 của mảng kết quả
  • ….
  • Nếu =5 thì Trừ đi số lượng cột H vào cột 7 của mảng kết quả
  • Kết quả mảng có 7 cột:
  • Cột 1: STT
  • Cột 2: Tên sản phẩm (Cột D trong bảng dữ liệu)
  • Cột 3: Số lượng tồn của túi loại 1 (Ký tựu cuối của Cột F)
  • Cột 4: Số lượng tồn của túi loại 2
  • …..
  • Cột 7: Số lượng tồn của túi loại 5
  • Về phần lọc này thì mình thử oke rồi nhưng khi đưa vào listbox và lọc listbox theo textbox thì bị lỗi, không ra kết quả.
 

tuhocvba

Administrator
Thành viên BQT
Hãy dùng hình vẽ minh họa. Hãy suy nghĩ trình bày sao cho dễ hiểu, giảm thiểu thời gian đọc hiểu cho người khác.
Bạn tham khảo cách trình bày ở đây.
 
H

haokira

Guest
Về phần lọc để có dữ liệu trong listbox thì mình đã làm được rồi. Mình xin trợ giúp để lọc được cái listbox khi gõ ký tự vào textbox thôi. Cột dùng để lọc là cột 2 trong listbox.
Xin cám ơn!
 
H

haokira

Guest
Lần trước có mình được mọi người trong diễn đàn làm cho cách dùng code thế này. Mình thấy rất hay, nhưng áp sang form này thì không được. Nên muốn biết chính xác do lỗi gì vì mình không hiểu lỗi nó thế nào ý, để lần sau biết cách chữa :D
Code như sau:
Mã:
Private Sub TextBox1_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.TextBox1.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(TextBox1.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, 2)), dk2) Then        'Tim cac ky tu danh vao textbox(txt_tenhang.value) trong mang ArrKQ()
                a = a + 1                                   'Tim theo dk2 trong cot 2 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
 
V

vothanhthu

Guest
Có phải là bạn muốn gõ trong TextBox thì dữ liệu cột tên SP trong Listbox nó Lọc theo Textbox đó không?
 
Sửa lần cuối bởi điều hành viên:
H

haokira

Guest
Có phải là bạn muốn gõ trong TextBox thì dữ liệu cột tên SP trong Listbox nó Lọc theo Textbox đó không?
Chuẩn luôn bạn ạ. Nhưng mình cũng muốn biết thêm là cái code trên nó lỗi chỗ nào, và cách sửa nữa
 
V

vothanhthu

Guest
@haokira
Mò code để biết lỗi thì rất lâu, vì ta phải đọc cặn kẽ từng dòng code và dữ liệu của bạn thì mới hiểu được bạn ạ.
Nếu bạn muốn lọc Listbox theo Textbox thì bạn có thể tham khảo bài này tại #2. Trong bài đó mình có sử dụng Listbox lọc theo Textbox bằng cách sử dụng hàm lọc mảng, bạn tham khảo thử
 
Sửa lần cuối bởi điều hành viên:
H

haokira

Guest
Ở #4 bài này:
Mình được giúp cách lọc theo code trên. Mình thấy tính chất, yêu cầu cũng na ná nhau mà không thể biết nó lỗi tại đâu @@
Nếu được, bạn xem giúp hộ mình nhé. Cảm ơn nhìu :D
@phamthach nếu được anh xem giúp hộ em mới ạ. Em cảm ơn
 
V

vothanhthu

Guest
Link ở #4 bị hỏng rồi bạn ơi...!
Có nhất định phải dùng Dic không nhỉ, hay sao lọc ra là được vậy bạn haokira
 

tuhocvba

Administrator
Thành viên BQT
Có vẻ như bạn ấy muốn như thế này.

Mình muốn gì thì nên nói rõ ra, nên nói bằng hình minh họa dễ hiểu, nói chung chung, thì người giúp cũng chỉ nói đường lối chung chung và bạn phải tự đi.
Đưa code tìm lỗi sai của bạn thì lâu, dù vậy, vẫn cần bạn trình bày rõ yêu cầu, để biết giá trị kỳ vọng là gì, cái gì sai, đúng là phải như thế nào.
Topic này sẽ di chuyển sang box khác, do cách trình bày của ban không đạt yêu cầu nằm trong Box này.
 
Trạng thái
Không mở trả lời sau này.
Top