Как показать все PivotItem, кроме пустых
Если для PivotTables().PivotFields().EnableMultiplePageItems
установлено значение True
, вы не сможете выбрать все PivotItems, установив для PivotFields.CurrentPage
значение ="(All)"
(хотя макрос-рекордер записывает только это!).
Чтобы выбрать все PivotItems, просто используйте PivotField.ClearManualFilter
или PivotField.ClearAllFilters
(в PivotField, а не случайно в PivotTable!).После этого вы можете скрыть (отменить выбор) пустых.
With WorkSheet.PivotTables(...).PivotFields(...)
.ClearManualFilter ' or ClearAllFilters
If .PivotItems.Count > 1 Then ' at least 1 has to remain visible
.PivotItems("(blank)").Visible = False
End If
End With
Обработка ошибок
По крайней мере один PivotItem должен оставаться видимым.Вы получите ошибку, если есть только пробелов и вы попытаетесь скрыть их.
Если есть также no пробелов, то вы получите ошибку, которую следуетпоймать с On Error Resume Next
, или вы можете сначала перебрать все элементы, чтобы проверить, называется ли один из них «(пустым)».Недостаточно проверить имя последнего PivotItem, например If .PivotItems(.PivotItems.Count).Name = "(blank)"
, поскольку это не обязательно последняя запись.
Ваш пример должен работать с этим:
With ActiveSheet.PivotTables("PivotTable5").PivotFields("Del #")
.ClearManualFilter
If .PivotItems.Count > 1 Then ' at least 1 has to remain visible
.PivotItems("(blank)").Visible = False
End If
End With
Может быть, вам нужно ActiveSheet.PivotTables("PivotTable5").RefreshTable
каждый день дополнительно.
И наоборот: как отобразить только пустые сводные элементы
Если были выбраны EnableMultiplePageItems = True
и один или несколько, но не пустые , тогда CurrentPage = "(blank)"
выдает ошибку.Сначала вы должны включить пустые, либо очистив фильтры, как указано выше, либо добавив видимые пробелы дополнительно, а затем вы можете выбрать страницу только с пустыми:
WorkSheet.PivotTables().PivotFields().PivotItems("(blank)").Visible = True
WorkSheet.PivotTables().PivotFields().CurrentPage = "(blank)"