2012-12-19 34 views
2

我試圖從一個切片器中選擇和取消選擇多個切片器項目,直到所有選擇都完成後才觸發更新。我可以很簡單地在Excel前端通過按住Ctrl鍵單擊我想要的所有選項來完成此操作。但是,當我用這種行爲記錄一個宏並運行它時,它會在每次選擇/取消選擇後更新(記錄的宏只是With塊中的一堆.Selection = True/False語句)。Excel VBA - 一次選擇多個切片器項目而不刷新

我使用SlicerCaches.VisibleSlicerItemsList功能嘗試過,但拋出一個1004應用程序錯誤 - 甚至當我使用SlicerItem.Name場來填充數組:

Dim tntw(0 To 2) as Variant 
For i = 0 To 2 
    tntw(i) = sc.SlicerItems(i + 1).Name 
Next i 
sc.VisibleSlicerItemsList = tntw 

我也試着將所有依賴數據透視表手動更新爲此,以及試圖將application.calculation設置爲手動(並切換回到最後),但都沒有完成我正在尋找。

任何想法?

+1

在執行代碼之前,您是否嘗試過'Application.EnableEvents = False',然後在重置之後? –

+0

看起來這樣做 - 謝謝!作爲一個說明,我需要在我上次選擇之前將事件重新打開,所以我需要捕獲的其他事件實際上已經觸發了,但是這似乎起到了作用。 –

+0

很高興聽到它! –

回答

1

作爲@ joseph4tw張貼在評論中,所有真正需要的是Application.EnableEvents = False行。但是,我需要在重複最終切片器之前重新啓用事件,以使事件真正觸發。我無法再訪問代碼(以前的工作),但想象一下,解決方案包括計算切片器的數量,並在循環調用中以n-1重新啓用事件。

1

選擇之前把

Application.Calculation = xlmanual 

選擇

Application.Calculation = xlautomatic 

這完全爲我工作後。我有同樣的問題。

相關問題