Excel VBA:无法在数据透视表中设置pivotitem“(空白)”位置属性

Excel数据透视表是在VBA代docker痛!

我想要一个VBA代码,循环通过每个数据透视表,然后透视字段和每个枢纽项目是“(空白)”将其移到位置1或到最后的位置。

谢谢你的帮助!

For Each pt In ws.PivotTables pt.RefreshTable pt.PivotCache.MissingItemsLimit = xlMissingItemsNone For Each pf In pt.PivotFields For Each pi In pf.PivotItems If pi.Caption = "(blank)" Then pi.position = 1 ' <-- Error 2024, not available? If pi.Visible = True Then pi.Visible = False End if Exit For End If Next pi Next pf Next pt 

在我有限的testing中,这是没有错误的,

 Sub HideAndMoveTheBlanks() Dim pt As Excel.PivotTable Dim pf As Excel.PivotField Dim pi As Excel.PivotItem For Each pt In ws.PivotTables pt.RefreshTable pt.PivotCache.MissingItemsLimit = xlMissingItemsNone For Each pf In pt.PivotFields On Error Resume Next Set pi = pf.PivotItems("(blank)") On Error GoTo 0 If Not pi Is Nothing Then pi.Position = 1 pi.Visible = False Set pi = Nothing Exit For End If Next pf Next pt End Sub