【问题标题】:error 1004 excel 2010: unable to set the visible property of the pivotitem class错误1004 excel 2010:无法设置数据透视表类的可见属性
【发布时间】:2014-07-10 23:49:22
【问题描述】:

由于上面如此著名的错误,我无法使我的代码正常工作。看了以前的帖子找不到解决办法,希望大家能帮帮我。

我在不同的工作表 (ws) 中有几个数据透视表 (pt),并且在我创建的数组中存储了一个项目列表。 我编写了一个宏,用于将 pt 中的所有项目设置为 ON,但数组中的项目除外(代码中的 listOffnet)。一切正常。

现在,我想做一个补充动作:关闭所有不在数组中的项目。 不幸的是,我在行收到错误

pvtItm.Visible = False

非常感谢! 这是我的代码:

Sub ptFilterOffnet()

Dim PvtTbl As PivotTable
Dim pvtItm As PivotItem
Dim pvtFld As String
Dim listItem As Variant
Dim listOffnet As Variant
Dim lastRow As Integer
Dim myws As String

pvtFld = "CATEGORY_DESCRIPTION"
myws = "GESTIONE_ADMIN"

resetSlicers 'function resetting all slicers connected to pivot tables (all items ON)

' Populate the array with some data in a specific range
lastRow = Sheets(myws).Cells(Rows.Count, 10).End(xlUp).Row
listOffnet = populateArray(myws, 3, lastRow, 10, 10)

' All OFF but items within listOffnet
For Each PvtTbl In Sheets("P1").PivotTables
    For Each pvtItm In PvtTbl.PivotFields(pvtFld).PivotItems
        For Each listItem In listOffnet
            If pvtItm <> listItem Then
                pvtItm.Visible = False
            End If
        Next      
    Next
Next
End Sub

【问题讨论】:

    标签: excel pivot visible


    【解决方案1】:

    不要将“关闭”值的范围放入数组中,而是尝试在 For Each 循环中引用该范围。例如,这对我有用:

    For Each PvtTbl In Sheets("P1").PivotTables
        For Each pvtItm In PvtTbl.PivotFields(pvtFld).PivotItems
            For Each listItem In Range("OffList").Cells
                If pvtItm <> listItem Then
                    pvtItm.Visible = False
                End If
            Next
        Next
    Next
    

    区别在于第三行。

    如果这不起作用,您可能想尝试changing the Sort parameterany of the proposed solutions in this thread

    【讨论】:

      猜你喜欢
      • 2015-11-22
      • 2015-05-02
      • 2019-12-31
      • 2013-06-30
      • 2016-11-29
      • 2012-05-30
      • 1970-01-01
      • 1970-01-01
      • 2015-12-29
      相关资源
      最近更新 更多