我的工作簿中有切片器,我需要默认启用多选。我无法通过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选择两个切片器选项。这确实有效,并选择了两个选项,但它没有强制启用多选。
答案 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
...