2016-07-07 32 views
0

同じシート内のセル値(E1)に基づいてピボットテーブルフィルタを更新するために、このコードを使用しています。私がしたいと思うのは、シート名のセルに基づいてフィルタを更新することです。現在のフィールドのフィールドを要約のセルと同じに設定した場合は、f2を押して入力する必要があります。それ以外の場合は機能しません。私はちょっと微調整して、私のコードがうまくいくと確信しています。VBAピボットテーブル1セル参照別のシート

ヒント?

Private Sub Worksheet_Change(ByVal Target As Range) 
Set Target = Range("E1") 
If Target Is Nothing Then Exit Sub 
On Error Resume Next 
Application.EnableEvents = False 
Sheets("Tech Pivot Table").PivotTables("PivotTable2").PivotCache.Refresh 
With Me.PivotTables("PivotTable2") 
    .PivotCache.Refresh 
    .PivotFields("Name").CurrentPage = Target.Value 
End With 
Application.EnableEvents = True 





    End Sub 
+0

、大切に見て、コードをデバッグするのが非常に難しくなります – RGA

答えて

0

ターゲット= "E1"かどうかを確認するときに、ターゲット変数の値を前に変更することが問題だと思います。下記のコードを試して、動作しているかどうか教えてください。 (あなたが時折失敗しますが、それに応じて処理することがわかっている。** _非常に_ **特定の目的のために限り)のベストプラクティスではありません、それはそうでない可能性エラーを隠すようにエラーは、Next`を再開 `使用FYI

Private Sub Worksheet_Change(ByVal Target As Range) 
    If Target = Range("E1") Then 
     If Target Is Nothing Then Exit Sub 
     On Error Resume Next 
     Application.EnableEvents = False 
     Sheets("Tech Pivot Table").PivotTables("PivotTable2").PivotCache.Refresh 
     With Me.PivotTables("PivotTable2") 
      .PivotCache.Refresh 
      .PivotFields("Name").CurrentPage = Target.Value 
     End With 
     Application.EnableEvents = True 
    End If 
End Sub 
+0

ちょっとフィリップ、このコードは私の以前のものと同じように動作します。問題は、セルE1を別のシートにリンクしようとしていることです。理想的な状況は要約で名前を更新することです、そしてそれは技術ピボットテーブルシート – Matty

+0

のピボットテーブルフィルタを自動的に更新しますが、私はE1 =要約!E1にピボットを更新させる唯一の方法はF2 Enterを押します。だから私はそれを避けたいと思います。 – Matty

関連する問題