2013-05-16 62 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