2017-10-11 5 views
-1

私は基本的な問題があるはずです。私はVBAと一緒にすべてのフィルタをコーディングしようとしています。私は言語に慣れていないと私はLynda.comのファイルから正確にこれをコピーしたと思うが、私は立ち往生している。どんな助けも素晴らしいだろう。私がマクロを実行しようとすると、私はエラーのために次のエラーを出します。次はVBAエクセル用ではありません

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 
+4

あなたは.Position後= 5 – Absinthe

+1

で終わるを逃しているあなたはどのように多くの 'Withs'とどのように多くの'エンドWiths'を持っているのですか? – SJR

+1

最初の行は、 'Sub test()'または 'End Sub'と一致するサブルーチンの名前でなければなりません。 – SBF

答えて

0

コードを繰り返すときには、ヘルパー関数を作成することを検討する必要があります。これにより、入力エラー、コードの乱雑さが軽減され、コードを読みやすくデバッグしやすくなります。オブジェクトブラウザを使用して

Object Browser Demo

、私はヘルパー関数に渡したい機能やObjectsのパラメータとデータ型をコピーします。このようにして、Intellisenseを呼び出すときにIntellisenseを使用することができます。

Intellisense Demo


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 
関連する問題