【问题标题】:Unable To set The Visibility property of the pivotItem Class无法设置 pivotItem 类的 Visibility 属性
【发布时间】:2021-07-16 07:00:05
【问题描述】:

我有一个 Excel 文件,在按名称过滤时创建了 Pivot 和两个过滤器(主要供应商名称和日期)

我想过滤每个主要供应商名称,一次只应选择过滤器中的一个值,其他应取消选择 我试过这个代码。

Dim ws As Worksheet
    Set ws = Worksheets("3rd Pivot")

    Dim pt As PivotTable
    Set pt = ws.PivotTables("secondpivot_table")
    
    Dim pF As PivotField

    Set pF = pt.PivotFields("Principal Vendor Name")

    pF.EnableMultiplePageItems = True
    pF.CurrentPage = "(All)"
    
    For i = 1 To pF.PivotItems.Count

    pt.PivotCache.MissingItemsLimit = xlMissingItemsNone
     
    pt.PivotCache.Refresh
    k = i
    For j = 1 To pF.PivotItems.Count
    pt.PivotCache.MissingItemsLimit = xlMissingItemsNone
    pt.PivotCache.Refresh
  
    If i = j Then
    pF.PivotItems(k).Visible = True
    Else
    pF.PivotItems(j).Visible = False
    End If
    Next j

但它在这一行显示错误 pF.PivotItems(j).Visible = False "无法设置 pivotItem 类的 Visiility 属性"

【问题讨论】:

  • 当它失败时,还有多少项未隐藏?
  • 只选择第一个,然后显示错误,然后我输入“On Error Resume Next”,然后它从过滤器中选择两个值(当前和上一个)
  • 如果项目是最后一个可见项目,则无法隐藏它...我不清楚您的代码在做什么,或者为什么在循环中调用 Refresh?
  • 那么我该如何更改代码?你能帮我吗
  • 隐藏项目的依据是什么?

标签: excel vba pivot


【解决方案1】:

类似这样的:

Sub Tester()

    Dim ws As Worksheet, pt As PivotTable, pF As PivotField
    Dim i As Long, n As Long
    
    Set ws = Worksheets("3rd Pivot")
    Set pt = ws.PivotTables("secondpivot_table")
    Set pF = pt.PivotFields("Principal Vendor Name")

    pF.EnableMultiplePageItems = True
    pF.CurrentPage = "(All)"
    
    For i = 1 To pF.PivotItems.Count
        
        pF.PivotItems(i).Visible = True 'set the visible one first
        'then hide the rest
        For n = 1 To pF.PivotItems.Count
            If n <> i Then pF.PivotItems(n).Visible = False
        Next n
    
    Next i

End Sub

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-07-13
    • 2017-05-06
    • 2016-11-29
    • 2010-09-30
    • 2021-02-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多