【发布时间】:2020-08-28 16:45:37
【问题描述】:
我想编写一个 Libreoffice-Basic 函数,该函数考虑了放置函数的单元格的行和列。我想如果我可以定义一个函数,例如:
Function MyRowFun()
MyRowFun = ?????
End Function
复制内置函数ROW()。换句话说,一旦我在任何给定的单元格中输入了"=MyRowFun()",该单元格的显示就与我输入了"=ROW()" 一样。
如果能得到对应的工作表名也不错。
非常感谢您提供的任何帮助,例如在线手册的指针。
PS:花了很多时间搜索后,我找到了很多地方解释如何识别选择下的单元格,使用ThisComponent.CurrentSelection.AbsoluteName,但我关心放置公式的单元格,而不是当前选定的单元格。
【问题讨论】:
-
你为什么要为难自己?您已经搜索了很多,并且您可能已经多次看到“不可能”,不是吗?是的,今天的 API 没有提供这样的机会(也许有一天会实现,我认为不会很快)。如果您知道不带参数的 SHEET()、ROW() 和 COLUMN() 可以返回 sheet-row-column 编号,那么在调用 UDF 时只需将它们作为参数传递。
-
@JohnSUN,感谢您的评论。好吧,我想我很不走运,或者可能没有使用正确的搜索词,但到目前为止,我还没有看到有人提到这是不可能的。当然,我已经考虑过将这些东西作为参数传递,但我相信你会同意这样的解决方案并不是最优雅的。
-
是的,我也认为最终用户需要让事情变得更容易(例如,让他在每次调用我的时候都不需要传递三个空参数 sheet-column-row功能)。另一方面,我同意开发人员的观点,他们在被要求提供有关“调用者”的信息时,立即问“为什么?你的函数想知道它的位置的原因是什么。你的算法要做什么?这个情报?”你会怎么回答他们?确实,你要写的不是数据值(字符串,数字,日期)而是单元格位置?
-
@JohnSUN,我猜你的论点也可以用来支持废除内置函数 COLUMN() 和 ROW()。
-
不,因为 TDF 试图为用户提供 Excel 所拥有的一切(不是在 VBA 中,而是在电子表格计算器中),即整个功能范围。但他们并不急于向我们——你和我——开放一些现有的但隐藏的机会。 “你为什么需要这个?不要生产超出必要的精华。”到目前为止,没有人能够向他们解释知道单元地址可以做什么。 (一个令人信服的理由是“获取颜色以将此行中的值分配给某个类别”遇到了反对“颜色不是信息,这是一个设计工具”)
标签: libreoffice-calc libreoffice-basic