Respostas:
A resposta curta é que você não pode desfazer (suponho que isso é o que você quer dizer com revogar) as ações de uma macro. As decisões que ocorrem dentro da linguagem de programação podem ser problemáticas para o Excel reverter, portanto, há um estado geral "Não é possível desfazer" induzido pelo início da macro.
A resposta longa é que, se você antecipar a necessidade do Desfazer, seu código deve acomodar essa solicitação armazenando o estado anterior dos dados antes da execução. Essa é uma suposição muito ampla de que você está trabalhando com dados no VBA; A criação e manipulação diretas de arquivos podem ser mais complicadas, dependendo do que é executado.
John Walkenbach é um bom exemplo de armazenamento de dados para fornecer um futuro recurso de recuperação:
Usuários de computadores estão acostumados com a capacidade de "desfazer" uma operação. Quase todas as operações que você realiza no Excel podem ser desfeitas. Se você programar em VBA, talvez tenha se perguntado se é possível desfazer os efeitos de uma sub-rotina. A resposta é sim. A resposta qualificada é que nem sempre é fácil.
John Walkenbach, Spreadsheetpage.com
Eu acho que sua declaração de abertura é um pouco enganosa: para usuários não-codificadores, a resposta é "não, você não pode desfazer uma macro".
Sim, você pode desfazer todas as ações de uma macro. Esta é uma macro abaixo atribuída a um botão DO.
Sub do_while()
Dim num As Integer
num = 1
Do While num <= 12
Cells(num, 1) = num
num = num + 1
Loop
End Sub
The code below is assigned to an UNDO button.It uses ClearContents.
Dim num As Integer
num = 1
Do While num <= 12
Cells(num, 1).ClearContents
num = num + 1
Loop
End Sub
Use conteúdo claro.