我想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
我尝试刷新表格和此行,但仍无法正常工作:
pt.PivotCache.MissingItemsLimit = xlMissingItemsNone
以下是我的数据透视表的图片:
我做错了什么,如何解决这个问题?
答案 0 :(得分:7)
如果您尝试隐藏任何轴(行,列,过滤器)上的所有项,则会出现此错误。通过将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
请注意,在操作数据透视表时,Excel不允许您从轴中删除最后一项 - “确定”按钮将被禁用:
答案 1 :(得分:0)
我添加了
On Error Resume Next
之前
pi.Visible = False'错误
现在有效!