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?

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


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.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.