【问题标题】:Control Filters of Excel Pivot Tables from Cell Values with VBA使用 VBA 从单元格值控制 Excel 数据透视表的过滤器
【发布时间】:2016-09-19 07:34:30
【问题描述】:

我正在尝试根据两个单元格值刷新我的 powerpivot 数据透视表。最终用户将使用单元格 C17 和 C18 中的下拉列表来导出单元格 G17 和 G18 中的值(通过一些 excel 计算)。数据透视表将根据单元格 G17 和 G18 刷新。

我编写了如下代码,但它似乎不起作用,因为在我从 C17 和 C18 的下拉列表中选择一个值后,数据透视表没有刷新。

Sub Worksheet_SelectionChange(ByVal Target As Range)

If Intersect(Target, Range("G17:G19")) Is Nothing Then Exit Sub

Dim pt As PivotTable
Dim FieldHr As PivotField
Dim FieldEndingMin As PivotField
Dim NewHr As String
Dim NewMin As String

Set pt = Worksheets("Calculator").PivotTables("Table1")
Set FieldHr = pt.PivotFields("Hr")
NewHr = Worksheets("Calculator").Range("G17").Value
Set FieldEndingMin = pt.PivotFields("Ending Min")
NewMin = Worksheets("Calculator").Range("G18").Value

With pt
FieldHr.ClearAllFilters
FieldHr.CurrentPage = NewHr
FieldEndingMin.ClearAllFilters
FieldEndingMin.CurrentPage = NewMin
pt.RefreshTable
End With

End Sub

【问题讨论】:

  • 您是否收到错误消息?还是什么都没有更新?

标签: vba excel macros powerpivot


【解决方案1】:

我将代码从 Worksheet_SelectionChange 移动到 Worksheet_Change 事件。

我添加了一个Union 范围,单元格 C17:C18 和单元格 G17:G19(需要 G19 吗?在您的帖子中您提到了 G17:G18)。

Private Sub Worksheet_Change(ByVal Target As Range)

If Intersect(Target, Union(Range("C17:C18"), Range("G17:G19"))) Is Nothing Then Exit Sub

Dim pt                 As PivotTable
Dim FieldHr            As PivotField
Dim FieldEndingMin     As PivotField
Dim NewHr              As String
Dim NewMin             As String

Set pt = Worksheets("Calculator").PivotTables("Table1")
Set FieldHr = pt.PivotFields("Hr")
NewHr = Worksheets("Calculator").Range("G17").Value
Set FieldEndingMin = pt.PivotFields("Ending Min")
NewMin = Worksheets("Calculator").Range("G18").Value

With FieldHr
    .ClearAllFilters
    .CurrentPage = NewHr
End With

With FieldEndingMin
    .ClearAllFilters
    .CurrentPage = NewMin
End With

pt.RefreshTable

End Sub

【讨论】:

    猜你喜欢
    • 2017-07-13
    • 2012-06-19
    • 1970-01-01
    • 1970-01-01
    • 2017-07-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多