我在这件事上绞尽脑汁,结果被卡住了。在Excel NativeTimeline切片器中,我希望捕获用户从月份切换到季度的时间,这样我就可以更新仪表板上的时间序列图表。我似乎找不到一种方法来连接到这一点上,因为更改只影响显示的内容,而不是透视表中的内容(否则我可以在那里使用事件触发器)。
我尝试将它添加到一个自定义类中,并将其设置为一个公共的带有事件的对象,但这不起作用。关于如何捕捉这一点,有什么其他想法吗?
下面是切换到季度和月份的代码。
ActiveWorkbook.SlicerCaches("NativeTimeline_WeekBeginDate").Slicers("WeekBeginDate").TimelineViewState.Level = xlTimelineLevelQuarter
ActiveWorkbook.SlicerCaches("NativeTimeline_WeekBeginDate").Slicers("WeekBeginDate").TimelineViewState.Level = xlTimelineLevelMonths发布于 2018-03-16 12:13:45
我认为您唯一的希望是取消选择“时间级别”选项,这样用户就不能在TimeLine上更改它,而是添加一个切换按钮,让用户在那里选择时间级别,然后使用他们的选择不仅可以更改TimeLine上的时间级别,还可以更改您的时间序列图表。
发布于 2018-03-22 23:04:20
如果其他人遇到这个问题,目前还没有办法捕获这个事件,所以这是我能想到的最好的解决方案。我捕获了数据透视表更改事件,检查时间轴切片器的级别,然后根据需要更新数据透视表。唯一的问题是,它不会在用户更改时间级别时触发,只有在更改时间过滤器之后才会触发。
Private Sub Worksheet_PivotTableChangeSync(ByVal Target As PivotTable)
Application.EnableEvents = False
If Target = "PivotTable4" Then
On Error Resume Next 'this will throw an error if a month/quarter is selected with no data
If ThisWorkbook.SlicerCaches("NativeTimeline_WeekDate").Slicers("WeekDate").TimelineViewState.Level = xlTimelineLevelQuarters Then
'change times series chart to quarters
ptDashboard.PivotTables("PivotTable4").PivotFields("WeekDate").LabelRange.Group _
Start:=True, End:=True, Periods:=Array(False, False, False, False, False, True, True) 'group by quarter & year
ElseIf ThisWorkbook.SlicerCaches("NativeTimeline_WeekDate").Slicers("WeekDate").TimelineViewState.Level = xlTimelineLevelMonths Then
'change times series chart to months
ptDashboard.PivotTables("PivotTable4").PivotFields("WeekDate").LabelRange.Group _
Start:=True, End:=True, Periods:=Array(False, False, False, False, True, False, True) 'group by months & year
End If
On Error GoTo 0
End If
Application.EnableEvents = True
End Subhttps://stackoverflow.com/questions/49305460
复制相似问题