2017-09-06 8 views
0

効果的にピボットテーブルを使用して一連のシートをループするVBAコードを作成しようとしています。私は以下のコードでデモしようとしたので、セル値に応じてフィルタを変更/変更します)。これは実行には至りません(私は完全な初心者のコードを更新しようとしています)ので、私が望む結果のために定義された変数をどのように使用するかについてのポインタを探しています。 (多くはより多くの、これは私が遭遇しただけで最初の問題であり、ループに行く私の現在の問題はピボットテーブルを実行してフィルタ/ラベルを変更するためのVBAコード

Option Explicit 
Dim MySheet As Worksheet 
Dim MyPivot As PivotTable 
Dim NewCat As String 

Sub RefreshPivots() 

For Each MySheet In ActiveWorkbook.Worksheets 
    For Each MyPivot In MySheet.PivotTables 
     NewCat = Worksheets("WorkingSheet").Range("B44").Value 
     MyPivot.RefreshTable 

     With ActiveSheet 
     .MyPivot.AddDataField 
     .MyPivot.PivotFields ("GuidelinePercent"), "Count of GuidelinePercent", xlCount 
     End With 

    Next MyPivot 
Next MySheet 

など、私はフィールドの変更を開始するために、ピボットテーブルを呼び出すように見えることはできませんということです

)。

私は取得しています:Run-time error '438' Object doesn't support this property or methodライン

With ActiveSheet.MyPivot.AddDataField

上のすべてのヘルプは素晴らしいことです!

EDIT;

With ActiveSheet 
.PivotTables(MyPivot).AddDataField 
.PivotTables(MyPivot).PivotFields ("GuidelinePercent"), "Count of GuidelinePercent", xlCount 
End With 

をしようと、私はライン.MyPivot.AddDataFieldRun-time error'1004': Unable to get the Pivot Tables property of the Worksheet class得ます。

+0

をあなたのコードが追加される 'pivotfield'を指定しませんでした。 – kulapo

+0

私はそれが問題になる前にエラーが発生していると思います...私はフィールドを追加しようとしています。 – alex1stef2

+0

EDITの場合は、引用符を含めます。 '.PivotTables(" MyPivot ")' – Egalth

答えて

3

あなたはFor Each MySheet In ActiveWorkbook.Worksheetsのループを持っているので、あなたは後でWith ActiveSheetそれはMySheetと同じシートではありません、InfactはあなたがActiveSheetを使用する必要はありません使用しているとき、あなたは直接あなたがMyPivotに名前を付けるPivotTableオブジェクトを使用することができます。

With MyPivot 
    .AddDataField .PivotFields("GuidelinePercent"), "Count of GuidelinePercent", xlCount 
End With 

編集1

は、以下のコード試してみてください

Dim PvtFld As PivotField 

With MyPivot 
    On Error Resume Next 
    Set PvtFld = .PivotFields("GuidelinePercent") 
    On Error GoTo 0 
    If PvtFld Is Nothing Then 
     MsgBox "Error in setting the PivotField" 
    Else 
     .AddDataField PvtFld, "Count of " & PvtFld.Name, xlCount 
    End If 
End With 
+0

私はこれに非常によく似たものを試していますが、このバージョンは明らかに最も簡潔ですが、 PivotTableクラスのプロパティです。 – alex1stef2

+0

Kulapoは答えを削除したばかりですが、エラーの直前でMyPivotにカーソルを合わせると「PivotTable2」に等しくなります。手動でこのピボットテーブルに移動してクリックすると、ピボットテーブルフィールドリストにはオプションとしてGuidelinePercentが表示されます。 – alex1stef2

+0

@ alex1stef2私のコードにデバッグオプションを追加させてください。** Edit 1 ** –

関連する問題