按名称引用SlicerCache,而不是数字

时间:2015-08-17 14:50:46

标签: excel excel-vba vba

我有一些引用Slicers的代码:

For Each item In wb.SlicerCaches("Segment").SlicerItems
    If item.Selected = True Then
        If Len(sSegment) > 0 Then sSegment = sSegment & "|"
        sSegment = sSegment & item.Caption
    End If
Next item

但我得到Invalid procedure call or argument。我已经看到许多按名称引用它们的示例,但无法使其发挥作用。如果我使用(1),(3)等然后添加一个切片器,它就会搞乱订单,所以代码就会被破坏。

如何按名称引用它们,我的最终目标是遍历所选项目。

2 个答案:

答案 0 :(得分:1)

您可能需要在前面添加Slicer_来引用slicercache。

例如,我在包含书籍信息的表格中添加了Authors切片器,我可以使用此代码来引用它:

Debug.Print ActiveWorkbook.SlicerCaches("Slicer_Author").Slicers("Author").Caption

我知道添加Slicer_的原因是因为我右键单击切片器然后选择了Slicer Settings...并看到了这个:

Slicer Info

这似乎很好地引用了切片器。我碰巧看到了这一点,并且想要尝试一下,真是愚蠢的运气。

答案 1 :(得分:0)

尝试:

For Each item In wb.SlicerCaches.Item("Segment").SlicerItems