Я всегда сохраняю данные непосредственно перед запуском своих макросов (по крайней мере, во время тестирования), затем, если все идет в форме груши, я могу просто выйти без сохранения и снова открыть его.
Запекая его в настоящий макрос, вы должны будете в основном записывать старое состояние всего, что изменяется (содержимое ячейки, формулы, форматирование и т. Д.) В списке, а затем иметь макрос отмены, который воспроизводит этот список в обратном заказ.
Например, если ваш макрос изменяет содержимое ячейки C22 с «3» на «7» и форматирует с «общего» на «число, 2 десятичных знака), ваш список будет:
C22 value 3
C22 format general
Воспроизведение этого в обратном порядке (с другим макросом) отменит изменения.
У вас может быть целый дополнительный лист для хранения информации об отмене макросов, такой как:
Step Cell Type Value
---- ---- ----- -------
1 C22 value 3
C22 format general
2...
К сожалению, это не очень хорошо сочеталось бы с «настоящей» отменой, но я не думаю, что есть какой-то способ обойти это.