从 libreoffice calc basic 中的“ThisComponent.CurrentSelection”获取行号和列号
Posted
技术标签:
【中文标题】从 libreoffice calc basic 中的“ThisComponent.CurrentSelection”获取行号和列号【英文标题】:Get Row and Column number from "ThisComponent.CurrentSelection" in libreoffice calc basic 【发布时间】:2020-06-16 23:23:46 【问题描述】:我有这段代码,我可以在其中获取当前选定的单元格并使用它来修改其值:
theSelection = ThisComponent.CurrentSelection
theSelection.setString("some value")
现在我想移到右边的下一列,如果是 Microsoft excel VBA,我可以使用 theSelection.Offset(0,1)
之类的东西,但事实并非如此。所以我当然正在做一些解决方法:
nextCell = oActiveSheet.getCellByPosition( ???currentColumn + 1, ???currentRow)
ThisComponent.CurrentController.select( nextCell )
我只想知道将这些???
替换为theSelection
var 的实际值以移动到右侧的下一列的最简单方法。
我也试过这个:
nextCell = oActiveSheet.getCellByPosition( column() + 1, row())
但我不知道为什么它总是返回column() = 1
和row() = 1
,不管CurrentSelection
的值是哪个。提前感谢您的帮助。
【问题讨论】:
交叉发布到ask.libreoffice.org/en/question/250774/…。 【参考方案1】:获取单元格地址。
Sub ChangeAndThenGoToCellToRightOfSelection
oActiveSheet = ThisComponent.getCurrentController().getActiveSheet()
oSels = ThisComponent.getCurrentSelection()
If oSels.supportsService("com.sun.star.sheet.SheetCell") Then
'A single cell is selected.
oSels.setString("some value")
address = oSels.getCellAddress()
nextCell = oActiveSheet.getCellByPosition(address.Column + 1, address.Row)
ThisComponent.CurrentController.select(nextCell)
End If
End Sub
要查看对象可以做什么,请使用 XrayTool 或 MRI 等自省工具。
【讨论】:
以上是关于从 libreoffice calc basic 中的“ThisComponent.CurrentSelection”获取行号和列号的主要内容,如果未能解决你的问题,请参考以下文章
在 Basic 中计算自己的对数(LibreOffice Calc Macro)
Libreoffice Calc Basic 如何通过代码附加 2 个小数位
Libreoffice calc - 如何将相同的值写入范围