我在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或函数未定义。
答案 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等创建的工作表......
这有意义吗?