Excel VBA имеет эти Application.OnUndo
функция для обработки этого:
Public Sub DoSomething
... do stuff here
Application.OnUndo "Undo something", "UnDoSomething"
End Sub
Public Sub UnDoSomething
... reverse the action here
End Sub
Моя мысль довольно проста как первая строка в Вашем макро-сохранении, копия в резервном каталоге тогда закрывает ту рабочую книгу и вновь открыла оригинал. Если Вам не нравятся результаты Вашего макроса, выполняют, тянут сохраненную рабочую книгу. Сохранить это простым а?
Я всегда сохраняю сразу прежде, чем выполнить мои макросы (во время тестирования, по крайней мере) тогда, если все достигает угрожающих размеров, я могу просто выйти, не сохраняя и вновь открыть его.
Выпекание его в фактический макрос, у Вас будет к в основном рекордному старое состояние всего, что изменяется (содержание ячейки, формулы, форматируя и так далее) в списке тогда имеют макрос отмены, который воспроизводит тот список в обратном порядке.
, Например, если Ваш макрос изменяет ячейку содержание C22 с "3" до "7" и форматирующий от "общего" до "числа, 2 десятичных чисел), Ваш список был бы:
C22 value 3
C22 format general
Воспроизведение этого в обратном порядке (с другим макросом) вернулось бы изменения.
у Вас мог быть целый дополнительный лист для содержания макро-информации отмены, такой как:
Step Cell Type Value
---- ---- ----- -------
1 C22 value 3
C22 format general
2...
Это не интегрировалось бы очень хорошо с 'реальной' отменой, к сожалению, но я не думаю, что существует любой путь вокруг этого.