首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何清除vba代码中设置的过滤器?

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

Stack Overflow用户
提问于 2013-02-09 01:15:58
回答 1查看 3.8K关注 0票数 0

我有一个Excel VBA项目,用来发送带有用户在工作表1中选择的文档的电子邮件。工作表1中有两列: Column1和Column 2。Column2将所有文档作为超链接列出,如果用户想要选择一个文档,他/她会在Column1中为该文档加上一个"x“。然后,用户单击Send按钮发送电子邮件。以下是按钮单击事件的代码:

代码语言:javascript
运行
复制
…
    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
 …

当出现错误时,我的问题就出现了。用户单击Send按钮后,如果发生错误,Sheet1只会选择这些文档,而所有其他文档都会被过滤掉。而且在每一列的顶部都有一个过滤器按钮,这很好,因为我确实想让用户知道出了什么问题。

我的问题是我无法更改筛选器设置或退出筛选器。我必须关闭Excel,然后重新打开它。有没有什么方法可以通过单击Column1顶部的filter按钮来清除筛选器,并返回所有其他文档?

EN

回答 1

Stack Overflow用户

发布于 2013-12-03 16:17:57

像这样的东西?

代码语言:javascript
运行
复制
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

请参阅此link

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14777868

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档