Возможно, коллекция PivotFields
исключает элементы, которые вы все еще можете использовать. Например. это будет не ошибка в ближайшем окне:
? ActiveSheet.PivotTables("PivotTable1").PivotFields("Sum of c")
? ActiveSheet.PivotTables("PivotTable1").PivotFields("Values")
(обратите внимание, что мой стержень имеет столбец с именем c
)
Но они будут выводиться на ваш код:
For Each fld In pvt.PivotFields
Debug.Print fld.Name
Next fld
Непонятно, почему они не отображаются при перечислении коллекции.
Однако, вы можете обратиться непосредственно к подразделам коллекций PivotFields
, таких как RowFields
, ColumnFields
, PageFields
и DataFields
. Таким образом, вы можете достичь своей цели:
Option Explicit
Sub Test()
HideFields ActiveSheet.PivotTables(1)
End Sub
Sub HideFields(pvt As PivotTable)
Dim fld As Object
'rows
For Each fld In pvt.RowFields
Debug.Print fld.Name
fld.Orientation = xlHidden
Next fld
'columns
For Each fld In pvt.ColumnFields
Debug.Print fld.Name
fld.Orientation = xlHidden
Next fld
'pages
For Each fld In pvt.PageFields
Debug.Print fld.Name
fld.Orientation = xlHidden
Next fld
'data
For Each fld In pvt.DataFields
Debug.Print fld.Name
fld.Orientation = xlHidden
Next fld
End Sub
Работает как очарование. Спасибо! – alpenmilch411