繁体   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