創建一個程序來更改所有的頁面字段。此循環遍歷工作簿中的所有工作表,並且如果工作表具有數據透視表,則會更改頁面字段以匹配傳遞給子數據透視表上的頁面字段。
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」。
如果人們經常以其他方式更改數據透視表的結構,這可能並不合適,因爲每次數據透視表更改(包括刷新時)都會觸發。如果用戶刪除指定的頁面字段,它也會出錯。
如果透視表是靜態的,但這可能會發生。