如何在 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。