我有一个在工作表上运行的仪表板。仪表板由来自不同数据源的多个透视表组成。
我希望能够从下拉菜单中选择管理员名称来构建此报告并使其正常工作。选择经理姓名的单元格为" 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
答案 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
。