Коллеги, добрый день. Столкнулся со следующей проблемой, не могу понять - это "баг или фича"... На листе есть некий макрос, который изменяет значение ячейки. Соответственно, после его применения история затирается, и приходится использовать Application.onUndo для вызова макроса, возвращающего все к исходному состоянию.
Код
Sub makeSomeAction()
Sheets(1).Range("A1").Value = Sheets(1).Range("A1").Value + 1
Application.onUndo Text:="Revert", Procedure:="revertAction"
End Sub
Public Sub revertAction()
Sheets(1).Range("A1").Value = Sheets(1).Range("A1").Value - 1
End Sub
Все происходит так как запланировано, ячейка изменяет значение, при отмене вызывается макрос отмены. Отмена отрабатывает как должна, к предыдущему состоянию приводит. Т.к. действие основного макроса может быть выполнено несколько раз, хотелось сделать отмену тоже повторяемой. Т.е. после отмены действия, заново назначить макрос revertAction на кнопку отмены. (Пример утрированный, в реальном проекте - логика при которой заново назначается revertAction проходит доп. проверки). Но из тела revertAction установка .onUndo не происходит.
Код
Public Sub revertAction()
Sheets("actionSheet").Range("A1").Value = Sheets(1).Range("A1").Value - 1
' Назначение .onUndo не происходит
Application.onUndo Text:="Revert previous action", Procedure:="revertAction"
End Sub
Помогите пожалуйста разобраться - так задумано, чтобы отмена работала только один раз, или я что-то неправильно делаю?