Excel 如何清除vba代码中设置的过滤器?

Excel 如何清除vba代码中设置的过滤器?,excel,filter,vba,Excel,Filter,Vba,我有一个Excel VBA项目要发送电子邮件,其中包含用户在工作表1中选择的文档。在表1中有两列:第1列和第2列。第2列以超链接的形式列出所有文档,如果用户想要选择文档,他/她会在第1列中为文档添加一个“x”。然后用户单击发送按钮发送电子邮件。以下是按钮单击事件的代码: … Set Ash = ActiveSheet On Error GoTo cleanup Ash.Range("A5:B500").AutoFilter Field:=1, Crite

我有一个Excel VBA项目要发送电子邮件,其中包含用户在工作表1中选择的文档。在表1中有两列:第1列和第2列。第2列以超链接的形式列出所有文档,如果用户想要选择文档,他/她会在第1列中为文档添加一个“x”。然后用户单击发送按钮发送电子邮件。以下是按钮单击事件的代码:

…
    Set Ash = ActiveSheet
    On Error GoTo cleanup

            Ash.Range("A5:B500").AutoFilter Field:=1, Criteria1:="x"

            For Each cell In Ash.Range("B5:B300").SpecialCells(xlCellTypeVisible)
                If cell.Offset(0, -1).Value = "x" Then
                    …
                End If
            Next
…
cleanup:
    Set OutApp = Nothing
    With Application
        .EnableEvents = True
        .ScreenUpdating = True
    End With
 …
当出现错误时,我的问题就来了。用户单击“发送”按钮后,如果出现错误,Sheet1仅选择了这些文档,其他所有文档都已过滤掉。在每一列的顶部都会显示一个过滤器按钮,这很好,因为我确实希望用户知道出了什么问题

我的问题是无法更改过滤器设置或退出过滤器。我必须关闭Excel,然后重新打开它。有没有办法通过单击第1列顶部的“筛选”按钮来清除筛选,并将所有其他文档带回来?

类似这样的内容

Sub ToggleAutofilter()
    ' check if autofilter is currently off
    If ActiveSheet.FilterMode = False Then
        ' if it's off, turn it on, and filter on "Nick"
        Range("d5").AutoFilter Field:=1, Criteria1:="Nick"
    Else
        ' if it's on, turn it off
        Range("d5").AutoFilter
    End If
End Sub

看看这个。

这个问答回答了你的问题吗?不是真的。我想显示过滤器按钮。但是我还想在sheet1中为用户提供一个选项来清除过滤器。