我已经阅读了一段时间,并达到了询问 SO 点。我在 excel 中有一个下拉选择器,可让我更改名称,当名称更改时,“C3”中的值会更改(如果重要,c3 引用另一张纸上的另一个单元格)并且当“C3”中的值更改时我想要在另一个工作表(现在是工作表 6)上的数据透视表来更新其在区域 id 上的过滤器以反映“C3”的新值。
这对我来说听起来像是一个事件,所以我四处寻找,发现 VBA 有事件(耶!),但我无法让我的事件真正做任何事情。当我将它作为宏运行时,我在那里的代码可以工作,但我真的希望它在每次单元格“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)而不是新模块中,如果我实际输入代码然后按回车键,我可以让它运行。现在我想知道是否有办法让它做到这一点,而无需手动输入值并按回车键。我只想能够使用我的下拉菜单来选择一个新名称,并且当 c3 中的值由于下拉选择器而更改时更新数据透视表。
一如既往地谢谢你。