如何在 Excel 中打开、保存或关闭工作簿时清除筛选器?


本文将学习如何在打开、关闭或保存工作表时移除筛选器。因为每当在工作表中应用筛选器时,它都会与文件一起保存,并保持不变,直到手动移除。这些筛选器可能会被误解为工作表中的缺失数据。通过在相应工作表中应用一些 Visual Basic 代码,可以自动移除筛选器。以下是为此任务应包含的 VBA 代码。

  • 打开工作簿时清除筛选器

  • 保存工作簿时清除筛选器

  • 关闭工作簿时清除筛选器

打开工作簿时清除筛选器

步骤 1- 我们以一个应用了几个数据筛选器的示例工作簿为例。

步骤 2- 现在按键盘上的Alt+F11 键,将打开Microsoft Visual Basic for Applications窗口。

也可以使用“开发工具”选项卡打开上述编辑器,如下所示:

步骤 3- 在Microsoft Visual Basic for Applications窗口中,双击项目面板中的ThisWorkbook

步骤 4- 现在复制下面的 VBA 代码,并将其输入到ThisWorkbook (代码)窗口中。

Private Sub Workbook_Open() / 设置作用域,以便外部模块中的子例程无法调用该特定子例程,也是工作簿打开时的事件。

Dim ws As Worksheet / 返回一个 Sheets 集合对象,该对象仅包含工作表

For Each ws In Worksheets / 指定工作表或工作簿的每个工作表

If ws.AutoFilterMode Then / 条件:检查任何工作表中是否应用了任何筛选器

ws.AutoFilterMode = False / 然后将自动筛选器模式设置为 false 并移除所有应用的筛选器。

End If / 如果上述条件为假,则转到下一个条件。

Next ws / 检查下一个工作表

End Sub / 子例程结束

步骤 5- 输入代码后,按键盘上的Alt+Q 键关闭Microsoft Visual Basic for Applications窗口。

步骤 6- 接下来,将文件保存为启用宏的工作簿格式。

步骤 7- 从下一次开始,每当您打开工作簿时,筛选器都将自动移除。

保存工作簿时清除筛选器

步骤 1- 当您想要在保存工作表时移除筛选器时,可以使用此功能。

步骤 2- 按照“打开工作簿时清除筛选器”中的步骤 2 和 3 打开Microsoft Visual Basic for Applications窗口。


步骤 3- 将以下代码粘贴到 ThisWorkbook 中

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean) / 设置作用域,以便外部模块中的子例程无法调用该特定子例程,也是工作簿保存时的事件。

Dim ws As Worksheet / 返回一个 Sheets 集合对象,该对象仅包含工作表

For Each ws In Worksheets / 指定工作表或工作簿的每个工作表

If ws.AutoFilterMode Then / 条件:检查任何工作表中是否应用了任何筛选器

ws.AutoFilterMode = False / 然后将自动筛选器模式设置为 false 并移除所有应用的筛选器。

End If / 如果上述条件为假,则转到下一个条件

Next ws / 检查下一个工作表

End Sub / 子例程结束

步骤 4- 现在再次按照“打开工作簿时清除筛选器”中的步骤 5 和 6 保存文件。保存文件后,筛选器将被移除,并且在您打开文件时将不可用。

关闭工作簿时清除筛选器

步骤 1- 当您想要在关闭工作表时移除筛选器时,可以使用此功能。

步骤 2- 按照“打开工作簿时清除筛选器”中的步骤 2 和 3 打开Microsoft Visual Basic for Applications窗口。并将以下代码粘贴到ThisWorkbook中。

Private Sub Workbook_BeforeClose(Cancel As Boolean) / 设置作用域,以便外部模块中的子例程无法调用该特定子例程,也是工作簿关闭时的事件。

Dim ws As Worksheet / 返回一个 Sheets 集合对象,该对象仅包含工作表

For Each ws In Worksheets / 指定工作表或工作簿的每个工作表

If ws.AutoFilterMode Then / 条件:检查任何工作表中是否应用了任何筛选器

ws.AutoFilterMode = False / 然后将自动筛选器模式设置为 false 并移除所有应用的筛选器。

End If / 如果上述条件为假,则转到下一个条件

Next ws / 检查下一个工作表

End Sub / 子例程结束

步骤 3- 现在再次按照“打开工作簿时清除筛选器”中的步骤 5 和 6 保存文件。关闭文件后,筛选器将被移除,并且在您关闭文件时将不可用。

结论

最后,可以在 VBA 编辑器中一次输入上述 3 个代码中的任何一个以应用工作簿中的更改。这些是移除工作簿中各种筛选器的最有用和可靠的方法。希望这将帮助您解决问题。继续学习,继续探索 Excel。

更新于:2022年10月10日

2K+ 浏览量

启动您的职业生涯

完成课程获得认证

开始
广告