我有一个下拉列表(excel数据验证),具有与切片器相同的选项(均来自不同来源)。
有人可以和我分享如何将我的下拉列表选择链接到切片器的VBA代码吗?当我运行宏并在下拉列表中进行选择时,显然没有任何记录。因此,我不知道如何开始。
例如 下拉列表:区域1,区域2,区域3 切片器:区域1,区域2,区域3 目的:如果我从下拉列表中选择“区域3”,则切片器也应选择“区域3”。
编辑:为清楚起见
答案 0 :(得分:0)
您需要一个Change
的事件例程,该例程将在下拉列表所在的单元格发生更改时触发,并需要一个例程来更改切片器。
将以下代码放入VBA-Editor中的工作表对象(而不是新模块)。更改单元格地址(在示例中为E10
到您正在使用的单元格)。如果工作簿中有多个切片器,则必须将索引从SlicerCaches
更改为要修改的切片器(与VBA一样,您可以使用索引号或名称)。
Option Explicit
' The Event routine
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address(False, False) = "E10" Then
SelectSlicerItem ThisWorkbook.SlicerCaches(1), Target.value
End If
End Sub
以下例程可以放在事件例程下面,也可以放在模块中。请注意,如果未在切片器中找到itemText
,则将选择所有项目。
Sub SelectSlicerItem(sc As SlicerCache, itemText As String, Optional defaultItem As String = "")
Dim si As SlicerItem, found As Boolean
found = False
sc.ClearManualFilter
For Each si In sc.SlicerItems
' Debug.Print si.Caption, si.value
If si.Caption <> itemText Then
si.Selected = False
found = True
End If
Next si
If Not found And defaultItem <> "" Then SelectSlicerItem sc, defaultItem
End Sub
编辑:已更改SelectSlicerItem
以处理默认项目。