Como revogar uma macro no Excel?

3

Após a execução de uma macro no Excel, não há nenhum botão para revogá-la, a menos que você feche o livro e escolha não salvá-lo.

Existe uma maneira simples e fácil de revogar isso?

frog
fonte

Respostas:

4

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".

Gary
fonte
Eu não entendo bem essa parte: "esta é 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".
frog
Se você está trabalhando apenas com dados em uma pasta de trabalho do Excel (por exemplo, texto, números, datas, fórmulas ...), a restauração do valor anterior é relativamente fácil, conforme o link da minha resposta. No entanto, o leque de coisas que você pode manipular com o VBA é muito grande, e você pode estar movendo arquivos pela rede, modificando o conteúdo de um disco rígido, convertendo formatos de arquivo e muito mais. Tentar fornecer um estado Desfazer para essas operações será trabalhoso. Viável embora.
Gary
Gary, estou trabalhando apenas com dados em pasta de trabalho do Excel, poderia ajudar em dar uma solução fácil para voltar da execução de uma macro?
frog
Para voltar de uma macro, você precisa gravar / escrever outra macro antes e provavelmente ter um bom conhecimento de trabalho do VBA.
Gary
, isso significa que eu tenho que escrever outra macro para cada nova macro que pretendo criar? Não há uma única macro pode ser criada para voltar de toda a execução da macro?
frog
0

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.

user760657
fonte