如何在 Excel 中打开、保存或关闭工作簿时清除筛选器?
本文将学习如何在打开/关闭或保存工作表时移除筛选器。因为每当在工作表中应用筛选器时,它都会随文件一起保存,并保持原样,直到手动移除为止。这些筛选器可能会被误解为工作表中的缺失数据。在相应的工作表中应用一些 Visual Basic 代码后,可以自动移除这些筛选器。以下是此任务需要用到的 VBA 代码。
打开工作簿时清除筛选器
保存工作簿时清除筛选器
关闭工作簿时清除筛选器
打开工作簿时清除筛选器
步骤 1− 我们选取了示例工作簿,其中对数据应用了少量筛选器。

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

您也可以使用"开发人员"选项卡打开上述编辑器,如下所示 -

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

步骤 4- 现在复制以下 VBA 代码并在 ThisWorkbook (Code) 窗口中输入相同的内容。

Private Sub Workbook_Open() / 设置范围,使外部模块中的子程序无法调用该特定子例程,也无法在工作簿打开时触发事件。
Dim ws As Worksheet / 返回仅包含工作表的 Sheets 集合对象
For Each ws In Worksheets / 指定工作表或工作簿中的每个工作表
If ws.AutoFilterMode Then / 检查任何工作表中是否已应用任何筛选器的条件
ws.AutoFilterMode = False / 然后将自动筛选模式设置为 false,并删除所有已应用的筛选器。
End If / 如果上述条件为 false,则转到下一个条件。
Next ws / 检查下一个工作表。
End Sub / subs 结束。

步骤 5− 输入代码后,按键盘上的 Alt+Q 键关闭 Microsoft Visual Studio 2012。 Microsoft Visual Basic for Applications 窗口。
步骤 6- 接下来,将文件保存为"Excel 启用宏的工作簿"格式。

步骤 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 / 如果上述条件为 false,则转到下一个。
Next ws / 检查下一个工作表。
End Sub / subs 结束。

步骤 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 / subs 结束。

步骤 3− 现在再次按照打开工作簿时清除过滤器的步骤 5 和 6 保存文件。一旦文件关闭,筛选器将被移除,并且在关闭文件时将无法使用。

结论
最后,可以在 VBA 编辑器中同时输入以上 3 段代码中的任意一段,以将更改应用于工作簿。这些是从工作簿中删除各种筛选器的最实用、最可靠的方法。希望这些方法能帮助您解决问题。继续学习,继续探索 Excel。
相关文章
有用资源
excel 参考教程 - 该教程包含有关 excel 的更多信息:https://www.cainiaomax.com/excel/

