Вернуть выбранные значения слайсера как вариант - PullRequest
0 голосов
/ 08 марта 2019

Опция Явная

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

Может ли кто-нибудь помочь выяснить это, хранимое значение типа варианта является обязательным для меня Спасибо

1 Ответ

0 голосов
/ 08 марта 2019

Пол, я бы сказал, что ваша MySlicerName переменная верна.Попробуйте проверить, напечатав sC.SlicerItems.Count, чтобы убедиться, что это не 0. Кроме того, с сайта MS Docs - * Попытка получить доступ к свойству SlicerItems для слайсеров, которые подключены к внешнему источнику данных OLAP (SlicerCache. OLAP = True), создаетошибка выполнения.*

Трудно сказать, не зная фактической ошибки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...