excel启用默认情况下在切片器上进行多选

时间:2017-10-30 15:00:44

标签: excel vba sendkeys slicers

我的工作簿中有切片器,我需要默认启用多选。我无法通过VBA找到任何方法来控制它。我甚至试过SendKeys,但似乎没有工作。

以下是当前无效 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未启用多选。我尝试在sendkey命令之前和之后添加一个暂停,但似乎仍然无法让它工作。

我甚至试过让VBA选择两个切片器选项。这确实有效,并选择了两个选项,但它没有强制启用多选。

5 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:1)

在每个SendKeys命令之后添加一个DoEvents对我来说有用。

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

答案 2 :(得分:0)

我不相信你可以编程方式改变那个Multiselect切换,就像我写这个时一样......该属性不会通过VBA向用户公开。您可能需要手动更改所有切片器上的设置,或者教您的用户在进行选择时按住CTRL键(这样可以让他们进行多项选择,就像激活切换一样)。

答案 3 :(得分:0)

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

答案 4 :(得分:0)

使用 Application.SendKeys 对我有用:

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

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

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