Excel 当用户更改NativeTimeline切片器视图状态时捕获(即从月份到qrts)
我一直在绞尽脑汁想这个问题,我被卡住了。在Excel NativeTimeline切片器中,我希望捕获用户从月份切换到季度的时间,以便更新仪表板上的时间序列图。我似乎找不到一种方法来实现这一点,因为更改只会影响数据透视表中显示的内容,而不会影响数据透视表中的任何内容(否则我可以在数据透视表中使用事件触发器) 我曾尝试将其添加到自定义类,并将其设置为PublicWithEvents对象,但没有成功。关于我如何捕捉这一点,还有其他想法吗 下面是切换到季度和月份的代码Excel 当用户更改NativeTimeline切片器视图状态时捕获(即从月份到qrts),excel,pivot-table,vba,Excel,Pivot Table,Vba,我一直在绞尽脑汁想这个问题,我被卡住了。在Excel NativeTimeline切片器中,我希望捕获用户从月份切换到季度的时间,以便更新仪表板上的时间序列图。我似乎找不到一种方法来实现这一点,因为更改只会影响数据透视表中显示的内容,而不会影响数据透视表中的任何内容(否则我可以在数据透视表中使用事件触发器) 我曾尝试将其添加到自定义类,并将其设置为PublicWithEvents对象,但没有成功。关于我如何捕捉这一点,还有其他想法吗 下面是切换到季度和月份的代码 ActiveWorkbook.S
ActiveWorkbook.SlicerCaches("NativeTimeline_WeekBeginDate").Slicers("WeekBeginDate").TimelineViewState.Level = xlTimelineLevelQuarter
ActiveWorkbook.SlicerCaches("NativeTimeline_WeekBeginDate").Slicers("WeekBeginDate").TimelineViewState.Level = xlTimelineLevelMonths
我认为您唯一的希望是取消选择“时间级别”选项,这样用户就不能在时间线上更改它,而是添加一个切换按钮,让用户在那里选择时间级别,然后使用他们的选择不仅可以更改时间线上的时间级别,还可以更改您的时间序列图。如果其他人遇到这种情况,目前没有办法捕捉到这一事件,所以这是我能想到的最好的解决办法。我捕获透视表更改事件,检查时间线切片器的级别,然后根据需要更新透视表。唯一的问题是,当用户更改时间级别时,只有在更改时间过滤器之后,才会触发该选项
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 Sub
谢谢你的建议,但我决定保留本机功能,只更新切片器值的更改