Excel VBA – 返回切片机中的选定元素

我有一个名为“Slicer_HeaderTitle”的切片机。 我只需要能够使用所选元素的值在VBA中调暗variables。 我一次只能select一个元素。

由于我的数据透视表连接到外部数据源,因此我通过VBAdynamic地select和取消select切片器中的元素有很多问题。 我不知道这是否与这个确切的例子有关,但是这个表连接到相同的外部数据源。

我曾经有一行代码,可以返回这个值,但是我现在可以find的所有代码都需要循环切片器中的每个元素,并检查是否被选中。 我希望避免这一点,因为我一次只有一个选定的元素。

在这里输入图像说明

' This is what I'm trying to achieve. Dim sValue as String sValue = ActiveWorkbook.SlicerCaches("Slicer_HeaderTitle").VisibleSlicerItems.Value msgbox(sValue) 'Returns: "Uge 14 - 2016 (3. Apr - 9. Apr)" 

当前状态:

在这里输入图像说明

好的,find错误,我们将退后一步,删除我的function,并尝试通过项目循环:

 Dim sC As SlicerCache Dim SL As SlicerCacheLevel Dim sI As SlicerItem Set sC = ActiveWorkbook.SlicerCaches("Slicer_Dates_Hie") Set SL = sC.SlicerCacheLevels(1) For Each sI In SL.SlicerItems sC.VisibleSlicerItemsList = Array(sI.Name) Next 

这就是我所做的:

 Public Function GetSelectedSlicerItems(SlicerName As String) As String Dim SL As SlicerCacheLevel Dim sI As SlicerItem Set SL = ActiveWorkbook.SlicerCaches(SlicerName).SlicerCacheLevels(1) For Each sI In SL.SlicerItems If sI.Selected = True Then GetSelectedSlicerItems = (sI.Value) End If Next End Function Dim sValue As String sValue = GetSelectedSlicerItems("Slicer_HeaderTitle") 

感谢Doktor OSwaldo帮助我很多!