[Calc] Проблема выделения текста

Автор eeigor, 14 августа 2021, 16:28

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

eeigor

Добрый день! Разместил тему на ask.libreoffice.org.
Если кому интересно, посмотрите, подскажите...

Проблема сброса атрибутов и выделения всего текста при использовании формулы (UDF) на одном листе. Это похоже на баг.
Прилагаемый пример специально разработан для решаемой задачи и представлен в упрощенном виде.
Ubuntu 18.04 LTS • LibreOffice 7.5.1.2 Community

kompilainenn

Поддержать разработчиков LibreOffice можно тут, а наш форум вот тут

eeigor

#2
@kompilainenn, мне нужно срочно найти решение, и я расширил круг участников (Cross posting). Ведь есть свой контингент завсегдатаев на каждом форуме. И ответы поступили быстро.
А в том, что это баг, я не уверен.
Но всё идёт к тому, что от изменений данных на листе из UDF надо в принципе отказаться, "довольствуясь", так сказать, только возвращаемым значением в ячейку. Если так, то мне придётся кое-что переделать у себя... Все так считают (вердикт окончательный)?
Ubuntu 18.04 LTS • LibreOffice 7.5.1.2 Community

eeigor

@mikekaganski, с диалогом по вашей ссылке и "плохой идеей" я ознакомился. Спасибо.
Ubuntu 18.04 LTS • LibreOffice 7.5.1.2 Community

sokol92

#4
Для справки: ограничения UDF-функций в Excel описаны здесь.

Общие для Calc и Excel ограничения UDF-функций - ничего не менять в документе! Более тонкий момент связан с чтением значений ячеек, которые не передаются UDF-функции как параметры. Последовательность перерасчета формул нам неизвестна, наша функция может вызываться несколько раз, соответственно, есть риск, что при "прямой" выборке диапазона ячеек мы используем не актуальные для данного вызова пользовательской функции значения ячеек (об этом написано в указанной выше ссылке).
Владимир.

eeigor

#5
@sokol92, спасибо за ссылку.

A user-defined function called by a formula in a worksheet cell cannot change the environment of Microsoft Excel. This means that such a function cannot do any of the following:
1. Insert, delete, or format cells on the spreadsheet.
2. Change another cell's value.
3. Move, rename, delete, or add sheets to a workbook.
4. Change any of the environment options, such as calculation mode or screen views.
5. Add names to a workbook.
6. Set properties or execute most methods.
Any environmental changes should be made through the use of a Visual Basic subroutine.


Ну, вот именно это я и делал (п. 1).  :)
Ubuntu 18.04 LTS • LibreOffice 7.5.1.2 Community