【发布时间】:2018-06-07 15:08:28
【问题描述】:
当第一个数据透视表的筛选字段发生更改时,我正在运行一个宏来更新工作簿中所有数据透视表的筛选字段(“设施”)(请参见下面的代码)。宏按预期运行,直到出现 .PivotTables("PivotTable5").PivotFields("Facility").CurrentPage = facility 的行,这会产生运行时错误 5。
Private Sub Worksheet_Change(ByVal Target As Range)
Dim facility As String
'If the PivotTable1 filter value is changed...
If Not Intersect(Target, Me.PivotTables("PivotTable1").PivotFields("Facility").DataRange) Is Nothing Then
facility = Me.PivotTables("PivotTable1").PivotFields("Facility").CurrentPage
'Change all the other PivotTable filters to the same as PivotTable1
With Me
.PivotTables("PivotTable2").PivotFields("Facility").CurrentPage = facility
.PivotTables("PivotTable3").PivotFields("Facility").CurrentPage = facility
.PivotTables("PivotTable4").PivotFields("Facility").CurrentPage = facility
.PivotTables("PivotTable5").PivotFields("Facility").CurrentPage = facility
.PivotTables("PivotTable6").PivotFields("Facility").CurrentPage = facility
.PivotTables("PivotTable7").PivotFields("Facility").CurrentPage = facility
End With
With ThisWorkbook
.Worksheets("4E - Bili Screen (PivotTable)").PivotTables("PivotTable1").PivotFields("Facility").CurrentPage = facility
.Worksheets("4E - DVT Proph (PivotTable)").PivotTables("PivotTable1").PivotFields("Facility").CurrentPage = facility
.Worksheets("4F - High-Risk Del (PivotTable)").PivotTables("PivotTable1").PivotFields("Facility").CurrentPage = facility
End With
End If
End Sub
【问题讨论】:
-
我认为这意味着 Me.PivotTables("PivotTable5") 不存在,或者如果存在,它没有一个 PivotField valled "Facility"
-
@Bill Hileman Me.PivotTables("PivotTable5") 确实存在,并且它确实具有 PivotField 值“Facility”。我发布了针对此问题的解决方案,需要在为每个数据透视表设置“.CurrentPage”值之前执行“.ClearAllFilters”操作。
标签: vba excel pivot-table