下一步不使用VBA Excel

下一步不使用VBA Excel,vba,excel,Vba,Excel,我似乎被一个基本问题所困扰。我正在尝试用VBA将所有过滤器编码在一起。我对这门语言还不熟悉,我想我完全是从Lynda.com上的一个文件中抄来的,但是我被卡住了。任何帮助都会很好。当我试图运行一个宏时,我得到了一个下一个没有出错的宏 Dim pt As PivotTable Application.ScreenUpdating = False For Each pt In Active.Sheet.PivotTables With pt.PivotFields("Pare

我似乎被一个基本问题所困扰。我正在尝试用VBA将所有过滤器编码在一起。我对这门语言还不熟悉,我想我完全是从Lynda.com上的一个文件中抄来的,但是我被卡住了。任何帮助都会很好。当我试图运行一个宏时,我得到了一个下一个没有出错的宏

  Dim pt As PivotTable
   Application.ScreenUpdating = False
   For Each pt In Active.Sheet.PivotTables
    With pt.PivotFields("Parent Company")
        .Orientation = xlPageField
        .Position = 1
    End With
    With pt.PivotFields("Milestone")
        .Orientation = xlPageField
        .Position = 2
    End With
    With pt.PivotFields("Lead Status")
        .Orientation = xlPageField
        .Position = 3
    End With
    With pt.PivotFields("Lead Source")
        .Orientation = xlPageField
        .Position = 4
    End With
    With pt.PivotFields("Contact Owner:Full Name")
        .Orientation = xlPageField
        .Position = 5
    With pt.PivotFields("Company: Company")
        .Orientation = xlRowField
        .Position = 1
    End With
    Next pt
    Application.ScreenUpdating = True
End Sub

<>您应该考虑在重复代码时创建辅助函数。这将减少输入错误、代码混乱,并使代码更易于阅读和调试

使用对象浏览器,我将复制要传递给助手函数的函数或对象的参数和数据类型。通过这种方式,我将能够在调用它时使用Intellisense



你错过了一个结束,后面的位置有多少个.<代码> WS/<代码>,还有多少个“代码>结尾?”/>代码>第一行应该是“代码>子测试())/>代码,或者你想让你的子例程与<代码>结束子< /代码>匹配的任何名称,也可以考虑XLPGEFEAGE,你可以循环一个数组,这样你就不需要所有的语句了。一个用于xlPage字段设置,一个用于行。我在这里粘贴了一个示例:
Active.Sheet.PivotTables
应该是
ActiveSheet.PivotTables
Sub Test()
    Dim pt As PivotTable
    Application.ScreenUpdating = False
    For Each pt In ActiveSheet.PivotTables
        setPivotFields pt, "Parent Company", xlPageField, 1
        setPivotFields pt, "Milestone", xlPageField, 1
        setPivotFields pt, "Lead Status", xlPageField, 2
        setPivotFields pt, "Lead Source", xlPageField, 3
        setPivotFields pt, "Contact Owner:Full Name", xlPageField, 4
        setPivotFields pt, "Contact Owner:Full Name", xlPageField, 5
        setPivotFields pt, "Company: Company", xlPageField, 1
    Next pt
End Sub

Sub setPivotFields(pt As PivotTable, FieldName As String, Orientation As XlPivotFieldOrientation, Position As Variant)
    With pt.PivotFields("Company: Company")
        .Orientation = Orientation
        .Position = Position
    End With
End Sub