设置PivotItem.Visible = false时无法设置PivotItem类的Visible属性

我想使PivotItem.Visible = False但我不断收到错误:

无法设置PivotItem类的Visible属性

我尝试了所有在互联网上find的解决scheme,但似乎没有任何工作

 Sub FloorCompareSetter() Dim pt As PivotTable Dim pf As PivotField Dim pi As PivotItem Dim PivotSheet As Worksheet Set PivotSheet = ThisWorkbook.Worksheets("PIVOT") PivotSheet.PivotTables("PivotTable5").RefreshTable Set pt = PivotSheet.PivotTables("PivotTable5") pt.PivotCache.MissingItemsLimit = xlMissingItemsNone Set pf = pt.PivotFields("Period") For Each pi In _ pt.PivotFields("Period").PivotItems Select Case pi.Name Case Is = "1601A" pi.Visible = True Case Else pi.Visible = False 'error End Select Next pi End Sub 

我尝试刷新表和这一行,但仍然无法正常工作:

pt.PivotCache.MissingItemsLimit = xlMissingItemsNone

这是我的数据透视表的图片:

在这里输入图像描述

我在做什么错,我该如何解决这个问题?

如果您试图隐藏任何轴上的所有项目(行,列,filter),将会出现此错误。 您可以通过比较您的PivotField对象的HiddenItems.Count属性与PivotField对象的PivotItems.Count属性,并确保您不试图从视图中删除集合的最后一个项目,可以在代码中捕获此错误:

所以在你的case语句中,你可以使用类似下面的方式replaceupdate:

 Select Case pi.Name Case Is = "1601A" pi.Visible = True Case Else If pf.HiddenItems.Count < (pf.PivotItems.Count - 1) Then pi.Visible = False Else MsgBox "Cannot hide all the items on this axis" Exit For '<~~ break the loop to stop the MsgBox popping up End If End Select 

请注意,在操纵数据透视表时,Excel不允许从轴上移除最后一项 – “确定”button将被禁用:

在这里输入图像描述

我补充说

在错误恢复下一步

之前

pi.Visible = False'错误

它现在的作品!