Добрый день. В LO Calc созданы несколько макросов, как за...

Автор ForumOOo (бот), 22 октября 2020, 07:49

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

ForumOOo (бот)

Компонент: Calc
Версия продукта: 5.x
Сборка: 4e471d8c02c9c90f512f7f9ead8875b57fcb1ec3
ОС: Win 10, Win 7

Добрый день.

В LO Calc созданы несколько макросов, как запустить один макрос из другого?

Как я понимаю в MSO происходит примерно так:
sub mac()
mac1
mac2
mac3
...
end sub

При попытках провернуть данный трюк в LO ошибки нет, но и нужный макрос не выполняется.

--
Подпись: Gorg

rami

Должно выполняться. Можете показать документ или простой образец документа с макросами которые не выполняются?

Gorg

Макрос:
Sub Main

If ThisComponent.Sheets(0).getCellByPosition(28, 5).Value < 7 Then
...
End If

Flak

End Sub

Отдельно Flak выполняется.
В макросе игнорируется.

rami

Вот так у вас выполняется:
Sub Main

Flak        'вызов макроса "Flak"

End Sub

Sub Flak

Print "Flak выполнился"

End Sub

Gorg

Цитата: rami от 22 октября 2020, 09:39
Вот так у вас выполняется:
Sub Main

Flak        'вызов макроса "Flak"

End Sub

Sub Flak

Print "Flak выполнился"

End Sub

Цитата: rami от 22 октября 2020, 09:39Вот так у вас выполняется:

В этом случае есть всплывающее окно, но сам макрос не выполняется.

rami

Цитата: Gorg от 22 октября 2020, 10:02В этом случае есть всплывающее окно, но сам макрос не выполняется.
Если есть "всплывающее окно", значит макрос вызывается и исполняется.

А если результат выполнения макроса не такой, какой вы ждёте, нужно смотреть на код.

Gorg

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

economist

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

Gorg

Цитата: economist от 22 октября 2020, 10:41Sub Macro1
...
Call Macro2
...
End sub

Ситуация та же, ошибок нет, LO все нравиться, но макрос не стартует

kompilainenn

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

economist

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

Gorg

Создал чистый документ и 2 макроса:
Module 1
Sub Main

Call Module2

End Sub


Module 2
Sub Main

ThisComponent.Sheets(0).getCellByPosition(0,0).SetValue (1)

End Sub


Собственно в А1 ничего не происходит.
Так же пробовал вместо Call Module2 использовать просто Module2, ситуация не меняется - все проходит, ошибок нет, макрос игнорируется.

Gorg

Цитата: economist от 22 октября 2020, 10:58Прогоните макрос по F8 - там наглядно видно переходы и Стек вызовов
По F8 вызывает только Main

Gorg

Всем большое спасибо!
Тема закрыта. Помогло при добавить .Main

Sub Main

Module2.Main

End Sub


и

Sub Main

ThisComponent.Sheets(0).getCellByPosition(0,0).SetValue (1)

End Sub

sokol92

Удобнее поддерживать уникальность имен макросов хотя бы внутри библиотеки.
Владимир.