我有一个 Excel VBA 项目,用于发送电子邮件,其中包含用户在工作表 1 中选择的文档。在工作表 1 中有两列:Column1 和 Column 2。Column2 将所有文档列为超链接,如果用户想要选择一个文档,他/她在文档的 Column1 中放置一个“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 然后重新打开它。有什么方法可以通过单击 Column1 顶部的过滤器按钮清除过滤器并将所有其他文档带回来?