找回密码
 立即注册

QQ登录

只需一步,快速开始

zzz123

注册会员

13

主题

32

帖子

159

积分

注册会员

积分
159
zzz123
注册会员   /  发表于:2023-1-5 09:53  /   查看:3182  /  回复:6
1金币
spread选中一个范围的单元格,怎么获取最后选中的单元格的行

image.png17522887.png
比如我最后选中了10.00这个单元格,怎么得到10.00的行索引呢?

最佳答案

查看完整内容

Dim selectionArr As FarPoint.Win.Spread.Model.CellRange() = fs.Sheets(sheet).GetSelections() If fs.Sheets(sheet).RowCount = 0 OrElse selectionArr.Length = 0 Then Return -1 End If '满足条件说明从下往上选择 If fs.Sheets(sheet).ActiveRowIndex > selectionArr(0).Row Then Return fs.Sheets(sheet).ActiveRowIndex - selectionArr(0).RowCount + 1 ...

6 个回复

倒序浏览
最佳答案
最佳答案
zzz123
注册会员   /  发表于:2023-1-5 09:53:26
来自 2#
Dim selectionArr As FarPoint.Win.Spread.Model.CellRange() = fs.Sheets(sheet).GetSelections()
        If fs.Sheets(sheet).RowCount = 0 OrElse selectionArr.Length = 0 Then
            Return -1
        End If
        '满足条件说明从下往上选择
        If fs.Sheets(sheet).ActiveRowIndex > selectionArr(0).Row Then
            Return fs.Sheets(sheet).ActiveRowIndex - selectionArr(0).RowCount + 1
        End If
        '不满足说明从上往下选择或者只选择一列
        Return selectionArr(0).RowCount + selectionArr(0).Row - 1
回复 使用道具 举报
Richard.Ma讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2023-1-5 12:13:43
3#
你意思是有时候选择区域时是从 右下左上 来选择的吗,我看你说的这个10.00这个单元格还是左上角的单元格。

这个目前没有办法判断,selection的变化目前没有相关事件。不然还可以判断一下变化时鼠标释放的位置来大概判断一下
回复 使用道具 举报
zzz123
注册会员   /  发表于:2023-1-5 16:50:28
4#
您看我上面的代码是否可以,将fs.Sheets(sheet).ActiveRowIndex 作为起始行,将fs.Sheets(sheet).ActiveRowIndex加上或者减去选中的行数
回复 使用道具 举报
Richard.Ma讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2023-1-5 17:25:55
5#
如果你只是想要获取“最后选中的单元格的行”,那么就直接用ActiveRowIndex就行吧。

不需要再用其他的代码
回复 使用道具 举报
zzz123
注册会员   /  发表于:2023-1-5 17:39:36
6#
ActiveRowIndex是点中的行,如果我从右下到左上选中范围,ActiveRowIndex是右下行的索引
回复 使用道具 举报
Richard.Ma讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2023-1-5 17:58:25
7#
明白了,那你就按照你上面的代码逻辑来判断就行,这个没什么问题
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部