2012-12-20 143 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來告訴我的代碼,該過濾器正在被激活。如果我剛剛知道它被激活,我可以對範圍進行測試,並找出範圍是否正在使用或不... –