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?

    
por frog 21.11.2012 / 08:38

2 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:

Computer users are accustomed to the ability to "undo" an operation. Almost every operation you perform in Excel can be undone. If you program in VBA, you may have wondered if it's possible to undo the effects of a subroutine. The answer is yes. The qualified answer is it's not always easy.

John Walkenbach, Spreadsheetpage.com

No entanto, acho que sua declaração de abertura é um pouco enganosa: para usuários que não usam codificação, a resposta é "não, você não pode desfazer uma macro".

    
por 21.11.2012 / 15:21
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.

    
por 12.08.2017 / 09:52