问题重新应用工作簿closuresfilter

我在ThisWorkbook部分中有以下代码:

Private Sub Workbook_BeforeClose(Cancel As Boolean) Sheet("Sheet2").AutoFilter.ApplyFilter ActiveWorkbook.Save ThisWorkbook.Saved = True End Sub 

我认为第二行将重新应用我在表2中的自动filter中设置的filter。

我有数据馈送到工作表1,工作表2读取数据并过滤它。 然后文档与AutoHotkey一起工作:打开,获取更多数据,保存并closures定时器。 我只是需要它,以便在文档closures时查看Sheet2上的该filter并重新应用它。

我努力了:

 Private Sub Workbook_BeforeClose(Cancel As Boolean) Sheet2.AutoFilter.ApplyFilter ActiveWorkbook.Save ThisWorkbook.Saved = True End Sub 

但是这没有用。 看了一些VBA的东西,它似乎改变Sheet2.AutoFilter.ApplyFilterSheet("Sheet2").AutoFilter.Applyfilter会做的伎俩。 但是现在我只是得到了编译错误:子或函数没有定义

Sheet("Sheet2").AutoFilter.Applyfilter应该是Sheets("Sheet2").AutoFilter.Applyfilter (缺less“s”)。 Sheet不是VBA所能识别的,所以它认为这是你在其他地方定义的子程序或函数。 Sheets()但是,你正在寻找。

Sheet2.[whatever]在VBA中有应用程序, 它不一定会引用名为"Sheet2"的表格。 Sheet2引用在工作簿中创build的第二个工作表。 如果您创build三个工作表,并将其重命名为喜欢“有趣的页面1”,“有趣的页面4”,“有趣的页面8”, Sheet2.AutoFilter...将运行在您创build的任何表单上(可能是名为“有趣的第4页”)

通过使用Sheets("Fun Page 4").AutoFilter... ,代码是告诉VB寻找名为“有趣的页面4”,而不是第一,第二等创build的表…

那有意义吗?