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

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

24 Июнь 2019, 19:19 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
Новости: Часто задаваемые вопросы по LibreOffice и Apache OpenOffice.org
 
   Начало   Помощь Поиск Войти Регистрация    задать вопрос  
Страниц: 1   Вниз
  Печать  
Автор Тема: Ошибка #МАКРОС? при отображение результата формулы  (Прочитано 2656 раз)
0 Пользователей и 1 Гость смотрят эту тему.
Aleksandr H.
Форумчанин
***
Offline Offline

Пол: Мужской
Расположение: Wild West Ukraine
Сообщений: 96

glory to nation


WWW
« Стартовое сообщение: 6 Сентябрь 2016, 10:42 »

в результате работы кода
Код:
oSheet.GetCellByPosition(3,oRowCount).formula = "=ceiling(sumif(S$1:S$" & oRowCount & ";""" & "1" & """;D$1:D$" & oRowCount & ")/90*1.3;10;1)"
oSheet.GetCellByPosition(3, oRowCount).NumberFormat = 1
в ячейке Dx получаю значение "#МАКРОС?"
Если нажать "Помощник по функциям" то в окне результат отображается нормально.


В чем может быть проблема?


* ATT.jpg (150.92 Кб, 837x651 - просмотрено 25 раз.)
Записан
rami
Гуру
*******
Offline Offline

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


MacBook Pro, LibreOffice и Apache OpenOffice


« Ответ #1: 6 Сентябрь 2016, 11:19 »

Вы наверно оформили этот код как функцию? В открываемом документе функции выполняются раньше, чем загружается библиотека макросов.
Записан

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

Сообщений: 978


« Ответ #2: 6 Сентябрь 2016, 11:27 »

И пользовательские функции не работают в OpenOffice Calc. А в LibreOffice - работают.
Записан

Руб. за сто, что Питоньяк
Любит водку и коньяк!
Потому что мне, без оных, -
Не понять его никак...
rami
Гуру
*******
Offline Offline

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


MacBook Pro, LibreOffice и Apache OpenOffice


« Ответ #3: 6 Сентябрь 2016, 12:00 »

Вы наверно оформили этот код как функцию? В открываемом документе функции выполняются раньше, чем загружается библиотека макросов.
Не угадал с первой попытки Грустный

Вторая попытка: назначаете макрос на открытие документа?
Записан

Aleksandr H.
Форумчанин
***
Offline Offline

Пол: Мужской
Расположение: Wild West Ukraine
Сообщений: 96

glory to nation


WWW
« Ответ #4: 6 Сентябрь 2016, 12:08 »

LibreOffice 5.0.6.3

это не UDF!

есть у меня макрос Upakowanie , который запускается с листа "Упак38", и делает разделение целого на составные части. Например: изделие 021 выпустили 1440 шт с разбитием посменно (см. скрин верхняя часть)
и теперь это изделие надо спаковать в разные модели (090N (468 шт), 090 (432 шт), 6185(540 шт)). Макрос разделит на нужное количество. (см. скрин нижняя часть. строки 18-21).

Вот в конце работы макроса и вставляется формула.



* ATT.jpg (123.6 Кб, 832x471 - просмотрено 17 раз.)
* TydzieńAP nowy nr 38.ods (320.06 Кб - загружено 8 раз.)
Записан
economist
Форумчанин
***
Offline Offline

Сообщений: 978


« Ответ #5: 6 Сентябрь 2016, 12:48 »

Почему бы не пересчитать нужное в самом коде, тем более что функции ceiling и sumif легко реализуются перебором ячеек в цикле? Обратите внимание на несвежий LibreOffice. Я после линейки 5.0. забраковал многие ранее работавшие методы.

Видимо у вас циклическа ссылка, только они могут давать такие непонятки.
Вот этот код работает (+ см. файл)

Код:
Sub Main
oSheet=ThisComponent.Sheets.getByName("Лист1")
oRowCount=5
oSheet.GetCellByPosition(3, oRowCount-4).formula = "=ceiling(sumif(E$2:E$" & oRowCount & ";""" & "1" & """;D$2:D$" & oRowCount & ")/90*1.3;10;1)"
oSheet.GetCellByPosition(3, oRowCount-4).NumberFormat = 1
End Sub

* ГдеТоЦиклическаяСсылка.ods (9.91 Кб - загружено 7 раз.)
Записан

Руб. за сто, что Питоньяк
Любит водку и коньяк!
Потому что мне, без оных, -
Не понять его никак...
Aleksandr H.
Форумчанин
***
Offline Offline

Пол: Мужской
Расположение: Wild West Ukraine
Сообщений: 96

glory to nation


WWW
« Ответ #6: 6 Сентябрь 2016, 13:11 »

Обратите внимание на несвежий LibreOffice.
Имел проблемы с новыми сборками

Код:
oSheet.GetCellByPosition(3,oRowCount).formula = "=ceiling(sumif(S$1:S$" & oRowCount & ";""" & "1" & """;D$1:D$" & oRowCount & ")/90*1.3;10;1)"
зациклить можно только при использования oRowCount. Но как? В GetCellPosition как строку назначения получу oRowCount+1 строку(считаем с 1), а в формуле будет строка №oRowCount.




Записан
rami
Гуру
*******
Offline Offline

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


MacBook Pro, LibreOffice и Apache OpenOffice


« Ответ #7: 6 Сентябрь 2016, 13:22 »

Вот в конце работы макроса и вставляется формула.
И причём совершенно без проблем.

Пробовал на LibreOffice 5.0.6 и LibreOffice 4.4.7 и Apache OpenOffice 4.1.1. Ни разу не выскочил #МАКРОС?.
Записан

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

Сообщений: 978


« Ответ #8: 6 Сентябрь 2016, 13:27 »

Если был бы весь код - можно было бы понять где возникает ошибка.
Записан

Руб. за сто, что Питоньяк
Любит водку и коньяк!
Потому что мне, без оных, -
Не понять его никак...
rami
Гуру
*******
Offline Offline

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


MacBook Pro, LibreOffice и Apache OpenOffice


« Ответ #9: 6 Сентябрь 2016, 13:31 »

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

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

Сообщений: 978


« Ответ #10: 6 Сентябрь 2016, 13:50 »

Пошел, умылся кружечкой кофе. Попробовал - макрос отработал за 2 минуты, ошибок вообще никаких нет.
LO 5204 Portable с Portableapps.com. Использую его в продакшене, видимо сборщики игнорят какие-то минорные релизы, или у них чутье - еще не было такого, чтобы получалось совсем нерабочее Portable-решение.
Могу посоветовать попробовать его, благо что он ничего не испортит.   

И еще грустно немного стало: на VBA код был бы в 4 раза компактнее и понятнее.
Если задумываете переписывать, в верх модуля надо добавить и выполнить один раз Startonce - после этого даже пользовательские UDF  и что-то вида Apllication.Clean начинают работать. Причем можно гонять смесь Starbasic+VBA.

Код:
Option VBASupport 1
Option Compatible
'-----------------------------------------------
Sub Startonce
ThisComponent.BasicLibraries.VBACompatibilityMode=true 
End sub

Sub Upakowka
'
End sub
Записан

Руб. за сто, что Питоньяк
Любит водку и коньяк!
Потому что мне, без оных, -
Не понять его никак...
Страниц: 1   Вверх
  Печать  
 
Перейти в:  

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