返回选择的切片器值作为变体

问题描述 投票:0回答:1

选项明确

Sub TestExample()
    Dim MyArr() As Variant
    MyArr = ArrayListOfSelectedAndVisibleSlicerItems("Slicer_A")
    'now variable MyArr keeps all items in an array
End Sub

Public Function ArrayListOfSelectedAndVisibleSlicerItems(MySlicerName As String) As Variant
    'This function returns an array of the limited set of items in Slicer A
    'Limitation is due to both:
    '(1) direct selection of items by user in slicer A
    '(2) selection of items in slicer B which in consequence limits the number of items in slicer A
    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

刚刚发现了这段代码,但该行出错了

For Each sI In sC.SlicerItems

任何人都可以帮忙解决这个问题,变量类型存储值对我来说是必须的,谢谢

vba pivot-table variant slicers
1个回答
0
投票

保罗,我想说确保你的MySlicerName变量是正确的。尝试通过打印sC.SlicerItems.Count来测试它是否不是0.此外,从MS Docs站点 - *尝试访问连接到外部OLAP数据源(SlicerCache.OLAP = True)的切片器的SlicerItems属性生成运行 - 时间错误。 *

很难说不知道实际的错误。

© www.soinside.com 2019 - 2024. All rights reserved.