2015-10-14 92 views
0

我需要通過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

回答

0

選擇單個切片器項目與您所期望的相反。而不是今天選擇,您需要取消選擇所有其他日期。

試試這段代碼。 用您的緩存名稱替換「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表測試了我的解決方案。 –