Фильтрация сводной таблицы модели данных по значению ячейки - PullRequest
0 голосов
/ 29 мая 2020

Я пробовал много разных решений, подобных приведенным здесь , но ни одно из них не работает для меня.

У меня следующий код:

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    If Intersect(Target, Range("C1")) Is Nothing Then Exit Sub

    Dim pt As PivotTable
    Dim Field As PivotField
    Dim NewCat As Integer '<-I have tred String or not defining it at all

    Set pt = Worksheets("Sheet1").PivotTables("myPivot")
    Set Field = pt.PivotFields("[Test].[Category].[Category]")
    NewCat = Worksheets("Sheet1").Range("C1").Value

     With pt
        Field.ClearAllFilters
        Field.CurrentPage = NewCat '<- Here I have tried many variations
        pt.RefreshTable
    End With

End Sub

I я в основном получаю ошибку 1004 в строке Field.CurrentPage. Переменная "Категория", которую я пытаюсь отфильтровать, состоит из целых чисел. Вся сводная таблица основана на модели данных. Не могу понять в чем дело, помогите!

1 Ответ

0 голосов
/ 29 мая 2020

Я наконец понял это. Проблема в том, что значение NewCat должно быть в формате [QueryName].[Category].&[CategoryValue]. Я предполагаю, что это связано с использованием Pivot в модели данных.

Итак, я использовал простую строку, чтобы получить значение в правильном формате:

myValue = Worksheets("Sheet1").Range("C1").Value
leftP = "&["
rightP = "]"
NewCat = "[Test].[Category]." & leftP& myValue & rightP

Надеюсь, это экономит время других ...

...