Как отменить действие макроса excel
Argument ‘Topic id’ is null or empty
Сейчас на форуме
© Николай Павлов, Planetaexcel, 2006-2023
info@planetaexcel.ru
Использование любых материалов сайта допускается строго с указанием прямой ссылки на источник, упоминанием названия сайта, имени автора и неизменности исходного текста и иллюстраций.
| ООО «Планета Эксел» ИНН 7735603520 ОГРН 1147746834949 |
ИП Павлов Николай Владимирович ИНН 633015842586 ОГРНИП 310633031600071 |
Отмена всех действий макросом vba
Возможно ли макросом vba отменить действия совершенные руками? Есть файл с данными и много формул, результаты формул правятся вручную. Затем нужно все вернуть как было до правок. ctrl+z решает проблему, но это очень много кликов совершить надо)
Отслеживать
задан 12 авг 2019 в 5:08
57 1 1 серебряный знак 14 14 бронзовых знаков
Excel, что ли? не-а. Application.Undo отменяет только одно последнее действие, и то с выпендронами. Затем нужно все вернуть как было до правок. Сохранить до правок, потом, не сохраняя последнего состояния, перечитать файл (ещё очень способствует ReadOnly флаг на файле).
12 авг 2019 в 5:26
Да, эксель. Так и делаю, но перезапуск файла занимает с пол минуты, не хочется ждать, вот и ищу способы) Спасибо
12 авг 2019 в 5:33
Похоже на поиск костыля при неправильных действиях. результаты формул правятся вручную — это как? Замена части формул значениями?
12 авг 2019 в 5:38
да, замена значениями, потому что в данный момент нет четкого алгоритма работы, приходится некоторые значения подправлять вручную, в зависимости от разных показателей. Можно конечно их все в формулы вписать, но и долго и запутано в итоге получится)
12 авг 2019 в 5:43
Еще раз (поверьте опыту): Вы ведете себя к еще большим проблемам. Можно в формулах ставить проверки, ограничения, но нельзя заменять формулы значениями там, где должны работать формулы. Меняйте подход к работе с данными.
Метод Application.Undo (Excel)
Отменяет последнее действие пользовательского интерфейса.
Синтаксис
expression. Отменить
выражение: переменная, представляющая объект Application.
Примечания
Этот метод отменяет только последнее действие, предпринятое пользователем перед запуском макроса, и он должен быть первой строкой макроса. Его нельзя использовать для отмены команд Visual Basic.
Пример
В этом примере отменяется последнее действие пользовательского интерфейса. Пример должен быть первой строкой макроса.
Application.Undo
Поддержка и обратная связь
Есть вопросы или отзывы, касающиеся Office VBA или этой статьи? Руководство по другим способам получения поддержки и отправки отзывов см. в статье Поддержка Office VBA и обратная связь.
Обратная связь
Были ли сведения на этой странице полезными?
Обратная связь
Отправить и просмотреть отзыв по
Метод Application.Undo (Visio)
Отменяет последнюю единицу отмены, если единица отмены может быть отменена.
Синтаксис
expression. Отменить
выражение: переменная, представляющая объект Application.
Возвращаемое значение
Примечания
Используйте метод Undo для отмены действий по одной единице отмены за раз.
Количество вызовов метода Undo зависит от того, выполняется ли код в области открытого блока отмены. Код выполняется в области открытого блока отмены, если это:
- Макрос или надстройка, вызываемые пользовательским интерфейсом Microsoft Visio.
- В обработчике событий, реагирующего на событие Visio, отличное от события VisioIsIdle .
- В области отмены, созданной пользователем.
Если код не выполняется в области открытого блока отмены, он может вызвать метод Undo для каждого блока отмены в стеке отмены Visio. Можно задать максимальное количество единиц в стеке отмены (по умолчанию — 20) на вкладке Дополнительно диалогового окна Параметры Visio (перейдите на вкладку Файл и выберите пункт Параметры). Если количество вызовов метода Undo превышает количество единиц отмены в стеке, никаких действий не выполняется и метод Undo не вызывает исключения.
Если код выполняется в области открытого блока отмены, он может вызывать метод Undo один раз для каждой операции в блоке open undo. При наличии дополнительных вызовов метода Undo он создает исключение и не выполняет никаких действий. Например, если код в макросе выполняет две операции, он может вызвать метод Undo дважды. Если макрос вызывает метод Undo в третий раз, метод Undo создает исключение.
Код, вызывающий метод Undo из области единицы отмены, не может вызвать метод Redo для отмены действия. Метод Redo можно вызывать только при отсутствии открытых единиц отмены.
Метод Undo также вызывает исключение, если экземпляр Visio в настоящее время выполняет отмену или повтор. Чтобы определить, отменяется или повторно выполняется экземпляр Visio, используйте свойство IsUndoingOrRedoing .
Метод Undo можно вызвать из обработчика событий VisioIsIdle , так как событие VisioIsIdle может вызываться только в том случае, если свойство IsUndoingOrRedoing имеет значение False. Вы также можете вызвать метод Undo из кода, не вызываемого экземпляром Visio, например из кода, вызываемого из редактора Visual Basic или из внешней программы.
Большинство действий можно отменить, но не все. Используйте метод Redo , чтобы обратить вспять эффект метода Undo .
Пример
Этот макрос Microsoft Visual Basic для приложений (VBA) показывает, как отменить и повторить действия.
Public Sub Undo_Example() Dim vsoShape As Visio.Shape 'Draw a rectangle, use Undo to delete it, and 'then use Redo to redraw it. Set vsoShape = ActivePage.DrawRectangle(1, 5, 5, 1) 'Delete the shape. Visio.Application.Undo 'Bring it back. Visio.Application.Redo End Sub
Поддержка и обратная связь
Есть вопросы или отзывы, касающиеся Office VBA или этой статьи? Руководство по другим способам получения поддержки и отправки отзывов см. в статье Поддержка Office VBA и обратная связь.