在有关类(class)出勤的 KPI 仪表板中,我有一个包含类(class)名称的下拉列表。用户选择类(class),宏必须在切片器(连接到多维数据集)中选择所选类(class)。
使用宏录制器时,我看到录制器使用一种索引来选取用户想要的类(class),而不是名称(在我的示例中为 &[18]):
ActiveWorkbook.SlicerCaches("Slicer_Course2").VisibleSlicerItemsList = Array("[Course].[Course].&[18]")
我想浏览不同的切片器项目,并仅选择与下拉列表中用户的选择相对应的项目,但基于类(class)名称。例如,如果用户选择类(class)“切片机简介”:
Sub TestSclicer()
Dim i
ActiveWorkbook.SlicerCaches("Slicer_Courses2").ClearManualFilter
For i = 1 To ActiveWorkbook.SlicerCaches("Slicer_Courses2").SlicerItems.Count
If ActiveWorkbook.SlicerCaches("Slicer_Courses2").SlicerItems(i).Name = "Introduction To Slicer" Then
ActiveWorkbook.SlicerCaches("Slicer_Courses2").SlicerItems(i).Selected = True
Else
ActiveWorkbook.SlicerCaches("Slicer_Courses2").SlicerItems(i).Selected = False
End If
Next
End Sub
它在 ActiveWorkbook.SlicerCaches("Slicer_Courses2").SlicerItems.Count
上出现错误,并带有消息
application-defined of object-defined error
最佳答案
好吧,我认为你不能根据这个reference直接从SlicerCaches获取SlicerItems .
所以,你遇到了错误。这是我的建议,请尝试如下:
Sub TestSclicer()
Dim sC As SlicerCache
Dim sI As SlicerItem
Dim index As Integer
Set sC = ActiveWorkbook.SlicerCaches("Slicer_Courses2")
sC.ClearManualFilter
For index = 1 To sC.SlicerCacheLevels.count
For Each sI In sC.SlicerCacheLevels(index).SlicerItems
If sI.Name = "Introduction To Slicer" Then
sI.Selected = True
Else
sI.Selected = False
End If
Next sI
Next index
End Sub
关于excel - Excel Slicer 的应用程序定义或对象定义错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31827145/