监听表过滤器激活

时间:2012-12-20 15:19:58

标签: vba excel-vba excel

我有一个表格,其顶部有一系列过滤器(按照惯例。)此表格提供了一个包含多个数据系列的大型图表。为了隐藏不同系列的数据,我将信息分组到表中。然后,我可以单击减号按钮通过折叠组从图表中删除一系列数据,或单击加号按钮以相同的方式将其添加回来。是的,我知道,不是最好的解决方案。这是一个早期的努力,我能说什么?我的默认设置是隐藏所有数据(所有组都已折叠)。

我有一个用户(非常重要的用户)希望能够使用顶部的过滤器来查找他们正在寻找的特定系列。过滤器会发现折叠系列很好,但系列不会显示,因为它已折叠。

所以,我尝试做的是让所有组在激活过滤器时自动扩展。这应该作为一个停止间隙测量,直到我可以简单地重新设计图表。

问题:我无法弄清楚在点击(或以其他方式使用)过滤器时如何通知Excel。我尝试过使用Worksheet_Change和Worksheet_SelectionChange,但它们都没有激活我在侦听器中设置的代码。该代码(仅供参考)检查以确保过滤器正在使用中并相应地调整分组。如果我能让Excel注意到它的存在,它应该可以正常工作。

我已经考虑过制作自己的聆听者,但代码中没有任何地方可以插入它以使其激活。我只需要一个会在过滤器被更改时注意到的监听器。

有什么想法?经过一个小时的搜索,我很难过......

2 个答案:

答案 0 :(得分:3)

好的,经过一些研究,我想出了一个解决方法。这里的一个大问题是更改过滤器不会引发VBA可以听到的任何事件。大问题。

简单解决方案:创建一些可激活监听器的东西。

我最终做的是在桌子外面找到一个不会受折叠影响的细胞,然后我添加了一个非常简单的公式(= Count(H:H))。现在,无论何时折叠表,计数都会受到影响,从而激活Worksheet_Calculate侦听器。瞧!我可以动态地改变我想要的分组: - )。

所以你有它。如果需要检测通过Worksheet侦听器激活的过滤器,则只需设置公式即可激活计算侦听器。

参考:[关于同一件事的MSDN文章]。1显然有一种更强大的方法可以解决这个问题,详见文章。

答案 1 :(得分:1)

  • 您提到了表格,所以假设它是数据透视表,您可以尝试,

Worksheet_PivotTableUpdate(ByVal Target As PivotTable)

  • 如果它只是一个目标范围变化,那么,

If Intersect(Target, Range("A2"))