Excel VBA自动筛选编译错误?

Excel VBA自动筛选编译错误?,vba,excel,Vba,Excel,我正在尝试创建一个搜索框,在您键入时自动筛选。我已经使用了各种教程,但我很难让它正常工作 我使用的代码是: Private Sub SearchField_Change() If Len(SearchField.Value) = 0 Then Sheet1.AutoFilterMode = False Else If Sheet1.AutoFilterMode = True Then Sheet1.AutoFilterMode = False End If

我正在尝试创建一个搜索框,在您键入时自动筛选。我已经使用了各种教程,但我很难让它正常工作

我使用的代码是:

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

当我尝试使用此选项时,收到一个语法错误,我发现令人困惑的是,我正在复制教程上的内容(根据需要更改工作表名称/文本框名称),但没有成功。

您需要正确指定筛选范围。要筛选的区域中的第一个单元格应该是标题。因此,如果
标题
位于
第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