2016-06-28 5 views
2

テーブル/ピボットテーブルの一部のデータをリフレッシュした後にマクロを実行する必要があります。私のテーブルはデータベースからデータを読み込んでいるので、リフレッシュ後にマクロを実行したい。どのように私はVBAを使用してこれを行うでしょう。私は以下を試した。データを更新した後にマクロを実行する

Private Sub Worksheet_PivotTableUpdate(ByVal target As PivotTable) 
    Application.Run "overrideManagers" 'Is this right? 
End Sub 
Sub overrideManagers() 'Macro to be run upon refresh of data 
    MsgBox "Hello" 
End Sub 

予期したことはありません。私はちょうどリフレッシュを取得しますが、MsgBoxはありません。私がMsgBoxをこれに移しても。

Private Sub Worksheet_PivotTableUpdate(ByVal target As PivotTable) 
    MsgBox "Hello" 
End Sub 

同じ結果が得られます。これは私の元のアップデートの捕捉方法が間違っていると思うようになります。何か案は?

+0

ピボットテーブルを持つシートに 'Worksheet_PivotTableUpdate'イベントのコードがありますか?それは確かに私のために働く(2番目のコードスニペット)。 – Ralph

+0

私は@Ralphに同意します。おそらく、ワークシートのトリガー・イベントは、ピボット・テーブルを持つものではなく元のデータを使用しています。 Ralph私はこれを答えにすることをお勧めします。 – nbayly

答えて

2

これは少し時間がかかります。私は明確に説明しようとします。 -

以下

私はそのデータのピボットテーブルを作成し、簡単なテーブルとデータ(シート1)

  • (シート2別のシートにピボットテーブル)を持つ新しいExcelワークブックを作成

    1. に従った手順であります

    enter image description here 3. Sheet2の

    Private Sub Worksheet_PivotTableUpdate(ByVal Target As PivotTable) 
        MsgBox "update" 
    End Sub 
    
    をマクロエディタで次のコードを追加しました

    4.選択されたシート2、ピボットテーブルを右クリックし、最新の情報に更新します。メッセージボックスが表示されます enter image description here

    希望します。

  • +0

    マイピボットテーブルが別のテーブルからデータを読み取っていません。それはデータベースからデータを読み込んでいます。そのリフレッシュのための別の方法がありますか? –

    +0

    私はAccessデータベースに接続しようとしましたが、上記の方法はうまくいきました。ピボットテーブルを更新する限り、イベントが発生します。 – Barney

    +0

    ちょうど計算されたフィールドで 'Worksheet_Change()'を使って解決しましたが、答えに感謝します。 –

    関連する問題