Xuất bản ngày 09/01/2022
Views
Tìm kiếm nối dung Listbox từ Textbox trong EXCEL VBA
Trong quá trình làm việc với Excel mình có gặp một số trường dò tìm giá trị của 1 mãng dữ liệu này đó hoặc muốn nhập liệu nhanh , ví dụ cac mã hàng hoặc các nội dung liên quan đến tìm kiếm
Hôm nay mình share các bạn cách tạo 1 hộp tìm kiếm dựa trên USERFORM
Hôm nay mình share các bạn cách tạo 1 hộp tìm kiếm dựa trên USERFORM
Option Explicit
Option Compare Text
Public ArrayData, MaxRow&, MaxCol%, TempArr()
Public Sub faytLstBxMultiCol(strSearchTxt$, _
ListBox As MSForms.ListBox)
'---------------------------------------------------------------------------------
'# Code tim kiem nhieu cot trong Listbox.
'# Tac gia: HeSanbi - GPE
'---------------------------------------------------------------------------------
On Error Resume Next '----------------------------- [ bãy lôi ]
Dim I&, J%, r&
For I = 1 To MaxRow
For J = 1 To MaxCol: If ArrayData(I, J) Like "*" & strSearchTxt & "*" Then GoTo AddArr:
Next
If False Then
AddArr: r = r + 1
For J = 1 To MaxCol
TempArr(r, J) = ArrayData(I, J)
If J = 5 And TempArr(r, J) >= 1000 Then _
TempArr(r, J) = (ArrayData(I, J))
Next
End If
Next
With ListBox
.Clear: .AddItem
If r = 0 Then GoTo EH_Exit
ReDim result(1 To r, 1 To MaxCol)
GoSub TranTempArr: .List = result
End With
EH_Exit: Exit Sub
TranTempArr:
For I = 1 To r: For J = 1 To MaxCol: result(I, J) = TempArr(I, J): Next J, I
Return
End Sub
Private Sub TextBox1_Change() ' khi tim bat dau tim kiem thi call du lieu trong texbox Call faytLstBxMultiCol(Me.TextBox1.Value, Me.ListBox1) End Sub
Sub ganSourceListbox()
On Error Resume Next
With Sheet1.Range("A1")
MaxCol = Sheet1.Range("A1").End(xlToRight).Column '--- hàng
MaxRow = Sheet1.Range("A" & Rows.Count).End(xlUp).Row - 1 '---- c?t
ArrayData = .Resize(MaxRow, MaxCol).Value
End With
ReDim TempArr(1 To MaxRow, 1 To MaxCol)
ListBox1.List = ArrayData
End Sub

