返回目录:excel表格制作
我的数据源没法提供,是机密。
你随便用个源做两个表,录个动画给我看下。
经测试,通过 SlicerCache 对象中的 PivotTable 时不好传入作为索引号的变量,或许e799bee5baa6e997aee7ad94e59b9ee7ad94331是微软的 BUG,我把 ActiveWorkbook.SlicerCaches("Slicer_Year").PivotTables.Item(i) 中的变量 i 改成 1 即可成功引用到名为 "Slicer_Year" 这个切片器缓存里面的数据透视表对象。
下面是一个通用的移除到指定切片器缓存的所有数据透视表连接的 SUB 过程:
' ####################################################################
' [功能描述] 切断到指定切片器缓存的所有数据透视表连接.
' [参数列表] 1. Target 目标工作簿;
' 2. SlicerCacheNameOrIndex 切片器缓存名称或索引号 (可选).
' [返回类型] 无.
' ####################################################################
Public Sub DisconnectAllPivotTablesFromSlicerCache(ByVal Target As Workbook, _
ByVal SlicerCacheNameOrIndex As Variant)
Dim sliCache As SlicerCache
Dim sliCaches As SlicerCaches
On Error Resume Next
Set sliCaches = Target.SlicerCaches
If sliCaches.Count Then
Dim spTables As SlicerPivotTables
Set sliCache = sliCaches(SlicerCacheNameOrIndex)
Set spTables = sliCache.PivotTables
While spTables.Count
spTables.RemovePivotTable 1
Wend
End If
Set spTables = Nothing
Set sliCache = Nothing
Set sliCaches = Nothing
End Sub
调用如下:
DisconnectAllPivotTablesFromSlicerCache ActiveWorkbook, "Slicer_Year"
如果你的 "Slicer_Year" 的索引号是 1,那么也可以这样调用
DisconnectAllPivotTablesFromSlicerCache ActiveWorkbook, 1
运行效果:
最好能把文件传上来,方便分析
一定要展示copy出切片器百么?不展度示的话直接用筛选也问可以的啊
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$B$13" Then
With ActiveWorkbook.SlicerCaches("切片答器_a1")
For Each Item In .SlicerItems
If Item.Caption = Target.Text Then
Item.Selected = True
Else
Item.Selected = False
End If
Next
End With
End If
End Sub