Excel 当用户更改NativeTimeline切片器视图状态时捕获(即从月份到qrts)

Excel 当用户更改NativeTimeline切片器视图状态时捕获(即从月份到qrts),excel,pivot-table,vba,Excel,Pivot Table,Vba,我一直在绞尽脑汁想这个问题,我被卡住了。在Excel NativeTimeline切片器中,我希望捕获用户从月份切换到季度的时间,以便更新仪表板上的时间序列图。我似乎找不到一种方法来实现这一点,因为更改只会影响数据透视表中显示的内容,而不会影响数据透视表中的任何内容(否则我可以在数据透视表中使用事件触发器) 我曾尝试将其添加到自定义类,并将其设置为PublicWithEvents对象,但没有成功。关于我如何捕捉这一点,还有其他想法吗 下面是切换到季度和月份的代码 ActiveWorkbook.S

我一直在绞尽脑汁想这个问题,我被卡住了。在Excel NativeTimeline切片器中,我希望捕获用户从月份切换到季度的时间,以便更新仪表板上的时间序列图。我似乎找不到一种方法来实现这一点,因为更改只会影响数据透视表中显示的内容,而不会影响数据透视表中的任何内容(否则我可以在数据透视表中使用事件触发器)

我曾尝试将其添加到自定义类,并将其设置为PublicWithEvents对象,但没有成功。关于我如何捕捉这一点,还有其他想法吗

下面是切换到季度和月份的代码

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

谢谢你的建议,但我决定保留本机功能,只更新切片器值的更改