【问题标题】:How do I return an array from an OpenOffice Basic function?如何从 OpenOffice Basic 函数返回数组?
【发布时间】:2015-03-22 04:11:27
【问题描述】:

我正在阅读OpenOffice regarding arrays 上的文档,似乎Calc 能够像Excel 一样使用数组函数。

为了测试这一点,我创建了一个简单的函数,它应该返回一个数组 {1, 2, 3}

Function Test()
    Dim Test(3) As Variant
    Test(1) = 1
    Test(2) = 2
    Test(3) = 3
End Function

当我用=Test() 填充一个单元格并按Ctrl+Shift+Enter 时,我只会得到一个包含3 的单元格。 12 在哪里?我做错了什么?

我正在运行OpenOffice 4.1.1

【问题讨论】:

  • 一些(大多数)BASIC 方言通过 byref,您可以使用它来更改子或函数中的数组

标签: arrays openoffice.org basic


【解决方案1】:

函数返回类型的维度必须在Function 语句中完成。如果函数应该返回一个数组,那么它必须被标注为Variant。没有办法直接将函数标注为数组类型。数组本身可以在函数体内单独创建,然后作为返回值赋给函数。

像这样:

Function Test() as Variant
    Dim arr_Test(1 to 3) As Integer
    arr_Test(1) = 1
    arr_Test(2) = 2
    arr_Test(3) = 3
    Test = arr_Test
End Function

或者,如果您希望它更短,您可以使用内置的 Array 函数,该函数返回一个包含数组的 Variant

像这样:

Function Test2() as Variant
    Test2 = Array(1,2,3)
End Function

openoffice-/libreoffice-/-BASIC 编程的文档:

https://wiki.openoffice.org/wiki/Documentation/BASIC_Guide

https://wiki.openoffice.org/wiki/Documentation/DevGuide/OpenOffice.org_Developers_Guide -> https://wiki.openoffice.org/wiki/Documentation/DevGuide/Basic/OpenOffice.org_Basic

但两者都没有完全参考 BASIC 基础知识 ;-),例如所有内置函数的参考。

https://help.libreoffice.org/Basic/Basic_Help -> https://help.libreoffice.org/Basic/Run-Time_Functions 似乎几乎完全。

【讨论】:

  • 太好了,最后一个问题:您是如何知道Array 函数的?我找不到OpenOffice BASIC 的参考资料...
  • 关于“变体”结果类型的好建议。我得到了带有宏的 XLS,其中一个在函数声明中产生了错误。结果类型被声明为“byte()”,这在 VBA 中是可以的。并且不适合“Starbasic”。在函数内部,分配给函数结果的“开放维度”数组。用“variant”替换“byte()”使宏工作。
猜你喜欢
  • 1970-01-01
  • 2011-05-14
  • 2022-10-01
  • 1970-01-01
  • 1970-01-01
  • 2012-06-17
相关资源
最近更新 更多