Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
多选择Excel切片器_Excel_Slicers_Vba - Fatal编程技术网

多选择Excel切片器

多选择Excel切片器,excel,slicers,vba,Excel,Slicers,Vba,我想将Multi-select设置为仪表板中三个切片器的默认设置 我编写了三个(每个切片器一个)短过程,如下所示: Sub msel() ActiveSheet.Shapes.Range(Array("Slicer1")).Select SendKeys "%s" SendKeys "(ESC)" End Sub 当独立调用时,这些过程可以工作。当我试图从另一个子系统调用其中三个时,只有最后一个调用有效(即,只有一个切片器恰好处于多选模式) 任何指导都将不胜感激 ***类似的

我想将Multi-select设置为仪表板中三个切片器的默认设置

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

Sub msel() 

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

End Sub
当独立调用时,这些过程可以工作。当我试图从另一个子系统调用其中三个时,只有最后一个调用有效(即,只有一个切片器恰好处于多选模式)

任何指导都将不胜感激

***类似的内容(见下文)具有相同的效果:

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

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

为什么要使用select?你就不能循环每个切片器的切片数吗?@JvdV是的,事实上我循环是为了清除过滤器,这很好。我没能做到的是启用multi-selectRight,嗯……你不能:@JvdV谢谢你的快速回复。我发现Q&A。有趣的是,正如我在问题中提到的,当我调用其中一个sub(对于一个切片器)时,它按预期工作。嗯,好吧,那么如果你不调用三个不同的过程,而是在工作簿\u open事件上循环这些切片器呢。如果这行得通,我会大吃一惊。