王五子 发表于 2024-12-5 14:00:38

v17单元格选中多个区域时如何获取当前选中的多个区域

单元格选中多个区域时如何获取当前选中的多个区域




第一个图片是选中区域后按Ctrl键继续选其他区域,那么如何获取到此时sheet中选中的所有区域呢?并且如何区分选完当前区域后更换其他选区 与 选完当前区域后继续Ctrl添加选区,

目前的selectchanged事件只能拿到最新选区,而得不到所有选区

Wilson.Zhang 发表于 2024-12-5 14:00:39

本帖最后由 Wilson.Zhang 于 2024-12-5 14:27 编辑

您好!可以通过Worksheet:getSelections()获取当前sheet中所有被选中的区域,返回结果是一个数组,如下图所示:



而且,通过SelectionChanged事件也能监听到所有被选中的区域,该事件会将区域变化前的旧区域和变换后的新区域分别记录在属性oldSelections和newSelections中,newSelections中记录了当前的所有选中区域,如下图所示:


正如您所说的,newSelections记录的是当前选中的所有区域。通过对比oldSelections和newSelections中的区域,即可得到最新添加的区域。

王五子 发表于 2024-12-5 15:06:55

Wilson.Zhang 发表于 2024-12-5 14:16
您好!可以通过Worksheet:getSelections()获取当前sheet中所有被选中的区域,返回结果是一个数组,如下图所 ...

selectionchanged记录的新旧信息是什么规则呢,这边获取到的信息很奇怪哎


第一次选区时没有获取到区域,只有一个单元格
后边的增加选区,new和old的值是同步的,拿不到最新的选区,比如说最后选了三个区 但是拿到的数组只有前两个

Wilson.Zhang 发表于 2024-12-5 15:51:13

王五子 发表于 2024-12-5 15:06
selectionchanged记录的新旧信息是什么规则呢,这边获取到的信息很奇怪哎




如果每次在当前选区的右侧增加一列新选区,那么,每次SelectionChanged事件监听到的newSelections总是比oldSelections多一个区,且除此之外的其他区都一致。

参考您提供的信息,我在17.1.9版本和最新17.1.10版本测试均未能复现您图示中的问题,如下动图所示。请教下您使用的版本号,以及您的具体操作方式。

王五子 发表于 2024-12-5 16:30:57

Wilson.Zhang 发表于 2024-12-5 15:51
如果每次在当前选区的右侧增加一列新选区,那么,每次SelectionChanged事件监听到的newSelections总是比o ...

找到问题了,感谢感谢

Wilson.Zhang 发表于 2024-12-5 16:32:15

王五子 发表于 2024-12-5 16:30
找到问题了,感谢感谢

不客气,请教下是操作方式影响的吗?

王五子 发表于 2024-12-8 16:46:08

Wilson.Zhang 发表于 2024-12-5 16:32
不客气,请教下是操作方式影响的吗?

是的

Wilson.Zhang 发表于 2024-12-9 08:32:06

王五子 发表于 2024-12-8 16:46
是的

解决了就好,那就结贴了。如有新问题,欢迎发新帖沟通。
页: [1]
查看完整版本: v17单元格选中多个区域时如何获取当前选中的多个区域