由于上面那么着名的错误,我无法使我的代码正常工作。我无法找到解读以前帖子的解决方案,所以希望任何人都可以帮助我。
我在不同的工作表(ws)中有几个数据透视表(pt),以及存储在我创建的数组中的项目列表。 我已经编写了一个用于设置pt中所有项目的宏,除了数组中的那些项目(代码中的listOffnet)。一切正常。
现在,我想做补充操作:设置OFF不在数组中的所有项目。 不幸的是,我在第
行收到错误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
答案 0 :(得分:0)
而不是取消&#34; off&#34;将值放入数组中,尝试在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
区别在于第3行。
如果这不起作用,您可以尝试changing the Sort parameter或any of the proposed solutions in this thread。