时间线切片器使用变量选择日期范围

时间:2015-06-17 20:32:28

标签: vba date filter range timeline

我有一张表,我想使用开始和结束日期变量更新时间轴日期范围。信息定期每天填写,因此我找到最新的数据输入日期并将其保存为结束日期。然后我想展示截至该日期的滚动月份。

实施例。数据输入的最后一天是6月17日(2015年6月17日),它被分配给endDate。 startDate可以追溯到一个月,即5月18日(2015年5月18日)。

此代码是任意选定时间范围的录制宏。

ActiveSheet.Shapes.Range(Array("Timeline 1")).Select
ActiveWorkbook.SlicerCaches("NativeTimeline_Timeline1").TimelineState. _
    SetFilterDateRange "12/05/2015", "16/06/2015"

当我将startDate和endDate变量放入其中时不起作用。

Dim startDate, endDate As Date

ActiveSheet.Shapes.Range(Array("Timeline 1")).Select
ActiveWorkbook.SlicerCaches("NativeTimeline_Timeline1").TimelineState. _
    SetFilterDateRange startDate, endDate

2 个答案:

答案 0 :(得分:0)

您需要为startDateendDate分配值,除非您将参数传递给您的过程,但我没有从此代码中看到。

假设此过程不接受参数,那么如果您的开始日期和结束日期分别位于单元格中,分别说“A1”和“A100”,则可以在代码中指定它们。

startDate = Range("A1")
endDate = Range("A100")

现在,您可以在SetFilterDateRange方法中使用这些变量。

同样优良的做法是为每个变量分配数据类型。现在,startDate是一个Variant。因此,在多行变量的单行声明中,您应该编写

Dim startDate As Date, endDate As Date

答案 1 :(得分:0)

你可以使用这种语法:

ActiveWorkbook.SlicerCaches("NativeTimeline_Timeline1").TimelineState. _
SetFilterDateRange year(startDate) & "/" & month(startdate) & "/" & 
day(startdate), year(endDate) & "/" & month(enddate) & "/" & day(enddate)

没关系!