libreoffice calc - 宏中的可变参数

Posted

技术标签:

【中文标题】libreoffice calc - 宏中的可变参数【英文标题】:libreoffice calc - varargs in macros 【发布时间】:2016-12-13 16:00:08 【问题描述】:

我了解 Excel 有一个 TEXTJOINfunction,它允许将多个值显示为一个元组。

我也了解 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 中当前选定的单元格范围?

从 Base (Libreoffice) 中的宏中获取按钮

在 Basic 中计算自己的对数(LibreOffice Calc Macro)

如何检索输入字段的值并使用它来修改 LibreOffice Basic 宏中的占位符?

如何通过 LibreOffice 的 Calc 中的正则表达式语句捕获公司名称

LibreOffice Calc 中的脚本