2012-12-20 33 views
0

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

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

所以,我想要做的是让所有组自动展开,当过滤器被激活。这应该起到阻止差距的作用,直到我可以简单地重新设计图表为止。

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

我已经研究过制作我自己的侦听器,但是在代码中没有地方可以插入它来激活它。我只需要一个监听器,它会在过滤器被更改时注意到。

有什么想法?一个小时的搜索我难倒的......

+0

您的过滤器是否通过VBA触发? 1.'PivotTable_changed()'事件2. 2.'如果相交(目标,范围(“A2”))'可以有所帮助。 – bonCodigo

+0

不,它们是由有人点击普通表的最上面一行并在那里改变过滤器而触发的。我希望它是使用VBA触发的...... –

回答

3

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

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

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

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

参考:[MSDN Article on the same thing]。 1显然,解决这个问题的方法要稳健得多,这在文章中有详细介绍。

+0

+1创造性地找到自己的解决方案...和一个人可以学习。 –

+0

谢谢Scott,我尽我所能:-)。 –

1
  • 你提到的表后,所以假设它的数据透视表,你可以尝试,

Worksheet_PivotTableUpdate(ByVal Target As PivotTable)

  • 如果它只是一个轻盾范围变化然后,

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

+0

它不是一个数据透视表,它只是一个正常格式化的表格。问题是我需要Excel来告诉我的代码,该过滤器正在被激活。如果我刚刚知道它被激活,我可以对范围进行测试,并找出范围是否正在使用或不... –