Создание нескольких элементов поворота в зависимости от случая - PullRequest
0 голосов
/ 30 января 2020

Что я хочу сделать, так это то, что в ячейке меняются сводные элементы

Например, если в выбранной ячейке указано значение «Февраль», я хочу, чтобы каждая сводная таблица в поле месяца месяца фильтровалась по январю и февралю или

если выбранная ячейка имеет значение May в качестве значения, я хочу, чтобы каждая сводная таблица в полевом месяце фильтровалась за январь, февраль, март, апрель и май

Это код, который у меня есть, но проблема в том, что показывает проблемы со свойством, видимым из pivotitem

Затем я назначаю различные случаи в коде

Sub skicer()

Dim PT As PivotTable
Dim ws As Worksheet
Dim Field As PivotField

Set ws = Worksheets("PyG Tecnico")

        For Each PT In ws.PivotTables
        'MsgBox PT.Name
        Set Field = PT.PivotFields("Month")
        Field.ClearAllFilters
        With Field
            .PivotItems("Jan").visible = True
            .PivotItems("Feb").visible = False
            .PivotItems("Mar").visible = False
            .PivotItems("April").visible = False
            .PivotItems("May").visible = False
            .PivotItems("Jun").visible = False
            .PivotItems("Jul").visible = False
            .PivotItems("August").visible = False
            .PivotItems("Sept").visible = False
            .PivotItems("Oct").visible = False
            .PivotItems("Nov").visible = False
            .PivotItems("Dic").visible = False
        End With
    Next PT

End Sub

Спасибо за вашу помощь

1 Ответ

0 голосов
/ 30 января 2020

Один подход:

Sub skicer()

    Dim PT As PivotTable
    Dim Field As PivotField, mSel, bShow As Boolean, m

    mSel = Selection.Cells(1).Value 'selected month

    For Each PT In Worksheets("PyG Tecnico").PivotTables

        Set Field = PT.PivotFields("Month")
        Field.ClearAllFilters
        bShow = True

        For Each m In Array("Jan", "Feb", "Mar", "April", "May", "Jun", "Jul", _
                            "August", "Sept", "Oct", "Nov", "Dic")

            Field.PivotItems(m).Visible = bShow
            If m = mSel Then bShow = False 'later months do not show...

        Next m

    Next PT

End Sub
...