Sab*_*lad 6 excel vba pivot-table excel-vba
我想制作PivotItem.Visible = False但我一直收到错误:
无法设置PivotItem类的Visible属性
我尝试了在互联网上找到的所有解决方案,但似乎都没有
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
Run Code Online (Sandbox Code Playgroud)
我尝试刷新表格和这一行,但仍然无法正常工作:
pt.PivotCache.MissingItemsLimit = xlMissingItemsNone
这是我的数据透视表的图片:
我做错了什么,如何解决这个问题?
如果您尝试隐藏任何轴(行,列,过滤器)上的所有项目,您将收到此错误.您可以通过比较陷阱在你的代码此错误HiddenItems.Count您的财产PivotField对象到PivotItems.Count同一个对象的属性,并确保你是不是想从视图中删除收集的最后一个项目:
因此,在您的case语句中,您可以使用以下内容替换update:
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
Run Code Online (Sandbox Code Playgroud)
请注意,在操作数据透视表时,Excel不允许您从轴中删除最后一项 - "确定"按钮将被禁用: