用于工作表上多个数据透视表的单元格值

时间:2014-01-03 16:43:31

标签: excel vba excel-vba

我有一个在工作表上运行的仪表板。仪表板由来自不同数据源的多个透视表组成。

我希望能够从下拉菜单中选择管理员名称来构建此报告并使其正常工作。选择经理姓名的单元格为" vp_email_rm_rpt"

我有一个数据透视表工作 - 但我有6个。

我如何更改它以让它循环到下一个不同名称的枢轴表,并且可能有不同的枢轴字段

我很接近 - 但我一直遇到错误。

    Private Sub Worksheet_Change(ByVal Target As Range)

Application.ScreenUpdating = False

'
    Dim rng As Range

    Set rng = Me.Range("rm_email_rm_rpt")
    If Not Application.Intersect(Target, rng) Is Nothing Then

 ' change revenue numbers
        With Sheets("RM_Rpt").PivotTables("RM_Account_List").PivotFields("LVL6_TERRITORY_EMAIL")
            .ClearAllFilters
            If Len(rng.Value) > 0 Then .CurrentPage = rng.Value
        End If

1 个答案:

答案 0 :(得分:0)

您的代码只需要每个数据透视表的其他部分。理论上,你可以循环遍历所有,而不是专门识别每一个,但为了简单起见,请尝试以下方法。您只需调整数据透视表名称和字段名称即可。如果您需要更多,请继续添加它们。

Private Sub Worksheet_Change(ByVal Target As Range)

    Application.ScreenUpdating = False

    Dim rng As Range

    Set rng = Me.Range("rm_email_rm_rpt")
    If Not Application.Intersect(Target, rng) Is Nothing Then

        ' change revenue numbers
        With Sheets("RM_Rpt").PivotTables("RM_Account_List").PivotFields("LVL6_TERRITORY_EMAIL")
            .ClearAllFilters
            If Len(rng.Value) > 0 Then .CurrentPage = rng.Value
        End With '<this line changes
        With Sheets("RM_Rpt").PivotTables("Pivot Table 2").PivotFields("LVL6_TERRITORY_EMAIL")
            .ClearAllFilters
            If Len(rng.Value) > 0 Then .CurrentPage = rng.Value
        End With '< This line too
    End If
End Sub

编辑以回复评论

刚刚意识到错误。您正在开始With声明,然后使用End If而不是End With来关闭它。我已经更新了上面的代码。试一试。

再次修改以回复评论

原来我忘记了End If