我設計了一個搜索框,當文本輸入到搜索框中時,過濾我的表格。問題在於它太慢了,現在幾乎不值得將它放在我的工作簿中。搜索框過濾表的VBA代碼
任何人都可以想出任何方式來修改/改進此代碼?
這是目前我的代碼:
Private Sub TextBox1_Change()
Dim searchArea As Range, searchRow As Range, searchCell As Range
Dim searchString As String
Dim lastRow As Integer
Application.ScreenUpdating = False
searchString = "*" & LCase(TextBox1.Value) & "*"
Rows.Hidden = False
lastRow = ActiveSheet.Cells(Rows.Count, 1).End(xlUp).Row
Set searchArea = Me.Range("f3:f791", "f3" & lastRow)
searchArea.EntireRow.Hidden = True
For Each searchRow In searchArea.Rows
For Each searchCell In searchRow.Cells
If LCase(searchCell) Like searchString Then
searchRow.Hidden = False
Exit For
End If
Next searchCell
Next searchRow
Application.Goto Range("Z1"), True
ActiveWindow.ScrollColumn = 1
Application.ScreenUpdating = True
End Sub
編輯我的代碼如下:
Private Sub TextBox1_Change()
ActiveSheet.ListObjects("states").Range.AutoFilter Field:=1, _
Criteria1:="*" & [G1] & "*", Operator:=xlFilterValues
End Sub
但是,這是行不通的。有文字和數字在區域,而這僅是過濾文本,而不是數字...
考慮使用'AutoFilter'方法,而不是行由行/細胞通過細胞重複? –
那麼代碼是什麼樣子?對不起,在VBA上還是很新的...... – Darren
你也在遍歷一個列的範圍,並因此引入冗餘,因爲你正在爲'searchrow.cells'中的每個搜索單元執行''。 –