我一直在阅读一些内容并达到了询问SO点。我在Excel中有一个下拉选择器,可以让我更改名称,当名称更改时,“C3”中的值会更改(如果有关系,c3会引用另一个表单上的另一个单元格),并且“C3”中的值更改为I希望在另一张工作表(现在工作表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中的值发生更改时。
谢谢你一如既往。
你把代码放在哪里?在模块或表单中? – Sam 2012-04-26 20:02:34
我把它放在一个模块中,然后我把它放在一个表格中,然后我发现它需要将下拉选择器(感谢@Scott)而不是具有变化值的单元格作为目标。 – asjohnson 2012-04-26 20:08:54