我正在尝试保存数据透视表行字段,数据字段,页面字段等,以及不同数据透视表过滤器的设置;为了保存数据透视表“配置”并在需要时重新应用 . 所以我主要保存了数组(rowfields,columnfields等)中的所有东西,但是当我尝试运行PivotField的PivotItems时,VBA返回所有PivotItems.Visible = False(Add Watch) . 直接通过数据透视表过滤器检查表明并非所有都是错误的 . 这对我来说似乎很奇怪,我不知道我的错误在哪里 .

我需要这个,因为知道哪些项目可见= True或False将允许我将True添加到数组并在需要时重新应用 . 现在,我只是在单元格中粘贴pi.Name来检查VBA是否确实识别出哪个PivotItems.Visible为“True” .

这是我的代码的一部分:

Sub pivot_filters()

Dim pf As pivotfield, pt As PivotTable, pi As PivotItem
Dim f As Integer, i As Integer, k As Integer

Set pt = Worksheets("Test Pivot Sheet").PivotTables("TestPivot")
f = Worksheets("Test Pivot Sheet").PivotTables("TestPivot").PivotFields.Count
k = Worksheets("Test Pivot Sheet").PivotTables("TestPivot").PivotFields("Activity").PivotItems.Count

With Worksheets("Test Pivot Sheet").PivotTables("TestPivot").PivotFields("Activity")
    For Each pi In .PivotItems
        If pi.Visible = True Then
        Worksheets("Sheet5").Range("G2").Value = pi.Name
        End If
    Next pi
End With

End Sub