[CDR 2022] сбой интерфейса после работы макроса.

  • Автор темы Автор темы DukereD
  • Дата начала Дата начала

DukereD

макрософил
Топикстартер
Сообщения
502
Реакции
128
Иногда (не всегда, ошибка плавающая) после работы макроса бывает так, что при выделении объектов не обновляет интерфейс(т.е. поля размера неактивны и тп..)
как принудительно вывести корел из спячки?
иногда помогает Ctrl+Z но не всегда.
 
По моему это необратимо, у меня только через перезагрузку корела лечится
 
Обычно бывает после сбоев в работе макроса, в котором для ускорения работы отключены реакции интерфейса и т.п.
Я себе на кнопку посадил
Код:
Sub endd()
  EventsEnabled = True
  Optimization = False
  Refresh
End Sub
Можно ещё ActiveDocument.EndCommandGroup добавить и т.п.
 
Последнее редактирование:
  • Спасибо
Реакции: DukereD
Обычно бывает после сбоев в работе макроса, в котором для ускорения работы отключены реакции интерфейса и т.п.
Я себе на кнопку посадил
ну оптимизацию это понятно. после сбоя отключать можно
но дело в том, что такое бывает и после корректного выполнения макроса. макрос отработал без ошибок а интерфейс "замёрз"

я вот такую структуру использую

Код:
On Error GoTo errn
        Application.Optimization = True
        For Each s In os.Shapes
.
        Next s
errn:
        Application.Optimization = False
        Application.Refresh
но не помогает совсем.
 
Последнее редактирование:
Да EndCommandGroup помогло! Спасибо.
Есть у меня кнопка "лечилка" там такой код

Код:
    EventsEnabled = True
    Application.Optimization = False
    Application.Refresh
    DoEvents
    ActiveDocument.EndCommandGroup

вот только что добавил именно последнюю строчку.
т.е. получается что если объявить "логические скобки" для UNDO (ActiveDocument.BeginCommandGroup), то если их не закрыть интерфейс висит.
а когда закрываешь командой .EndCommandGroup
вроде отмирает.
 
Не помогло. отлаживал в очередной раз макрос . ловил ошибки и в какой-то момент интерфейс таки замер безвозвратно (((
 
иногда помогает просто создать/открыть новый документ, переключиться на него, а потом вернуться к прежнему.
 
  • Спасибо
Реакции: DukereD