当单元格中的值更改时,将更改数据透视表上的filter

我一直在阅读,并达成了要求。 我有一个下拉select器在Excel中,让我改变名称,当名称被改变时,“C3”中的值被改变(c3引用另一张纸上的另一个单元格,如果重要),当“C3”想要在另一个工作表(现在工作表6)上的数据透视表更新其领土id上的filter,以反映新的“C3”值。

这听起来像是一个事件,所以我去挖掘,发现VBA有事件(耶!),但我一直无法让我的事件实际上做任何事情。 当我把它作为一个macros运行时,我在那里的代码有效,但是我真的很喜欢它每次在单元格“C3”改变时自动运行。

这是我到目前为止的尝试:

Sub Worksheet_Change(ByVal Target As Range) If Not Application.Intersect(Target, Sheets("Current Status").Range("C3")) Is Nothing Then Sheets("Sheet6").PivotTables("PivotTable5").PivotFields("territory_id"). _ ClearAllFilters Sheets("Sheet6").PivotTables("PivotTable5").PivotFields("territory_id").CurrentPage _ = Sheets("Current Status").Range("C3").Value End If End Sub 

更新:我发现,如果我把上面的代码放在表单部分(表2),而不是在一个新的模块,我可以让它运行,如果我物理input的代码,然后按Enter键。 现在我想知道是否有办法让它做到这一点,而不必手动input数值,然后按回车。 我只是想能够使用我的下拉菜单来select一个新的名称,当c3中的值由于下拉select器更新数据透视表而发生变化时。

谢谢你一如既往。

问题是C3实际上并没有改变,因为它只是更新的公式参考。 是一个窗体上的“下拉select器”或基于数据validation和单元格?

如果它基于一个单元格,将目标设置为目标单元格,而不是C3 – >,因为C3只是一个公式引用,而您的下拉单元格是实际更改的单元格。

如果它基于表单,但在表单控件的on_change事件中有代码。