我已经编写了一个代码,根据员工的资质对他们进行分类。为了剔除具有不需要的资质的员工,我对标题为其资质类别的每个列应用了一个过滤器。
我编写VBA代码的目的是为了便于定位,使重复的名称和限定不可见。但是,我无法让代码自动运行。
目前,让代码运行的唯一方法是将其设置为
私有子目标(ByVal Worksheet_Change As Range),然后更改任意单元格的值。
我在以下位置找到了我认为正确的解决方案:
http://www.ozgrid.com/forum/showthread.php?t=72860
但是我不能理解它。
在筛选器运行后,有没有一种方法可以运行此代码,而不必选择和取消选择单元格?
发布于 2012-10-10 08:00:07
我的文章Trapping a change to a filtered list with VBA中的要点
这篇文章有更多的细节和一个样本文件,要点总结如下
A1中只有一个SUBTOTAL公式,指向主工作表上要筛选的区域。Worksheet_Calculate()事件添加到“虚拟”WorkSheet,当更改筛选器时SUBTOTAL公式更新时,将触发此事件。如果希望以Manual身份运行工作簿计算,则需要下面两个设置
Workbook_Open事件以将除"Dummy“之外的所有工作表的EnableCalculation属性设置为False。发布于 2012-10-10 05:52:41
您提到的ozgrid code告诉您,您可以将代码放在worksheet_calculate事件中(在工作表模块中),只要您有在更改自动筛选器时重新计算的内容。这可以是一个可以隐藏在工作表中的小计公式,例如=subtotal(3,A:A)
发布于 2014-10-01 02:54:16
仍然需要调查,但看起来图表计算事件在Calculation = xlCalculationManual时被触发。至少可以在我的Excel2007上运行。因此,步骤如下:
公共子图表作为图表私有子Chart_Calculate() Stop End Sub
SubscribeToChartEvents
1").Chart end sub
https://stackoverflow.com/questions/12808009
复制相似问题