【发布时间】:2019-07-30 17:57:55
【问题描述】:
我的目的:在我的文件表中,有一个复选框列表,我可以选中这些复选框,以便选择位于我文件的另一表中的切片器“A”的特定切片项。
一旦我选择了复选框,我就成功编写了一个代码,以便选择切片器“A”的切片器项目(例如,当我单击复选框“RD”时,它会在切片器中选择切片器项目“RD” 'A')
但是,我无法使用复选框选择一个切片器的多个切片器项目
我尝试编写代码来一次选择一个切片器项目并且它正在工作。当我单击工作表“报告”中的复选框时,我的工作簿工作表中的切片器项目被选中
我试过这段代码
Sub CheckBox105_Click()
Dim sC As SlicerCache
Dim department(0 To 21) As Variant
Set sC = ThisWorkbook.SlicerCaches("Slicer_Department")
Application.EnableEvents = False
For i = 0 To 21
department(i) = sC.SlicerItems(i + 1).Name
Next i
sC.VisibleSlicerItemsList = department
sC.SlicerItems("RR").Selected = True
sC.SlicerItems("FD").Selected = False
sC.SlicerItems("HG").Selected = False
sC.SlicerItems("BP").Selected = False
sC.SlicerItems("HH").Selected = False
sC.SlicerItems("CO").Selected = False
sC.SlicerItems("CO").Selected = False
sC.SlicerItems("YH").Selected = False
sC.SlicerItems("LI").Selected = False
sC.SlicerItems("ED").Selected = False
sC.SlicerItems("FI").Selected = False
sC.SlicerItems("GM").Selected = False
sC.SlicerItems("GU").Selected = False
sC.SlicerItems("HR").Selected = False
sC.SlicerItems("IT").Selected = False
sC.SlicerItems("LE").Selected = False
sC.SlicerItems("OP").Selected = False
sC.SlicerItems("RK").Selected = False
sC.SlicerItems("SRG").Selected = False
sC.SlicerItems("BRM").Selected = False
sC.SlicerItems("DT").Selected = False
sC.SlicerItems("IC").Selected = False
sC.SlicerItems("(blank)").Selected = False
Application.EnableEvents = True
使用此代码,我期望的结果如下: 我选择了 checkboxe105 并选择了切片器项目“RD” 我选择 checkoxe106 并选择切片器项目“FD”并保持第一个切片器项目“RD”处于选中状态
【问题讨论】:
-
我不知道您为什么要使用复选框,但我会将您要选择的项目放入字典中,清除切片器上的所有过滤器,然后遍历切片器:
For Each SI in SC.VisibleSlicerItems然后If Not Dictionary.Exists(SI.Name) Then SI.Selected = False -
嗨达米安,我听从了你的建议,但代码不起作用,你能否提供更多关于你告诉我的细节?我对这段代码不熟悉,非常感谢!
-
我做了这段代码,但它仍然不起作用: Dim sC As SlicerCache Dim si As sliceritem Dim dict As New Scripting.dictionary Set sC = ThisWorkbook.SlicerCaches("Slicer_Department") dict.Add Key :="GB", Item:=8 dict.Add Key:="GM", Item:=9 sC.ClearManualFilter For Each si In sC.VisibleSlicerItems If Not dict.Exists(si.Name) Then si.Selected = False下一个
标签: excel vba checkbox items slicers