微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何解决如何使用阵列从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 举报,一经查实,本站将立刻删除。