none
Comando para desfazer continuamente (Ctrl + Z) RRS feed

  • Pergunta

  • Olá pessoal. Tenho alterado a minha forma de criar planilhas, construindo-a a medida que os dados vão sendo inseridos. Tudo tem funcionado bem, mas tive um efeito colateral desagradável. Já que a cada dado inserido uma macro é executada, o Ctrl+Z deixa de funcionar (já que não é possível desfazer um procedimento). 

    Bem, como todas as modificações são registradas em uma plan auxiliar eu pensei em reprogramar o Ctrl+Z para aplicar a última modificação ocorrida. Mas isto é apenas em uma planilha específica. Nas outras eu gostaria que o Ctrl+Z funcionasse normalmente.

    Porém o comando Application.undo desfaz apenas uma vez. Ao executá-lo novamente ele refaz a ação que tinha desfeito. Assim a pergunta é:

    como programar o Ctrl+Z para ir desfazendo continuamente (como ocorre normalmente?). É possível? 

    Ah, ação de desfazer não gera nenhum comando durante a gravação de macros.

    Agradeço desde já, Michel Macário
    quarta-feira, 15 de outubro de 2014 15:01

Respostas

  • Michel, não é possível. Pelo fato de macros em VBA poderem alterar as entidades da aplicação em praticamente qualquer aspecto, o Excel limpa sua pilha de desfazer ações. É um grande efeito colateral de usar macros.

    Vale ressaltar que nem todas macros limpam essa pilha. Por exemplo, se você executar macros que não altere/apague/crie entidades numa pasta de trabalho/planilha/célula, o Excel não limpará a pilha de desfazer, como, por exemplo, exibir uma caixa de mensagem.


    Felipe Costa Gualberto - http://www.ambienteoffice.com.br

    sexta-feira, 17 de outubro de 2014 21:05
    Moderador

Todas as Respostas

  • Michel, 

    Boa tarde,

    Veja se o post abaixo esclarece sua dúvida.

    De ante mão, acredito que não seja possível.

    Desfazer ação VBA



    Roberto Santos


    quarta-feira, 15 de outubro de 2014 15:10
  • Olá Roberto, muito obrigado pela resposta, mas infelizmente não resolve meu problema. A dúvida é como fazer o Ctrl+Z ir desfazendo continuamente (como o bom e velho CtrL+Z, hahaha) ... mas achei interessante a ideia de salvar o estado original num local temporário para que seja executado posteriormente.

    Att. Michel Macário
    quarta-feira, 15 de outubro de 2014 15:39
  • Pois é, já tive essa necessidade, e acabei me convencendo que não dá pra fazer...

    Mas vou ficar acompanhando, vai que algum maluco consegue um jeito... rs



    Roberto Santos

    quarta-feira, 15 de outubro de 2014 15:51
  • Michel, não é possível. Pelo fato de macros em VBA poderem alterar as entidades da aplicação em praticamente qualquer aspecto, o Excel limpa sua pilha de desfazer ações. É um grande efeito colateral de usar macros.

    Vale ressaltar que nem todas macros limpam essa pilha. Por exemplo, se você executar macros que não altere/apague/crie entidades numa pasta de trabalho/planilha/célula, o Excel não limpará a pilha de desfazer, como, por exemplo, exibir uma caixa de mensagem.


    Felipe Costa Gualberto - http://www.ambienteoffice.com.br

    sexta-feira, 17 de outubro de 2014 21:05
    Moderador