运行filter后自动运行VBA代码

我写了一个代码,将员工和他们的资格分类。 为了淘汰不合格资质的员工,我对每个栏目都加了一个filter,标明他们的资格类别。

我写了我的VBA代码,以便重复的名称和资格是为了便于定位而隐形的。 但是,我无法让代码自动运行。

目前,我可以让代码运行的唯一方法是将其设置为

Private Sub Worksheet_Change(ByVal Target As Range),然后更改任意单元格的值。

我发现我认为是正确的解决scheme:

http://www.ozgrid.com/forum/showthread.php?t=72860

但我无法理解它。

有没有办法运行这个代码,而不必select和取消selectfilter运行后的单元格?

我的文章中的关键点将变更陷入使用VBA的过滤列表

文章中有更多的细节和示例文件,重点摘要如下

  1. A1添加一个“虚拟”工作表,使用单个SUBTOTAL公式,指向主工作表上正在过滤的范围。
  2. Worksheet_Calculate()事件被添加到“虚拟”工作表中,当事件filter更改时, SUBTOTAL公式更新时触发此事件。

如果需要以Manual运行“工作簿计算”,则需要接下来的两个设置

  1. 添加Workbook_Open事件,将除“Dummy”之外的所有工作表的EnableCalculation属性设置为False。
  2. 计算模式运行工作簿

你提到的ozgrid代码告诉你,你可以把你的代码放在worksheet_calculate表模块中的worksheet_calculate事件中,只要你有更改自动filter时会重新计算的东西。 这个东西可以是你可以隐藏在工作表中的小计公式,例如=subtotal(3,A:A)

仍然需要调查,但看起来像Chart Calculate事件是在Calculation = xlCalculationManual时触发的。 至less在我的Excel 2007上工作。所以这些步骤是:

  • 创build一个图表(在Sheet1上说“图表1”),它实际上使用来自任何表格列的数据
  • 检查更改filter时是否更新其图片
  • 创build一个新的类,例如clsChartEvents:

     Public WithEvents Chart As Chart Private Sub Chart_Calculate() Stop End sub 
  • 将此代码添加到某个模块或类中:

     Private chartEvents as new ChartEvents 'create a module-scope variable sub SubscribeToChartEvents set chartEvents.Chart = Sheet1.ChartObjects("Chart 1").Chart end sub 
  • 执行SubscribeToChartEvents
  • 更改filter,你应该出现在Sub Chart_Calculate()