0
我有一个Excel VBA项目,用户可以在Sheet 1中选择的文档发送电子邮件。在Sheet 1中有两栏:Column1和Column 2. Column2列出所有文档为超链接,如果用户想要要选择一个文档,他/她在文档的Column1中放置一个“x”。然后用户点击发送按钮发送电子邮件。下面是按钮点击事件的代码:当引发错误如何清除在vba代码中设置的过滤器?
…
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,然后重新打开它。是否有任何方法可以通过单击Column1顶部的过滤器按钮清除过滤器,并将所有其他文档重新放回?
此问答是否回答您的问题? http://stackoverflow.com/questions/14426837/vba-unfilter-range/14428929#14428929 – 2013-02-08 18:22:11
不是。我想显示过滤器按钮。但是我也想给用户一个在sheet1中的选项来清除过滤器。 – GLP 2013-02-08 19:56:39