Форум поддержки пользователей. LibreOffice, Apache OpenOffice, OpenOffice.org

Форум поддержки пользователей. LibreOffice, Apache OpenOffice, OpenOffice.org

21 Сентябрь 2018, 15:40 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
Новости: Доступно и просто о работе в офисных пакетах
 
   Начало   Помощь Поиск Войти Регистрация    задать вопрос  
Страниц: « 1 2   Вниз
  Печать  
Автор Тема: Сравнение массиов в макросе  (Прочитано 2633 раз)
0 Пользователей и 1 Гость смотрят эту тему.
joshua
Форумчанин
***
Offline Offline

Сообщений: 51



« Ответ #15: 2 Июнь 2017, 09:44 »

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

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

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


* SetDataArrayError.JPG (104.48 Кб, 1024x768 - просмотрено 10 раз.)
Записан
rami
Гуру
*******
Offline Offline

Пол: Мужской
Сообщений: 2 543


MacBook Pro, LibreOffice и Apache OpenOffice


« Ответ #16: 2 Июнь 2017, 10:05 »

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

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


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

joshua
Форумчанин
***
Offline Offline

Сообщений: 51



« Ответ #17: 2 Июнь 2017, 10:14 »

Диапазон ячеек это не одномерный массив, а массив массивов, поэтому и ругается.
И как мне тогда выгрузить одномерный массив в диапозон?
Записан
mikekaganski
Мастер
*****
Online Online

Пол: Мужской
Расположение: Хабаровск -> Москва
Сообщений: 1 020


« Ответ #18: 2 Июнь 2017, 10:17 »

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

С уважением,
Михаил Каганский
joshua
Форумчанин
***
Offline Offline

Сообщений: 51



« Ответ #19: 2 Июнь 2017, 10:25 »

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

Пол: Мужской
Расположение: Хабаровск -> Москва
Сообщений: 1 020


« Ответ #20: 2 Июнь 2017, 10:29 »

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

С уважением,
Михаил Каганский
joshua
Форумчанин
***
Offline Offline

Сообщений: 51



« Ответ #21: 2 Июнь 2017, 15:33 »

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


* OverflowError.JPG (114.84 Кб, 1024x768 - просмотрено 9 раз.)
Записан
mikekaganski
Мастер
*****
Online Online

Пол: Мужской
Расположение: Хабаровск -> Москва
Сообщений: 1 020


« Ответ #22: 2 Июнь 2017, 15:36 »

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

С уважением,
Михаил Каганский
joshua
Форумчанин
***
Offline Offline

Сообщений: 51



« Ответ #23: 2 Июнь 2017, 15:37 »

Переменные типа Integer могут содержать целочисленные значение от -32768 до 32767
Ах блин, вот я идиот. Спасибо!!
Записан
Страниц: « 1 2   Вверх
  Печать  
 
Перейти в:  

Powered by MySQL Powered by PHP Powered by SMF 1.1.21 | SMF © 2006-2009, Simple Machines Valid XHTML 1.0! Valid CSS!