获得一个macros保存运行

我想在保存工作簿时重置所有的filter。 目前我有:

Sub ResetFilters() On Error Resume Next ActiveSheet.ShowAllData End Sub Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, _ Cancel As Boolean) Dim ws As Worksheet For Each ws In ActiveWorkbook.Worksheets Call ResetFilters Next Cancel = False End Sub 

这个想法是,当我保存时,我删除所有的filter。 这是不是因为某种原因工作 – 有没有人有任何想法为什么?

编辑:更多的谷歌searchfind答案: Excel VBA – 保存之前运行macros

Tl; dr:总是谷歌与关键字stackoverflow在它 – 它有很大的帮助

你的程序可以写得更好。 我知道你解决了你原来的问题,但你确实注意到你不介意重置filter的更好方法。 这是更好的方法:

 Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, _ Cancel As Boolean) Dim ws As Worksheet ' Use 'ThisWorkbook' here since you only want to modify the workbook ' that the code is running in For Each ws In ThisWorkbook.Worksheets If ws.AutoFilterMode then ws.ShowAllData Next Cancel = False End Sub 

学习VBA的技巧,只是因为你可以绕过错误的On Error Resume Next不意味着你应该。 通常,通过简单的布尔检查就可以避免错误。 这可以防止你错过其他潜在的问题,是更好的编码实践。 更进一步说,如果你只是无视错误,SO上的一些人不会费心去帮忙。