【发布时间】:2018-04-02 14:07:47
【问题描述】:
我需要通过 VBA 为今天的日期选择一个切片器项目。我试过两种方法:
-
使用 SlicerItems 方法,但是 SlicerItems 会导致
运行时错误“1004”:应用程序定义或对象定义错误
错误信息,即使我使用最简单的版本:
ActiveWorkbook.SlicerCaches(1).SlicerItems(1).Selected = True我已经尝试了所有可能的变体,包括按名称指定缓存,但我总是遇到同样的错误。
-
我录制了一个宏,它会生成一条运行的行,并选择特定的切片器项:
ActiveWorkbook.SlicerCaches("<NAME>").VisibleSlicerItemsList = Array("[VCC IntervalDate].[Hierarchy].[Year Number].&[2015].&[October].&[2015-10-13T00:00:00]")然后我可以使用变量来修改数组中的 [2015] 和 [October] 值并获得成功的结果。但是我无法使用变量修改 [2015-10-13T00:00:00]。它返回一个 OLAP 错误。
如果我将该值手动修改为我需要的日期,并且它与通过变量设置的年/月值匹配,则可以正常工作:
ActiveWorkbook.SlicerCaches("Slicer_VCC_IntervalDate.Hierarchy").VisibleSlicerItemsList = Array("[VCC IntervalDate].[Hierarchy].[Year Number].&[" & Year(d) & "].&[" & Month(d) & "].&[2015-10-14T00:00:00]")
我已经验证了变量输出的格式正确,以匹配2015-10-14T00:00:00,但它不接受它。我也尝试只修改日期部分并手动输入T00:00:00 部分,但这也不起作用。
所以我被官方难住了,欢迎任何帮助。
【问题讨论】:
-
您的切片器与普通数据透视表关联还是与 Power Pivot 关联?
-
也许您可以发布不起作用的代码?
-
这是 Power Pivot。数据源是一个 SQL 数据立方体。我怀疑这是问题的一部分。