0

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

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

所以,我想要做的是让所有组在过滤器被激活时自动扩展。在我可以简单地重新设计图表之前,这应该作为一种权宜之计。

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

我已经考虑过制作自己的侦听器,但在代码中我无法插入它以使其激活。我只需要一个监听器,它会注意到过滤器何时更改。

有什么想法吗?经过一个小时的搜索,我被难住了......

4

2 回答 2

3

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

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

我最终做的是在我的表格之外的某个地方找到一个不会受到崩溃影响的单元格,然后我添加了一个非常简单的公式 (=Count(H:H))。现在,只要表格折叠,计数就会受到影响,从而激活 Worksheet_Calculate 侦听器。瞧!我可以随心所欲地动态更改分组:-)。

所以你有它。如果您需要检测通过 Worksheet 监听器激活的过滤器,您只需要设置一个公式来激活计算监听器。

参考:[MSDN 上相同的文章]。1 显然还有一种更强大的方法可以解决此问题,文章中对此进行了详细说明。

于 2012-12-20T16:26:40.257 回答
1
  • 你提到了表,所以假设它是数据透视表,你可以试试,

Worksheet_PivotTableUpdate(ByVal Target As PivotTable)

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

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

于 2012-12-20T16:06:01.663 回答