Vba 更改页面上所有透视表中的行和页面字段

Vba 更改页面上所有透视表中的行和页面字段,vba,Vba,我认为这真的很简单,但今天早上我已经盯着同一种代码看了太久了 我希望更改活动工作表上6个不同透视表上的行和过滤器(可以更改)。以前我有6段不同的代码,每个轴心1段,但随着我添加更多选项,我需要使其更加精简 这就是我目前所拥有的 Sub AddMajor1() Application.ScreenUpdating = False Dim ws As Worksheet Dim pvtTable As PivotTable Dim PTField As PivotFields For Each

我认为这真的很简单,但今天早上我已经盯着同一种代码看了太久了

我希望更改活动工作表上6个不同透视表上的行和过滤器(可以更改)。以前我有6段不同的代码,每个轴心1段,但随着我添加更多选项,我需要使其更加精简

这就是我目前所拥有的

Sub AddMajor1()
Application.ScreenUpdating = False

Dim ws As Worksheet
Dim pvtTable As PivotTable
Dim PTField As PivotFields

For Each pvtTable In ActiveSheet.PivotTables

Set PTField = .PivotFields("Division")
PTField.Orientation = xlPageField

Set PTField = .PivotFields("Wholesale / Non-Wholesale")
PTField.Orientation = xlPageField

Set PTField = .PivotFields("Major Class")
PTField.Orientation = xlRowField

Set PTField = .PivotFields("Minor Class")
PTField.Orientation = xlPageField

Set PTField = .PivotFields("Entity")
PTField.Orientation = xlPageField

Set PTField = .PivotFields("YOA")
PTField.Orientation = xlPageField

Set PTField = .PivotFields("Producing_Office")
PTField.Orientation = xlPageField

Set PTField = .PivotFields("Transaction_Handler")
PTField.Orientation = xlPageField


Next pvtTable
Application.ScreenUpdating = True

End Sub
有人能指出我做错了什么吗


谢谢

像这样的事情可能更容易:

Sub AddMajor1()
将ws设置为工作表
将pvtTable设置为数据透视表
昏暗的,黑暗的
Application.ScreenUpdating=False
arr=数组(“分部”、“批发/非批发”、“主要类”_
“小班”、“实体”、“YOA”、“制作办公室”_
“交易处理人”)
对于ActiveSheet.PivotTables中的每个pvtTable
对于arr中的每个f
pvtTable.PivotFields(f).Orientation=xlPageField
下一个f
下一个pvtTable
Application.ScreenUpdating=True
端接头

您遇到了什么问题?仅供参考,您可以只写:
.PivotFields(“Division”).Orientation=xlPageField
而不带
PTField
变量旁注,不确定是否有用:当我通过VBA对数据透视表进行多个更改时,我更喜欢在开始之前打开手动更新(即
pvtTable.ManualUpdate=True
),然后更新表并在之后将其关闭(
pvtTable.update:pvtTable.ManualUpdate=False
),这样它就不会在每次更改后重新计算整个表,而是在最后进行一次大的更新。这有点像使用
Application.Calculation=xlCalculationManual
Application.screenUpdate=False