VBA数据透视表运行时错误5:过程调用或参数无效

VBA数据透视表运行时错误5:过程调用或参数无效,vba,excel,pivot-table,Vba,Excel,Pivot Table,当第一个数据透视表的筛选字段发生更改时,我正在运行一个宏来更新工作簿中所有数据透视表的筛选字段功能。请参见下面的代码。宏按预期运行,直到.PivotTablePivotTable5.PivotFieldsFacility.CurrentPage=facility的行出现为止,该行给出运行时错误5 Private Sub Worksheet_Change(ByVal Target As Range) Dim facility As String 'If the PivotTable1 filter

当第一个数据透视表的筛选字段发生更改时,我正在运行一个宏来更新工作簿中所有数据透视表的筛选字段功能。请参见下面的代码。宏按预期运行,直到.PivotTablePivotTable5.PivotFieldsFacility.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

在手动更新PivotTable5上的过滤器时录制了一个宏,该过滤器工作正常。在设置.CurrentPage值之前,我注意到录制的宏插入了.ClearAllFilters,如下所示,这解决了问题

.PivotTables("PivotTable5").PivotFields("Facility").ClearAllFilters
.PivotTables("PivotTable5").PivotFields("Facility").CurrentPage = facility

但是,我需要在数据透视表5之后为每个数据透视表清除.ClearAllFilters,否则错误将出现在下一个.CurrentPage行。我不知道为什么错误只发生在.PivottablePivottable5.PivotFieldsFacility.CurrentPage=facility行上或之后,而不是它上面的等效行。

我认为这意味着Me.PivottablePivottable5不存在,或者如果它存在,它没有数据透视字段值Facility@BillHileman Me.PivotTables数据透视表5确实存在,并且它确实具有数据透视字段值功能。我发布了此问题的解决方案,要求在为每个数据透视表设置.CurrentPage值之前执行.ClearAllFilters操作。