Option Compare Text
Private Sub TextBox1_Change()
Dim lastRow As Long, r As Long, findValue As String, dulieu(), rng As Range
With Sheet1
.Rows("7:1000").EntireRow.Hidden = False ' mở các dòng ẩn 7:1000
If Len(TextBox1.Value) = 0 Then Exit Sub ' nếu từ tìm kiếm không có thì dọn đồ chơi
lastRow = .Cells(Rows.Count, "E").End(xlUp).Row ' dòng cuối cùng có dữ liệu ử cột E
If lastRow < 7 Then Exit Sub ' nếu không có dữ liệu thì dọn đồ chơi
dulieu = .Range("B7:C" & lastRow).Value ' lấy cột B, C vào mảng dulieu vì duyệt mảng rất nhanh, khi dữ liệu quá nhiều thì nên tìm trong mảng
End With
findValue = "*" & TextBox1.Value & "*" ' từ cần tìm
For r = 1 To UBound(dulieu, 1) ' duyệt từng dòng
If Not (dulieu(r, 1) Like findValue Or dulieu(r, 2) Like findValue) Then ' nếu dòng hiện hành không chứa từ cần tìm ...
If rng Is Nothing Then ' rng - Range gồm các dòng không chứa từ cần tìm
Set rng = Sheet1.Range("A" & r + 6).EntireRow
Else
Set rng = Union(rng, Sheet1.Range("A" & r + 6).EntireRow)
End If
End If
Next r
If Not rng Is Nothing Then ' nếu có các dòng không chứa từ cần tìm thì ẩn các dòng đó
rng.EntireRow.Hidden = True
Set rng = Nothing
End If
End Sub