| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Программирование, связанное с MS Office > как отменить макрос в Exel |
| Автор: sergei3000 20.4.2006, 12:37 |
| возможно ли сделать так, чтобы пользовательский макрос можно было отменить, как любое другое действие в MS Exel, путём нажатия на соответствующую кнопку? а то после запуска макроса эта кнопка засеривается, и отменить действие (как и предшествовавшие ему другие действия) невозможно |
| Автор: Naghual 20.4.2006, 12:45 |
| Правильно настроить безопасность Офиса. |
| Автор: likhobory 20.4.2006, 13:10 | ||
цитата из справки:
|
| Автор: Staruha 20.4.2006, 20:40 | ||
Нажми Еsc потом End. |
| Автор: sergei3000 21.4.2006, 05:49 |
настраивал на все возможные уровни безопасности макросов в параметрах экселя (если ты это имеешь в виду, если нет - поясни, пожалуйста). не помогает. это я читал. думал, что, может, всё-таки есть какой-то способ... Esc, по-моему, прерывает макрос в момент его выполнения. а что делать, если макрос уже выполнен? тогда нажатие Esc ни к чему не приводит |
| Автор: Дмит 21.4.2006, 08:16 |
| Для того чтобы иметь возможность отмены, код VBA должен отслеживать изменения, проведенные макросом. Макрос должен быть готов отменить внесенные изменения при выборе пользователем команды Правка-Отмена. Чтобы разрешить пользователю выполнять команду Правка-Отмена, воспользуйтесь методом OnUndo в качестве последнего оператора макроса. Этот метод позволяет указать текст, который отображается в опции меню Отмена, а также процедуру, вызываемую командой Правка=>Отмена. Например: Application.OnUndo "Последний макрос", "MyUndoMacro" В процедуре "MyUndoMacro" действия последнего макроса исправляются. В простейшем случае делается бэкап и восстанавливается полностью рабочий лист. |
| Автор: sergei3000 21.4.2006, 14:13 |
| Дмит, Спасибо! появляется ещё один нескромный вопрос. возможно ли сделать так, чтобы можно было отменить действия, предшествовавшие выполнению макроса. то есть чтобы как в экселе отменять можно было несколько последних операций, в том числе и макрос, и операции, произведённые до его выполнения? п.с. получается лишь отменять действия, произведённые после запуска макруса (ну и макрос тоже) |