2013-05-16 60 views
0

我很難找到一種方法來捕獲特定數據透視表內特定工作表內的任何更改。數據透視表更改事件

的Pivot是「pivottable6」 工作表是「亞太地區」

我已經把亞太地區工作模塊中的代碼:

Private Sub Worksheet_PivotTableChange(ByVal Target As Excel.PivotTable6) 

With Target 
MsgBox "You performed an operation in the following PivotTable: " & .Name & " on " & Sh.Name 
End With 

End Sub 

但我不斷收到錯誤。任何想法如何解決它?


Private Sub Workbook_SheetPivotTableChangeSync(ByVal Sh As Target, Target As PivotTable) 

If Intersect(Target, ActiveSheet.PivotTables(1)) Is Nothing Then Exit Sub 

MsgBox ("cat") 

End If 

End Sub 

這仍是未來與用戶類型沒有定義錯誤

回答

0

你想刷新轉動時表數據的變化?如果是,請嘗試以下代碼:

請將此代碼放置在具有支點的表單上。

Private Sub Worksheet_Calculate() 

    Sheets("APAC").PivotTables("pivottable6").RefreshTable 

End Sub 


Private Sub Worksheet_Change(ByVal Target As Range) 

    On Error Resume Next 

    Application.EnableEvents = False 


    With Target 
     MsgBox "You performed an operation in the following PivotTable: " & .Address & " on """ & Target.Parent.Name & """Sheet" 
    End With 


    Application.EnableEvents = True 

End Sub 
+0

感謝桑托斯,其實我期待只檢測樞軸的任何變化。然後應用相關格式。此外,我正在尋找建立動態圖表,根據主軸如何刷新 – user1717622

+0

@ user1717622我已經添加了'Worksheet_Change'事件。你可以嘗試,但不是很確定它是否符合你的要求。 – Santosh

+0

不幸的是,該模塊已經包含一個worksheet_change宏,我正在尋找數據透視表事件只是爲了保持它不同 – user1717622

0

你的代碼使用Sh.Name的,但沒有定義噓。改用Me.Name。

Private Sub Worksheet_PivotTableUpdate(ByVal Target As PivotTable) 

    With Target 
     MsgBox "You performed an operation in the following PivotTable: " & .Name & " on " & Me.Name 
    End With 

End Sub 
+0

這仍然是產生錯誤 – user1717622

+1

你確定嗎?這個對我有用。我將用我的代碼更新上述內容。 – steveo40

+0

是的,這是現在功能!我仍然在徘徊如何在精確的工作表上選擇確切的數據透視表?使用interesect? 'Dim pt As PivotTable 'Set pt = ActiveSheet.PivotTables(1) 'If Intersect(Target,pt.TableRange1)Is Nothing Then Exit Sub – user1717622

0

在回答您的其他問題,您需要將IF語句更改爲類似這樣:

Private Sub Workbook_SheetPivotTableChangeSync(ByVal Sh As Target, Target As PivotTable) 

    If Intersect(Target, ActiveSheet.PivotTables(1)) Is Nothing Then 
    Exit Sub 
    Else 
    MsgBox ("cat") 
    End If 

End Sub