选项明确
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
任何人都可以帮忙解决这个问题,变量类型存储值对我来说是必须的,谢谢
保罗,我想说确保你的MySlicerName变量是正确的。尝试通过打印sC.SlicerItems.Count
来测试它是否不是0.此外,从MS Docs站点 - *尝试访问连接到外部OLAP数据源(SlicerCache.OLAP = True)的切片器的SlicerItems属性生成运行 - 时间错误。 *
很难说不知道实际的错误。