Пользовательские функции массива в Open Office Calc

Может ли кто-нибудь рассказать мне, как написать пользовательскую функцию в Open Office Basic для использования в Open Office Calc, которая возвращает массив значений. Примером одной из таких встроенных функций является MINVERSE. Мне нужно написать пользовательскую функцию, которая примерно таким же образом заполняет диапазон ячеек. Помощь будет высоко оценена.


person Flipping    schedule 07.04.2011    source источник


Ответы (2)


Да, я только что понял: все, что вы делаете, это возвращаете массив из своего макроса, НО вам также нужно нажать Ctrl+Shift+Enter при вводе формулы ячейки, чтобы вызвать вашу функцию (что также имеет место при работе с другими массивами в calc) . Вот пример:

Function MakeArray
  Dim ret(2,2)
  ret(0,0) = 1
  ret(1,0) = 2
  ret(0,1) = 3
  ret(1,1) = 4
  MakeArray = ret
End Function
person damjan    schedule 18.07.2011

FWIW, функция MakeArray damjan возвращает Variant, содержащий массив, я думаю. (Тип, возвращаемый MakeArray, не указан, поэтому по умолчанию он равен Variant. Variant — это контейнер с описательным заголовком, по-видимому, приведенный интерпретатором по мере необходимости.)

Почти, но не совсем то же самое, что и возврат массива. Согласно http://www.cpearson.com/excel/passingandreturningarrays.htm, Microsoft не вводила возможность возврата массива до 2000 года. Его пример [LoadNumbers(Low As Long, High As Long) As Long()] не компилируется в OO, помечая синтаксическую ошибку в скобках, следующих за Long. Похоже, что Basic OO эмулирует VBA до 2k.

person captain puget    schedule 22.05.2013