问题在工作簿关闭时重新应用过滤器

时间:2015-10-07 17:08:17

标签: excel vba excel-vba

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

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

我假设第二行会重新应用我在Sheet 2上的AutoFilter中设置的过滤器。

我将数据输入到Sheet 1,而Sheet 2读取该数据并对其进行过滤。然后该文档使用AutoHotkey:打开,获取更多数据,保存并关闭计时器。我只是需要它,以便当文档关闭时,它会查看Sheet2上的过滤器并重新应用它。

我试过了:

Sheet2.AutoFilter.ApplyFilter

但那没用。在查看了一些VBA之后,似乎将Sheet("Sheet2").AutoFilter.Applyfilter改为{{1}}就可以了。但现在我只是得到编译错误:sub或函数未定义

1 个答案:

答案 0 :(得分:2)

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

Sheet2.[whatever]确实在VBA中有应用程序,但是然而它不一定会引用名为"Sheet2"的工作表。 Sheet2是指在工作簿中创建的第二个工作表。如果您创建三个工作表,并将它们重命名为“Fun Page 1”,“Fun Page 4”,“Fun Page 8”,Sheet2.AutoFilter...将在您创建的任何工作表上运行(可能是名为“有趣的第4页“。)

通过使用Sheets("Fun Page 4").AutoFilter...,代码告诉VB查找名为“Fun Page 4”的工作表,而不是第1,第2等创建的工作表......

这有意义吗?