【发布时间】:2019-05-06 22:13:25
【问题描述】:
我希望能够通过我在工作表中手动键入的单元格值的内容来过滤切片器。
我有切片器“country_of_origin”,它控制三个数据透视表“applications”、“decisions”、“invitations”。 我想通过在单元格 B2 中手动输入的“原产国”过滤切片器,而不滚动切片器列表中的整个国家列表。
我尝试录制宏,但这对我来说不是一个解决方案,因为如果我在工作表的单元格中手动输入国家/地区名称,它将无法正常工作。看起来是这样的:
slicer_Country_of_origin")
.SlicerItems("ALBANIA").Selected = True
.SlicerItems("AFGHANISTAN").Selected = False
.SlicerItems("ALGIERIA").Selected = False
.SlicerItems("ARMENIA").Selected = True
End With
End Sub
我进一步在 mrexcel.com 论坛上找到了一些代码,我复制了它,将切片器的名称更改为“原产国”并将单元格的位置更改为“$b$2”。
sub Macro6()
' sheet module
Private Sub Worksheet_Change(ByVal Target As Range)
Dim sc As SlicerCache, si As SlicerItem
If Target.Address = "$B$2" Then
Set sc = ActiveWorkbook.SlicerCaches("Country of origin") ' desired slicer
sc.ClearAllFilters
For Each si In sc.SlicerItems
If si.Caption = CStr(Target) Then
si.Selected = True
Else
si.Selected = False
End If
Next
End If
End Sub
启动此宏后,行后
sub Macro6()
我收到了消息:
编译错误:预期结束子。
我想转换/更正代码,以满足我的需求,即通过我在工作表中手动键入的单元格值的内容来过滤切片器。**
【问题讨论】:
-
编译错误出现在哪一行?
-
在第一行,就在启动宏之后。
-
就在这一行之后?
Private Sub Worksheet_Change(ByVal Target As Range)• 我在这里看不到任何错误。您确定您使用的是您显示的代码吗?使用完全相同的换行符? • 实际上,此过程是一个事件,会自动运行,但不能手动运行。 • 请尝试更准确地了解您的问题究竟在哪里。 -
在 ' sheet module 的 line 上方有一行包含 title: Sub Macro6 () 并且在此行之后发生错误。我的问题是编写一个代码,该代码能够通过我在工作表中手动键入的单元格值的内容来过滤切片器。我在帖子中写了关于试验的文章。我需要帮助以这种方式转换代码,以便我的切片器使用过滤器过滤我在单元格 B2 中编写的内容。
-
删除行
sub Macro6()。它标志着一个子的开始 - 就像下一行一样......