2012-04-26 33 views
2

我一直在阅读一些内容并达到了询问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中的值发生更改时。

谢谢你一如既往。

+0

你把代码放在哪里?在模块或表单中? – Sam 2012-04-26 20:02:34

+0

我把它放在一个模块中,然后我把它放在一个表格中,然后我发现它需要将下拉选择器(感谢@Scott)而不是具有变化值的单元格作为目标。 – asjohnson 2012-04-26 20:08:54

回答

3

问题是C3实际上并没有改变,因为它只是更新的公式引用。是表单上的“下拉选择器”还是基于数据验证和单元格中的“下拉选择器”?

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

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

+0

基于数据验证和单元格中的下拉选择器。我可以将我的活动指向下拉选择器吗?我想我还没有进入,所以它可能无法正常工作。现在尝试。 – asjohnson 2012-04-26 20:02:20

+0

它的工作原理!感谢您指点我正确的方向。我只是不得不改变参考下拉选择器,一切都很好。 – asjohnson 2012-04-26 20:04:41

+0

甜美!很高兴它的工作 – 2012-04-26 20:10:21

相关问题