Worksheet_change 事件和切片器过滤器连接冲突

Worksheet_change event and slicer filter connection conflict

我有一个问题困扰了我几天,所以我决定与你分享,也许你已经偶然发现了同样的问题。

===这是上下文:===

我正在处理这个 excel 文件,其中包含以下三个选项卡: - 一个名为 "Data",我在其中以常规 table 存储文件所需的数据; - 第二个,称为 "Chart_1",其中可以找到 pivot_table_1 和 chart_1。这些对象的来源在 "Data" 选项卡中。 - 第三个选项卡称为 "Chart_2",包含 pivot_table_2 和 chart_2。这些对象也来自 "Data" 选项卡。 我在选项卡 "Chart_1" 中有五个切片器,在选项卡 "Chart_2" 中有另外五个。所有切片器都连接到 "Chart*" 选项卡中的两个 pivot_tables。 我使用 VBA 作为选项卡中的图表格式,作为 Worksheet_Change 事件。

=== 这就是问题所在:===

当我 select 切片器中的某些内容(以 "Chart*" 选项卡为准)时,它总是会激活 "Chart_2"。 如果我单击选项卡 "Chart_1" 中的其中一个切片器,当宏完成 运行ning 时,选项卡 "Chart_2" 将被激活。 当我单击选项卡 "Chart_2" 中的一个切片器时,一切正常,因为激活的选项卡没有改变。 无论我使用哪个切片器(无论它嵌入在哪个选项卡中),VBA 始终是 运行 首先是 "Chart_1" 的 Worksheet_Change,然后是 "Chart_2" 的 Worksheet_Change.我认为这是由于过滤器连接而发生的:当我单击一个切片器时,它将触发所有受影响的 Worksheet_Change 事件。

=== 这是我已经尝试过的:===

所以,这是我现在的 logic/programming 问题。您对我如何解决它有什么建议吗?我只想停留在单击切片器时所在的选项卡中...

如评论中所述:

图表 1-Sheet:

Public GoodNameForAVariable As String

Private Sub Worksheet_Change(ByVal Target As Range)

GoodNameForAVariable = ActiveSheet.Name

'Your code happens here

End Sub

图表 2-Sheet:

Private Sub Worksheet_Change(ByVal Target As Range)

'Your code happens here

ThisWorkbook.Sheets(GoodNameForAVariable).Activate

End Sub