作者:jingjing20111201 | 来源:互联网 | 2023-05-18 15:39
有没有办法弄清楚用户何时更改了纸张过滤器?
换句话说,是否有某种change_filter event
处理程序?
1> brettdj..:
是.
从这篇文章我发布在另一个论坛上
1. 在A1中使用单个公式添加一个虚拟工作表SUBTOTAL
,指向主工作表上要过滤的范围.
2.将Worksheet_Calculate()
事件添加到虚拟工作表中,SUBTOTAL
当更改过滤器时公式更新时,将触发此事件.
'Dummy sheet code
Private Sub Worksheet_Calculate()
'Dummy Sheet has recalculated
MsgBox "Your list has been filtered"
End Sub
迎合手工计算
请注意,上述方法要求将工作簿计算设置为自动(VBA中的xlCalculationAutomatic)或自动除表(xlCalculationSemiAutomatic).如果计算设置为手动(xlCalculationManual),则需要进一步编码以设置WorkBook,以便只将"虚拟"工作表设置为自动计算,所有其他工作表都关闭计算.
有一个很少使用的WorkSheet属性,EnableCalculation
可以通过Visual Basic编辑器设置为True或False.默认设置显然为True,如果设置为False,则工作表将无法计算.
EnableCalculation属性不适用于常规Excel菜单或功能区选项 - 因此,对于希望通过故意保持重新计算密钥表来保护Excel模型的人来说,这可能是一个有用的技巧.
添加Workbook_Open
事件以将EnableCalculation property
"Dummy"以外的所有工作表设置为False.
在计算模式下运行工作簿.