2017-01-23 74 views
2

我最近發現了基於變量名過濾切片器的VBA代碼。這是一個偉大的工具,用於過濾你想看到的東西vba select slicer item excel

我的代碼中的下一步是可能從我的數據透視表/圖表(自動)中刪除可見數據。

假設我已經有一個變量「Remove_ITEM」,需要從顯示的數據中刪除。 Remove_item位於切片器(「slicer_Order」)內。

數據也在數據模型中。

下面的代碼是隻顯示REmove_Item:

ActiveWorkbook.SlicerCaches("Slicer_Order").'VisibleSlicerItemsList = ("[Actuals_Table].[Order].&["& Remove_item &"]") 

現在我想反其道而行之

+0

什麼'ActiveWorkbook.SlicerCaches( 「Slicer_Order」)的類似示例。SlicerItems(Remove_Item).Selected = FALSE'? – R3uK

+0

這給了我運行時錯誤'1004': –

+0

和'Slicers(「Slicer_Order」)。SlicerItems(Remove_Item).Selected = Fa lse'?爲了簡單起見,爲了簡單起見,我將Remove_item的值替換爲remove_item,並將其替換爲我希望移除的實際值,然後設置了Remove_Item的值(即'Remove_Item =「StringToRemove」)' – R3uK

回答

0

我希望我理解你想在你的崗位上實現的目標。

嘗試下面的代碼,讓我知道,如果它是你想要的結果:

Option Explicit 

Sub SlicersTst() 

Dim WB      As Workbook 
Dim OrderSlcrCache   As SlicerCache 
Dim OrderSlcItem   As SlicerItem 
Dim RemoveItem    As Variant 

Set WB = ThisWorkbook 

Set OrderSlcrCache = WB.SlicerCaches("Slicer_Order") '<-- set Slicer Cache to "Order" slicer 
OrderSlcrCache.ClearManualFilter '<-- clear manual filters 

RemoveItem = "c" '<-- set value for test 

' loop through all slicer items in slicer "Order" 
For Each OrderSlcItem In OrderSlcrCache.SlicerItems 
    If OrderSlcItem.Name = RemoveItem Then OrderSlcItem.Selected = False 
Next OrderSlcItem 

End Sub 
+0

我遇到了OrderSlcItem問題,但是我取得了一些突破。如果我讓我想要選擇到一個數組中的項目(並確保它有適當的defiinition由於數據模型,我得到這個:Dim Arr()As String ReDim Arr(1 To 2) Arr (1)= 「[Actuals_Table]。[命令]。&[000010840921]」 編曲(2)= 「[Actuals_Table]。[命令]。&[000010949159]」 ActiveWorkbook.SlicerCaches( 「Slicer_order」)。VisibleSlicerItemsList = Arr() 通過數組過濾效果很好! –

+0

所以現在它可以爲你工作嗎?你能添加一個屏幕截圖的透視和切片你的文章嗎?我想知道想要這個代碼(這是爲我工作)不適合你 –

0

請記住,這是專門爲連接數據模型的使用。

Sub Variables() 
Part_Number = Worksheets("Solumina_Data_Page").Cells(Row, "B").Value 
End Sub 


Sub Sort_Part_Number() 
Application.ScreenUpdating = False 
Page1 = ActiveSheet.Name 
Call Variables 


Sheets("Dashboard").Activate 

    ActiveWorkbook.SlicerCaches("Slicer_Material").VisibleSlicerItemsList = "[Part List].[Material].&[" & Part_Number & "]" 
' "[Part List].[Material].&[77C726210G1]" <<What we want to see 

Sheets(Page1).Activate 
Application.ScreenUpdating = True 
End Sub 

赫雷什使用陣列

Sub Use_ARRAY() 


Dim ARR() As String 
ReDim ARR(1 To 2) 
Call Array_Actuals_Data 'get data 
Call Array_Outliers_removed 'sort data 

ARR(1) = "[Actuals_Table].[Order].&[000010840921]" 
ARR(2) = "[Actuals_Table].[Order].&[000010949159]" 

ActiveWorkbook.SlicerCaches("Slicer_order").VisibleSlicerItemsList = ARR() 

End Sub