【问题标题】:Enable Multi-select on slicer by default默认情况下在切片器上启用多选
【发布时间】:2018-04-11 14:51:39
【问题描述】:

我的工作簿中有切片器,需要默认启用多选。

我试过 SendKeys。

ActiveSheet.Shapes.Range(Array("WMS")).Select
SendKeys "%S", True
ActiveSheet.Shapes.Range(Array("Equipment")).Select
SendKeys "%S", True
ActiveSheet.Shapes.Range(Array("Warehousing Skills")).Select
SendKeys "%S", True
ActiveSheet.Shapes.Range(Array("OCF Skills")).Select
SendKeys "%S", True

这会按预期选择切片器,但 sendkeys 未启用多选。

我尝试在sendkeys 命令前后添加暂停。

我尝试选择两个切片器选项。这没有启用多选。

【问题讨论】:

  • 您是在尝试启用多选,还是选择多项内容(无论是否设置了多选,您都可以使用 VBA 执行此操作)。
  • 我正在尝试启用多选。我知道您可以使用 VBA 选择多个内容。我这样做是希望它会触发多选切换,但它没有。

标签: excel vba sendkeys slicers


【解决方案1】:

使用 Application.SendKeys 为我工作:

ActiveSheet.YOURSLICER.Select    
Application.SendKeys "%s"

在使用多个切片器时,在 SendKeys 之后添加 DoEvents。

ActiveSheet.YOURSLICER1.Select    
Application.SendKeys "%s"
DoEvents
ActiveSheet.YOURSLICER2.Select    
Application.SendKeys "%s"
DoEvents
...

【讨论】:

    【解决方案2】:

    在每个 SendKeys 命令之后添加一个 DoEvents 使我可以使用它。

    ActiveSheet.Shapes.Range(Array("WMS")).Select
    SendKeys "%S"
    DoEvents
    ActiveSheet.Shapes.Range(Array("Equipment")).Select
    SendKeys "%S"
    DoEvents
    

    【讨论】:

      【解决方案3】:

      您的代码是正确的。只需将 S 替换为 s 并删除 (, True)。

      【讨论】:

        【解决方案4】:

        一种解决方法可能是您选择切片器,然后使用 SendKeys 方法。

        ActiveSheet.YOURSLICER.Select
        SendKeys "%s"  || sends ALT+S key combination to toggle multiselect ON.
        

        【讨论】:

          【解决方案5】:

          我不相信您可以像我写这篇文章时那样以编程方式更改多选切换...该属性不会通过 VBA 向用户公开。看起来您要么必须手动更改所有切片器上的该设置,要么教您的用户在进行选择时按住 CTRL 键(这让他们可以进行多项选择,就像激活了该切换一样)。

          【讨论】:

            猜你喜欢
            • 2017-12-05
            • 2016-05-13
            • 1970-01-01
            • 1970-01-01
            • 2014-05-28
            • 2023-01-17
            • 1970-01-01
            • 2014-12-17
            • 1970-01-01
            相关资源
            最近更新 更多