我有一张原始数据表。我想对一个宏进行编码,该宏将创建带有标题Engine No.的拼接器,然后选择切片器#1,然后将数据中可见的所有数据复制到另一张纸上。连续地,移至切片器2,并重复将过滤后的数据复制到另一张纸上的步骤。
这是我从宏记录器中得到的。这不是我可以使用的,因为新数据表中的数字将有所不同。我当时正在考虑使用循环。除了循环以外,还有其他更好的方法吗?我需要将显示的内容复制到每个切片器项目的另一张纸上。
我也看到了SlicerItems
和SlicerCache
,但我不知道它们是什么。有人可以给我解释一下吗?
Sub slicer()
With ActiveWorkbook.SlicerCaches("Slicer_Engine_S_N.")
.SlicerItems("123456").Selected = True
.SlicerItems("123441").Selected = False
.SlicerItems("123123").Selected = False
.SlicerItems("235455").Selected = False
.SlicerItems("566346").Selected = False
End With
答案 0 :(得分:0)
做这样的事情
Option Explicit
Sub IterateSlices()
Dim CurrentSlice As Integer
For CurrentSlice = 1 To 3
SelectOnly ActiveWorkbook.SlicerCaches("Slicer_Engine_S_N."), CurrentSlice
MsgBox "Do Something here"
Next
End Sub
Sub SelectOnly(Slicer As SlicerCache, SliceNo As Integer)
Dim i As Integer
' Force at least one to be selected before start
Slicer.SlicerItems(Slicer.SlicerItems.Count).Selected = True
For i = 1 To Slicer.SlicerItems.Count
Debug.Print (SliceNo = i)
Slicer.SlicerItems(i).Selected = (SliceNo = i)
Next i
End Sub
最后一个方法是选择第n个SliceItem的实用程序方法。使用索引号比使用名称更容易。它们始终以数字1开头,以切片数结尾。
第一种方法一次拾取一个切片。
SlicerCache是Excel的内部机制,用于跟踪属于哪个切片的数据。