在切片机上自动选择今天的日期

问题描述:

我需要通过VBA为今天的日期选择切片机项目。我曾尝试两种方法:在切片机上自动选择今天的日期

  1. 使用SlicerItems方法,但SlicerItems导致

    运行时错误 '1004':应用程序定义或对象定义错误

    错误消息,即使当我使用最简单的版本:

    ActiveWorkbook.SlicerCaches(1).SlicerItems(1).Selected = True 
    

    我试过我可以对此进行每种变化,包括按名称指定缓存,但我总是得到相同的错误。

  2. 我记录一个宏,其产生不运行的线,并选择特定的限幅器文件:

    ActiveWorkbook.SlicerCaches("<NAME>").VisibleSlicerItemsList = Array("[VCC IntervalDate].[Hierarchy].[Year Number].&[2015].&[October].&[2015-10-13T00:00:00]") 
    

    我然后能够使用变量来修改[2015]和[十月]数组中的值并取得成功。不过,我无法使用变量修改[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部分,但这也不起作用。

所以我正式难住,欢迎任何帮助。

+0

您的切片机与普通数据透视表或与Power Pivot相关联? – L42

+0

也许你可以发布没有用的代码? – Rory

+0

这是Power Pivot。数据源是一个SQL数据立方体。我怀疑这是问题的一部分。 – Droz

选择单个切片器项目与您所期望的相反。而不是今天选择,您需要取消选择所有其他日期。

试试这段代码。 用您的缓存名称替换“Slicer_Date”,并更改日期格式以匹配您的数据。

Dim i As Integer 

For i = 1 To ActiveWorkbook.SlicerCaches("Slicer_Date").SlicerItems.Count 'looping through all items 
    If ActiveWorkbook.SlicerCaches("Slicer_Date").SlicerItems(i).Value <> Format(Now(), "mm/dd/yyyy") Then 'if date doesn't match then 
     ActiveWorkbook.SlicerCaches("Slicer_Date").SlicerItems(i).Selected = False 'deselects all other dates 
    End If 
Next i 
+0

谢谢你的回复。这与我以前尝试使用的代码相匹配,但是我与上面的方法一样存在相同的问题。只要我尝试使用'SlicerItems',它就会出错。我在解决方案的第一行发现运行时错误“1004”。这是否可能是因为我使用Power Pivot? – Droz

+0

这是可能的。我用普通的piovt表测试了我的解决方案。 –