Сравнение массиов в макросе

Автор joshua, 31 мая 2017, 10:43

0 Пользователи и 1 гость просматривают эту тему.

joshua

Уважаемые господа, никак не могу понять почему setDataArray не хочет выгружать массив в диапазон:
Имеется одномерный массив oResultData состоящий из 5 элементов.
Я хочу его выгрузить в диапазон "C1:C5"

oRange = oSheet.getCellRangeByName("C1:C5")
oRange.setDataArray(oResultData)

А вылетает ошибка:

rami

Цитата: joshua от  2 июня 2017, 07:44Уважаемые господа, никак не могу понять почему setDataArray не хочет выгружать массив в диапазон:
Имеется одномерный массив oResultData состоящий из 5 элементов.
Я хочу его выгрузить в диапазон "C1:C5"

Диапазон ячеек это не одномерный массив, а массив массивов, поэтому и ругается.


P.S. если вы продолжаете обсуждать макрос из другой темы, то не нужно было создавать новой темы (или приводить макрос полностью), а то не понятно что откуда берётся.

joshua

Цитата: rami от  2 июня 2017, 08:05Диапазон ячеек это не одномерный массив, а массив массивов, поэтому и ругается.
И как мне тогда выгрузить одномерный массив в диапозон?

mikekaganski

Просто в коде выше замените что-то вроде "oResultData(n) = oAllData1(i)(0)" на "oResultData(n) = oAllData1(i)" - то есть сразу формируйте массив массивов. Я просто делал не для дальнейшей выгрузки, каюсь. В тот день я вообще чудил :)
С уважением,
Михаил Каганский

joshua

Спасибо, сработало :)
Вот кстати все хотел спросить что вообще означает "(0)"?
Почему нельзя просто писать oAllData1(i) ?

mikekaganski

Каждый элемент этого массива - это строка, то есть массив ячеек. В данном случае эта строка содержит только одну ячейку, то есть в этом подмассиве только один элемент, но ведь мог бы быть и прямоугольный массив.
С уважением,
Михаил Каганский

joshua

Почему то если я меняю диапазон с 30000 на 40000, возникает ошибка переполнения?
В Массиве не может быть 40 000 элементов?

mikekaganski

https://infineconomics.blogspot.ru/2017/05/var-libreoffice-basic.html
Цитировать
Переменные типа Integer могут содержать целочисленные значение от -32768 до 32767
С уважением,
Михаил Каганский

joshua

Цитата: mikekaganski от  2 июня 2017, 13:36Переменные типа Integer могут содержать целочисленные значение от -32768 до 32767
Ах блин, вот я идиот. Спасибо!!