Excel VBA – возврат выбранного элемента в slicer

У меня есть slicer под названием «Slicer_HeaderTitle». Мне просто нужно уметь изменять переменную в VBA со значением выбранного элемента. У меня будет только один элемент, выбранный за раз.

У меня было много проблем с выбором и удалением элементов из моего slicer динамически с помощью VBA, так как моя сводная таблица подключена к внешнему источнику данных. Я не знаю, подходит ли это для этого точного примера, но эта таблица связана с одним и тем же внешним источником данных.

Раньше у меня была одна строка кода, которая могла бы вернуть это значение, но теперь все, что я могу найти, требует, чтобы вы проходили через каждый элемент в slicer и проверяли, выбрано ли оно или нет. Я надеюсь избежать этого, так как у меня только один выбранный элемент за раз.

введите описание изображения здесь

' 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)" 

Текущее состояние:

введите описание изображения здесь

Ок, чтобы найти ошибку, мы сделаем шаг назад, удалим мою функцию и попробуем прокрутить элементы:

 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") 

Спасибо Доктору OSwaldo за то, что он мне очень помог!

Давайте будем гением компьютера.