libreoffice calc - 宏中的可变参数
Posted
技术标签:
【中文标题】libreoffice calc - 宏中的可变参数【英文标题】:libreoffice calc - varargs in macros 【发布时间】:2016-12-13 16:00:08 【问题描述】:我了解 Excel 有一个 TEXTJOIN
function,它允许将多个值显示为一个元组。
我也了解 Libre Office 确实 - 无论出于何种原因 - 没有它们。
如何编写一个辅助宏 vec
为我生成所需的元组表示?
例如=vec(A1)
应该产生="("&A1&")"
,
=vec(A1:A3)
应该产生="("&A1&","&A2&","&A3&")"
,
=vec(A1,X5:X99,Z3)
应该是="("&A1&","&"X5"&","&X6&...&x99&","&Z3&")"
等等等等
一个宏很容易在 bash 中实现,但我想只定义一次然后在 calc 中使用它,而不是不断地从控制台复制到电子表格。
如何在 calc 中实现这一点?
【问题讨论】:
Open Office Spreadsheet (Calc) - Concatenate text cells with delimiters的可能重复 @tohuwawohu 很好,谢谢。肯定会仔细看看。但是,这个问题与建议的解决方案不同,因为我想摆脱值需要在连接范围内的要求 哎呀 - 你是对的,你的问题实际上不是重复的。 【参考方案1】:根据https://forum.openoffice.org/en/forum/viewtopic.php?f=45&t=67880,如果使用Option Compatible
声明,Basic 函数可以使用可变数量的参数。这使它的行为更像 MS Excel。参数声明为ParamArray pa()
。
@tohuwawohu 发布的链接显示了所需的大部分实现细节。
要以更原生于 LibreOffice 的方式执行此操作,请编写一个带有 Java 声明的电子表格插件,该声明使用 any[]
作为参数。有关加载项参数类型的信息,请参阅https://www.openoffice.org/api/docs/common/ref/com/sun/star/sheet/AddIn.html。
实际功能也可以用Java实现。或者,它可能可以用另一种接受可变数量参数的语言来实现,例如 Python *args
。
【讨论】:
以上是关于libreoffice calc - 宏中的可变参数的主要内容,如果未能解决你的问题,请参考以下文章
如何通过 pyuno 提取 LibreOffice calc 中当前选定的单元格范围?
在 Basic 中计算自己的对数(LibreOffice Calc Macro)
如何检索输入字段的值并使用它来修改 LibreOffice Basic 宏中的占位符?