【问题标题】:Multi-select Excel slicers多选 Excel 切片器
【发布时间】:2018-07-05 10:55:30
【问题描述】:

我想将多选设置为仪表板中三个切片器的默认设置。

我写了三个(每个切片器一个)短程序,如下所示:

Sub msel() 

 ActiveSheet.Shapes.Range(Array("Slicer1")).Select 
 SendKeys "%s" 
 SendKeys "(ESC)" 

End Sub

当独立调用时,这些过程会起作用。当我尝试从另一个 Sub 调用它们中的三个时,只有最后一个 Call 有效(即,只有一个切片器恰好处于多选模式)。

任何指导将不胜感激。

*** 这样的东西(见下文)具有相同的效果:

Sub All()

Dim sCache As SlicerCache
Dim sl As Slicer

For Each sCache In ActiveWorkbook.SlicerCaches
    For Each sl In sCache.Slicers
        sl.Shape.Select
        SendKeys "%s"
        SendKeys "{ESC}"
    Next sl
Next sCache

End Sub

【问题讨论】:

  • 为什么要使用选择?你不能只遍历每个切片器的 sliceritems 吗?
  • @JvdV 是的,事实上我正在循环清除过滤器并且效果很好。我无法做的是启用多选
  • 对,好吧....你不能:stackoverflow.com/questions/47018410/…
  • @JvdV 感谢您的快速回复。我发现了问答。不过有趣的是,正如我在问题中提到的那样,当我调用其中一个 Subs(用于一个切片器)时,它按预期工作。
  • 嗯,好吧,那么如果您不调用三个不同的过程,而是在 Workbook_open 事件中循环遍历这些切片器呢? reddit.com/r/excel/comments/683y2u/…。如果这行得通,我会感到惊讶。

标签: excel slicers vba


【解决方案1】:

我怀疑 Excel 循环太快,SendKeys 无法生效。如果我在你的第二个 SendKeys 之后添加一个 DoEvents,它对我来说就很好。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多