簡體   English   中英

Excel VBA自動篩選器編譯錯誤?

[英]Excel VBA Autofilter Compile Error?

我正在嘗試創建一個在您鍵入時自動過濾的搜索框。 我使用了各種教程,但是我在努力使其正常工作。

我使用的代碼是:

Private Sub SearchField_Change()
If Len(SearchField.Value) = 0 Then
    Sheet1.AutoFilterMode = False
Else
    If Sheet1.AutoFilterMode = True Then
        Sheet1.AutoFilterMode = False
    End If
Sheet1.Range ("A:A" & Rows.Count) .AutoFilter _ Field:= 1, Criteria1:="*" & SearchField.Value & "*"
End If
End Sub

當我嘗試使用此語法時收到語法錯誤,我感到困惑的是,我正在復制教程中的內容(適當地更改工作表名稱/文本框名稱),但沒有成功。

您需要正確指定過濾范圍。 被過濾范圍內的第一個單元格應該是您的標題。 因此,如果headersRow 2 ,請像這樣嘗試...

Sheet1.Range("A2:A" & Rows.Count).AutoFilter Field:=1, Criteria1:="*" & SearchField.Value & "*"

缺陷在於:

Range("A:A" & Rows.Count)

它將嘗試引用一些“ A:A1000000”范圍,這顯然是一個錯誤

然后您要使用:

Range("A1:A" & Rows.Count)

或者,這是相同的:

Range("A:A")

但是我不會引用整列並將范圍限制為實際使用的范圍

因此,您可以嘗試對代碼進行以下重構:

Private Sub SearchField_Change()
    With Sheet1
        .AutoFilterMode = False
        If Len(SearchField.Value) = 0 Then Exit Sub
        .Range("A1", .Cells(.Rows.Count,1).End(xlUp)).AutoFilter Field:= 1, Criteria1:="*" & SearchField.Value & "*"
    End With
End Sub

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM