如何使用阵列从VBA中选择切片器? Excel 2016目标:获取切片器选择,清除切片器,运行宏,重新选择切片器

问题描述

我在Sheet1(状态1和服务器)上有两个切片器。我想存储选定的元素,重置切片器,然后在运行排序宏后再次选择它们。这就是我所拥有的:

PATH

我认为问题出在以下部分。我只是不知道我在做什么错,因为我有点VBA新手。

    Option Explicit

Sub GetSlicerNCSTatusSel()
    Dim MyArrStatus() As Variant
    Dim MyArrServer() As Variant

    
    
    MyArrStatus = ArraylistofSelectedAndVisibleSlicerItems("Slicer_Status1")
    MyArrServer = ArraylistofSelectedAndVisibleSlicerItems("Slicer_Server")
    
    
    Dim slcr As SlicerCache
    Dim slc  As Slicer
    
    Dim element As Variant
    
     
    'Application.ScreenUpdating = False
     
    For Each slcr In ActiveWorkbook.SlicerCaches
        For Each slc In slcr.Slicers
            If slc.Shape.Parent Is ActiveSheet Then
                slcr.ClearManualFilter
                
                
                Exit For
            End If
        Next slc
    Next slcr
    
srtnc
  
    For Each element In MyArrStatus
        ActiveWorkbook.SlicerCaches("Slicer_Status1").SlicerItems(element).Selected = True
    Next element



    Application.ScreenUpdating = True

End Sub



Public Function ArraylistofSelectedAndVisibleSlicerItems(MySlicerName As String) As Variant


    Dim ShortList() As Variant
    Dim i As Integer: i = 0 'for iterate

    Dim sC As SlicerCache
    Dim sI As SlicerItem 'for iterate

    Set sC = ThisWorkbook.Application.ActiveWorkbook.SlicerCaches(MySlicerName)
    For Each sI In sC.SlicerItems
        If sI.Selected = True And sI.HasData = True Then 'Here is the condition!!!
                'Debug.Print sI.Name
            ReDim Preserve ShortList(i)
            ShortList(i) = sI.Value
            i = i + 1
        End If
    Next sI
    ArraylistofSelectedAndVisibleSlicerItems = ShortList
End Function

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)