首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在用户更改NativeTimeline切片器视图状态(即qrts的月份)时捕获

在用户更改NativeTimeline切片器视图状态(即qrts的月份)时捕获
EN

Stack Overflow用户
提问于 2018-03-16 01:14:41
回答 2查看 707关注 0票数 0

我在这件事上绞尽脑汁,结果被卡住了。在Excel NativeTimeline切片器中,我希望捕获用户从月份切换到季度的时间,这样我就可以更新仪表板上的时间序列图表。我似乎找不到一种方法来连接到这一点上,因为更改只影响显示的内容,而不是透视表中的内容(否则我可以在那里使用事件触发器)。

我尝试将它添加到一个自定义类中,并将其设置为一个公共的带有事件的对象,但这不起作用。关于如何捕捉这一点,有什么其他想法吗?

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

代码语言:javascript
复制
ActiveWorkbook.SlicerCaches("NativeTimeline_WeekBeginDate").Slicers("WeekBeginDate").TimelineViewState.Level = xlTimelineLevelQuarter
ActiveWorkbook.SlicerCaches("NativeTimeline_WeekBeginDate").Slicers("WeekBeginDate").TimelineViewState.Level = xlTimelineLevelMonths
EN

回答 2

Stack Overflow用户

发布于 2018-03-16 12:13:45

我认为您唯一的希望是取消选择“时间级别”选项,这样用户就不能在TimeLine上更改它,而是添加一个切换按钮,让用户在那里选择时间级别,然后使用他们的选择不仅可以更改TimeLine上的时间级别,还可以更改您的时间序列图表。

票数 1
EN

Stack Overflow用户

发布于 2018-03-22 23:04:20

如果其他人遇到这个问题,目前还没有办法捕获这个事件,所以这是我能想到的最好的解决方案。我捕获了数据透视表更改事件,检查时间轴切片器的级别,然后根据需要更新数据透视表。唯一的问题是,它不会在用户更改时间级别时触发,只有在更改时间过滤器之后才会触发。

代码语言:javascript
复制
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
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49305460

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档