Excel-VBA:仅更改一个数据透视表的过滤器

时间:2017-10-24 11:08:40

标签: excel-vba filter pivot-table vba excel

我正在为此寻找解决方案:

我有一个wookbook,其中有多个工作表,其中有多个数据透视表。我只想更改一个特定数据透视表的过滤器。

如果我使用ActiveSheet-Method,这似乎有效,但是当我启动此代码时,此工作表未处于活动状态,因此我尝试通过对其进行更改来更改此过滤器:

Sub Jahresübergang2()

Dim Jahresuebergang2 As Worksheet
    Set Jahresuebergang2 = Worksheets(11)

Jahresuebergang2.PivotTables("Name of Pivot Table").PivotFields("[Incident resolved].[Period].[Year]").VisibleItemsList = Array("[Incident resolved].[Period].[Year].&[2017]")

End Sub

我得到运行时错误1004:运行时错误' 1004':方法'数据透视表'对象' _worksheet'失败

就像我使用错误的对象语法来更改只有一个表的过滤器一样。

这是makro录音机正在做的事情:

Sub Makro1()
'
' Makro1 Makro
'

'
    ActiveSheet.PivotTables("Name of Pivot Table").PivotFields( _
        "[Incident resolved].[Year].[Year]").ClearAllFilters
    ActiveSheet.PivotTables("Name of Pivot Table").PivotFields( _
        "[Incident resolved].[Year].[Year]").CurrentPageName = _
        "[Incident resolved].[Year].&[2017]"
End Sub

您看到:我不想使用活动表格方法,因为当我想要执行此makro时,此工作表无效。

非常感谢你的帮助!

PS:我使用Excel 365

2 个答案:

答案 0 :(得分:0)

您的代码已[事件已解决]。 [期间] 。[年]而宏录制器已[事件已解决]。 [年] 。[年] < / p>

将您的代码更改为[事件已解决]。 [年] 。[年]并重试。

答案 1 :(得分:0)

这是我的解决方案:

TabelleX.Activate(X表示张数)

激活工作表。唯一的问题可能是在makro过程中该表将在监视器上处于活动状态。我解决了这个问题:

Application.ScreenUpdating = False (码) Application.ScreenUpdating = True

因此激活不会在屏幕上更新。