Я пытаюсь изменить фильтр для сводной таблицы, которая была настроена с использованием функции «Добавить эти данные в модель данных» с использованием VBA, которая считывает выбор списка, содержащего элементы для фильтрации. Я начал с записи макроса, чтобы увидеть, что произойдет, и получил следующее:
ActiveSheet.PivotTables("Pivottable1").PivotFields("[Range 1 1].[Quarter].[Quarter]").VisibleItemsList = _
Array("[Range 1 1].[Quarter].&[1Q20]", "[Range 1 1].[Quarter].&[3Q20]")
Моя задача - динамически настроить массив, который может содержать любое количество элементов. Мне нужно сделать что-то похожее на приведенное ниже, но каждый раз добавлять к массиву, чего не происходит:
For x = 0 To ListBox1.ListCount - 1
If ListBox1.Selected(x) = True Then
myArray = Array("[Range 1 1].[Quarter].&[" & ListBox1.List(x) & "]")
End If
Next x
ActiveSheet.PivotTables("Pivottable1").PivotFields("[Range 1 1].[Quarter].[Quarter]").VisibleItemsList = myArray
Я тестировал другие способы, которые не работали, например, используя:
' This didn't work:
Set myArray = CreateObject("System.Collections.ArrayList")
myArray.Add "[Range 1 1].[Quarter].&[1Q20]"
' This method didn't work either
Dim myArray(2) As Variant
myArray2(0) = "1Q20"
myArray2(1) = "2Q20"
Мне нужно заменить Array("[Range 1 1].[Quarter].&[1Q20]", "[Range 1 1].[Quarter].&[3Q20]")
на то, что я могу настроить динамически. Любые идеи о том, как я могу это сделать?