Динамический макрос VBA, чтобы скрыть все значения сводной таблицы - PullRequest
0 голосов
/ 09 ноября 2019

Ищем динамичный и быстрый способ скрыть все значения сводной таблицы. На данный момент у меня есть код ниже, но он работает только до тех пор, пока нет новых значений (Пример: если учетная запись «333» была добавлена ​​к данным, сценарий сломался бы). Есть предложения?

Sub Hide_Accounts()
   With ActiveSheet.PivotTables("PivotTable2").PivotFields("Account")
       .PivotItems("000").Visible = False
       .PivotItems("111").Visible = False
       .PivotItems("222").Visible = False
       .PivotItems("(blank)").Visible = False
   End With
End Sub

1 Ответ

0 голосов
/ 09 ноября 2019

AFAIK, вы не можете скрыть все элементы в поле (это вызовет ошибку). Альтернативой является скрытие всего поля.

Попробуйте этот код и прочитайте комментарии, чтобы приспособить его к своим потребностям:

Sub Hide_Accounts()

    Dim evalPivotTable As PivotTable
    Dim evalPivotField As pivotField

    Dim targetSheetName As String
    Dim targetPivotTableName As String
    Dim targetPivotFieldName As String

    ' Define the names of sheet and pivot table
    targetSheetName = "Sheet1"
    targetPivotTableName = "PivotTable2"
    targetPivotFieldName = "Account"

    Set evalPivotTable = ThisWorkbook.Worksheets(targetSheetName).PivotTables(targetPivotTableName)

    ' Loop through all pivot table fields
    For Each evalPivotField In evalPivotTable.PivotFields

        If evalPivotField.Name = targetPivotFieldName And evalPivotField.Orientation <> xlHidden Then
            ' Hide the field
            evalPivotField.Orientation = xlHidden

            ' You can exit the loop because you have hidden the entire field
            Exit For

        End If

    Next evalPivotField

End Sub

Не забудьте пометить ответ, если он помогал вам помогать другим.

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