Для того, чтобы отменить последнее изменение, совершенное перед выполнением макроса, достаточно использовать метод Undo объекта Application
Для того, чтобы приоставить выполнение макроса на определённое время, достаточно использовать метод Wait объекта Application.