简体   繁体   中英

vba select slicer item excel

I've recently discovered VBA code to filter slicers based off of variable names. It is a great tool for filtering what you want to see

The next step in my code is to potentially REMOVE visible data from my pivot table/chart (automatically).

Lets say I already have a variable "Remove_ITEM" that needs to be removed from the data shown. Remove_item is inside slicer ("slicer_Order").

The data is also inside a data model.

The code below is to ONLY show REmove_Item:

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

Now i want to do the opposite

I hope I understood what you are trying to achieve in your post.

Try the code below and let me know if it works as you intended:

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

Please keep in mind this is specifically for data model usage with a connection.

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

Heres a similar example using the array

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

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM