2015-08-14 43 views
1

我想用一個宏來使用下面的代碼片段來過濾數據透視表。該代碼有效,但切片器不會更新以反映剛剛應用的過濾器。如果我手動過濾數據透視表,切片會更新。PowerPivot切片器在VBA過濾器後不刷新

我嘗試刷新/刷新全部,手動更新設置和屏幕更新設置。我被卡住了。有任何想法嗎?

ActiveSheet.PivotTables("PivotTable1").PivotFields(_ 
    "[DataWithDuplicates_FULL].[PA_Select].[PA_Select]"). _ 
    PivotFilters.Add Type:=xlCaptionContains, Value1:=SrchTrm 

回答

0

限幅器的工作原理是在看PivotItem是否是可見或不可見。使用PivotFilters.Add Type:=xlCaptionContains類型的策略會適當地過濾您的數據,但不會「檢查」正確的過濾器框。

得到過濾器/限幅器,以你想要的方式進行響應的方式是像

Dim pf As PivotField 
Dim pi As PivotItem 
Dim pt As PivotTable 

Set pt = ActiveSheet.PivotTables("PivotTable1") 
Set pf = pt.PivotFields("[DataWithDuplicates_FULL].[PA_Select].[PA_Select]") 
pf.ClearAllFilters 
For Each pi In pf.PivotItems 
    pi.Visible = pi.Caption Like "*" & SrchTrm & "*" 
Next pi 

謹慎選擇沒有值,因爲當你告訴它選擇什麼數據透視表將拋出一個錯誤。