Я не верю, что можно отменить действия, которые были выполнены с помощью кода VBA. Например, если я вручную переопределю значение в ячейке, то Edit> Undo позволит мне вернуться к предыдущему значению. Однако, если я использую код, который изменяет значение (Range ("a1") = "New Value"), я не могу отменить.
Что вы могли бы подумать, это добавить код в код GenerateMarkerOnSheet, в котором будут храниться адреса или диапазоны затронутых ячеек при каждом запуске. Возможно, вы можете хранить адреса / диапазоны в скрытом листе или в именованном диапазоне.
Тогда ваша подпрограмма ResetMarkerOnSheet просто изменит фон для сохраненных адресов / диапазонов.
В зависимости от того, как вы его кодируете, вы можете хранить несколько уровней «Отменить».