Giải Thích code TimKiem

Rùa Con 1080

Thành Viên Sao Chép 2
Tham gia ngày
4 Tháng năm 2016
Bài viết
351
Được thích
47
Điểm
185
Nhờ mọi người giải thích dùm em code TimKiem này với:
Mã:
Private Sub TimKiem()
Dim GetRows()
Dim strType As String
Dim n As Long, r As Long
        
    strType = UCase(tb_Search) & "*"
    ArrChungLoai = Sheet4.Range(Sheet4.Range("A65000").End(xlUp), Sheet4.Range("B3")).Value
    pri_Ubd1 = UBound(ArrChungLoai, 1)
    pri_Ubd2 = UBound(ArrChungLoai, 2)
   
    For r = 1 To pri_Ubd1
    If UCase(ArrChungLoai(r, 1)) Like strType Then
        n = n + 1
        ReDim Preserve GetRows(1 To n)
        GetRows(n) = r
    End If
    Next
        
    If n Then
        Dim ArrFilter(), c As Byte
        ReDim ArrFilter(1 To n, 1 To pri_Ubd2)
        
        For r = 1 To n
            For c = 1 To pri_Ubd2
            ArrFilter(r, c) = ArrChungLoai(GetRows(r), c)
            Next
        Next
        
        ListBox1.List = ArrFilter
    Else
        ListBox1.List = Array() 'neu tbx_Search =empty -> show all
    End If
End Sub
Trong code khi gỏ một từ vào textBox thì sẽ tìm tất cả những tên phụ liệu có từ đó và lấy luôn DVT theo tên phụ liệu đó. Bây giờ em muốn lấy luôn mã số theo tên phụ liệu thì chỉnh code làm sao ah.
Cám ơn mọi người.
 

Rùa Con 1080

Thành Viên Sao Chép 2
Tham gia ngày
4 Tháng năm 2016
Bài viết
351
Được thích
47
Điểm
185
Em xin giải thích thêm mảng ArrChungLoai là cột A là tên phụ liệu, cột B là ĐVT. Bây giờ em chỉnh lại Cột A là Tên phụ liệu, cột B là mã Số, cột C là ĐVT, thì ArrChungLoai:
Mã:
ArrChungLoai = Sheet4.Range(Sheet4.Range("65000").End(Xlup), Sheet4.Range([B][COLOR=#ff0000]"C3"[/COLOR][/B])).Value
thì phải chỉnh code làm sao để lấy luôn cột B và cột C theo cột A.
 

Rùa Con 1080

Thành Viên Sao Chép 2
Tham gia ngày
4 Tháng năm 2016
Bài viết
351
Được thích
47
Điểm
185
Trước mảng ArrChungLoai có 2 cột (A & B), bây giờ mảng ArrChungLoai là 3 Cột (A, B & C) thì chỉnh làm sao trong code và trong vòng lặp For ... next
 

ChanhTQ@

0901452không62
Tham gia ngày
5 Tháng chín 2008
Bài viết
4,261
Được thích
4,870
Điểm
100
Bạn viết vậy thí fải chờ duy nhất người đã giúp bạn mới tiếp tục xem xét & trả lời mà thôi.

Có thể đưa file đó lên, may ra sẽ có thêm người hỗ trợ.

Chúc vui! --=0
 

huuthang_bd

Chuyên gia GPE
Tham gia ngày
10 Tháng chín 2008
Bài viết
7,961
Được thích
9,305
Điểm
860
Nơi ở
TP.HCM
Nhờ mọi người giải thích dùm em code TimKiem này với:
Mã:
Private Sub TimKiem()
Dim GetRows()
Dim strType As String
Dim n As Long, r As Long
        
    strType = UCase(tb_Search) & "*"
    [COLOR=#ff0000]ArrChungLoai = Sheet4.Range(Sheet4.Range("A65000").End(xlUp), Sheet4.Range("B3")).Value[/COLOR]
    pri_Ubd1 = UBound(ArrChungLoai, 1)
    pri_Ubd2 = UBound(ArrChungLoai, 2)
   
    For r = 1 To pri_Ubd1
    If UCase(ArrChungLoai(r, 1)) Like strType Then
        n = n + 1
        ReDim Preserve GetRows(1 To n)
        GetRows(n) = r
    End If
    Next
        
    If n Then
        Dim ArrFilter(), c As Byte
        ReDim ArrFilter(1 To n, 1 To pri_Ubd2)
        
        For r = 1 To n
            For c = 1 To pri_Ubd2
            ArrFilter(r, c) = ArrChungLoai(GetRows(r), c)
            Next
        Next
        
        ListBox1.List = ArrFilter
    Else
        ListBox1.List = Array() 'neu tbx_Search =empty -> show all
    End If
End Sub
Trong code khi gỏ một từ vào textBox thì sẽ tìm tất cả những tên phụ liệu có từ đó và lấy luôn DVT theo tên phụ liệu đó. Bây giờ em muốn lấy luôn mã số theo tên phụ liệu thì chỉnh code làm sao ah.
Cám ơn mọi người.
Bạn sửa dòng này
Mã:
ArrChungLoai = Sheet4.Range(Sheet4.Range("[COLOR=#ff0000]A[/COLOR]65000").End(xlUp), Sheet4.Range("[COLOR=#ff0000]C[/COLOR]3")).Value
Và sửa thuộc tính ColumnCount của Listbox1 từ 2 lên thành 3. Sửa các thuộc tính ColumnWidths và Width của Listbox1 nếu cần.
 
Top Bottom