Выбрать дату в календареВыбрать дату в календаре

Страницы: 1
Процедура, вызванная из Application.OnUndo повторно не устанавливает .OnUndo, так и должно быть?
 
Коллеги, добрый день.
Столкнулся со следующей проблемой, не могу понять - это "баг или фича"...
На листе есть некий макрос, который изменяет значение ячейки. Соответственно, после его применения история затирается, и приходится использовать 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
Помогите пожалуйста разобраться - так задумано, чтобы отмена работала только один раз, или я что-то неправильно делаю?
Изменено: tolstak - 18.10.2017 12:04:36
In GoTo we trust
Страницы: 1
Наверх