创建一个程序来更改所有的页面字段。此循环遍历工作簿中的所有工作表,并且如果工作表具有数据透视表,则会更改页面字段以匹配传递给子数据透视表上的页面字段。
Sub ChangePage(pt As PivotTable)
Dim strPageValue As String
Dim wks As Worksheet
Dim ptUpdate As PivotTable
Application.ScreenUpdating = False
Application.EnableEvents = False
strPageValue = pt.PivotFields("Area").CurrentPage
For Each wks In ThisWorkbook.Worksheets
On Error Resume Next
Set ptUpdate = wks.PivotTables(1)
If Err.Number = 0 Then
On Error GoTo 0
wks.PivotTables(1).PivotFields("Area").ClearAllFilters
wks.PivotTables(1).PivotFields("Area").CurrentPage = strPageValue
End If
Err.Clear
Next wks
Application.ScreenUpdating = True
Application.EnableEvents = True
End Sub
然后一个电话到工作表中的代码本身这个过程,并通过您更改数据透视表:
Private Sub Worksheet_PivotTableUpdate(ByVal Target As PivotTable)
Call ChangePage(Target)
End Sub
变化,从“区域”枢轴字段的名称到页面场你需要,例如“US_Region”。
如果人们经常以其他方式更改数据透视表的结构,这可能并不合适,因为每次数据透视表更改(包括刷新时)都会触发。如果用户删除指定的页面字段,它也会出错。
如果透视表是静态的,但这可能会发生。