【发布时间】:2016-06-02 15:57:53
【问题描述】:
我有从切片器中选择单个项目的工作代码,但它不适用于多个项目。
通过读取范围内的哪些单元格以粗体显示并填充字符串数组 STP(46) 来设置选择,直到 STP(k) 为止。这很好用。
然后代码应该取消选择切片器中不在 STP 中的所有项目,并选择那些在 STP 中的项目。这适用于一个选择,但不适用于多个选择 - 它错误地选择了所有项目,直到最后一个项目被选择。
With ActiveWorkbook.SlicerCaches("Slicer_STP_Name")
For i = 1 To .SlicerItems.Count
For j = 1 To k
If .SlicerItems(i).Selected And .SlicerItems(i).Caption <> STP(j) Then .SlicerItems(i).Selected = False
Next j
Next i
For i = 1 To .SlicerItems.Count
For j = 1 To k
If .SlicerItems(i).Caption = STP(j) Then .SlicerItems(i).Selected = True: Exit For
Next j
Next i
End with
因此,它不会选择切片器中的第 2 和第 4 个项目,而是选择第 1、2、3、4 个项目,然后取消选择其余项目。
我需要使用这样的循环技术,因为我需要能够将此代码与具有不同缓存名称但具有相同项目列表的多个切片器一起使用。
我到处寻找,上面的代码甚至来自另一个问题的解决方案。非常感谢任何帮助!
【问题讨论】: