zzz123 发表于 2023-1-5 09:53:25

spread选中一个范围的单元格,怎么获取最后选中的单元格的行

spread选中一个范围的单元格,怎么获取最后选中的单元格的行


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

zzz123 发表于 2023-1-5 09:53:26

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 发表于 2023-1-5 12:13:43

你意思是有时候选择区域时是从 右下 往 左上 来选择的吗,我看你说的这个10.00这个单元格还是左上角的单元格。

这个目前没有办法判断,selection的变化目前没有相关事件。不然还可以判断一下变化时鼠标释放的位置来大概判断一下

zzz123 发表于 2023-1-5 16:50:28

您看我上面的代码是否可以,将fs.Sheets(sheet).ActiveRowIndex 作为起始行,将fs.Sheets(sheet).ActiveRowIndex加上或者减去选中的行数

Richard.Ma 发表于 2023-1-5 17:25:55

如果你只是想要获取“最后选中的单元格的行”,那么就直接用ActiveRowIndex就行吧。

不需要再用其他的代码

zzz123 发表于 2023-1-5 17:39:36

ActiveRowIndex是点中的行,如果我从右下到左上选中范围,ActiveRowIndex是右下行的索引

Richard.Ma 发表于 2023-1-5 17:58:25

明白了,那你就按照你上面的代码逻辑来判断就行,这个没什么问题
页: [1]
查看完整版本: spread选中一个范围的单元格,怎么获取最后选中的单元格的行