无法将VBA切片器选定的属性值设置为False

我一直在Excel和VBA的工作,我想弄清楚如何从我的切片机取消select各个领域,只selectless数。 我尝试读取切片器caching,然后遍历切片器中的各种项目。 我能够读取切片机中的项目的值,但我无法取消select它们。 它继续抛出错误代码1004的“应用程序定义或对象定义的错误”。

我正在分享我正面临困难的代码段。

Sub SelectFiscalWeeks() Dim slcCache As SlicerCache Dim slcItem As SlicerItem FalseVar = False Application.StatusBar = "Filtering out last 13 Week's Data" Set slcCache = ThisWorkbook.SlicerCaches("Slicer_Date.Fiscal_Week") slcCache.ClearManualFilter For Index = 1 To slcCache.SlicerCacheLevels.Count Worksheets("A").Cells(Index + 1, "N").Value = Index j = 0 For Each slcItem In slcCache.SlicerCacheLevels(Index).SlicerItems Worksheets("A").Cells(j + 1, "P").Value = slcItem.Name j = j + 1 slcItem.Selected = FalseVar Next Next 'Set slcCache.VisibleSlicerItems = Array("[DT].[FW].&[201701]") Set slcCache = Nothing Application.StatusBar = False End Sub 

在上面的代码中,我能够通过使用slcItem.Name来读取切片器项目名称,但我无法执行以下任一语句:

 slcItem.Selected = FalseVar Set slcCache.VisibleSlicerItems = Array("[DT].[FW].&[201701]") 

执行这些语句会抛出一个错误“应用程序定义或对象定义的错误”,错误代码为1004。

我一直在尝试debugging超过一个小时,但无法找出原因。 这可能是一些基本的东西,但是你能帮我确定我的代码可能有什么问题吗?

是的,我一直在debugging几个小时,你有同样的问题。 最后,我发现我应该使用VisibleSlicerItems而不是设置.selected为true / false。

尝试slcCache.VisibleSlicerItems = Array(“[DT]。[FW]。&[201701]”)没有设置。

这是我的代码作为例子。 希望可以帮助你。

 Option Explicit Sub Test() Dim sc As SlicerCache Dim si As SlicerItem Dim list As Variant Set sc = ActiveWorkbook.SlicerCaches("Slicer_product_name") For Each si In sc.SlicerCacheLevels(1).SlicerItems If InStr(si.Value, "Boxers") > 0 Then 'this if loop creates an Array for VisibleSlicerItems If IsEmpty(list) Then list = Array(si.Name) Else ReDim Preserve list(UBound(list) + 1) list(UBound(list)) = si.Name End If End If Next sc.VisibleSlicerItemsList = list End Sub