none
Application.ScreenUpdating = False RRS feed

  • Pergunta

  • Olá novamente,

    Eu utilizei Application.ScreenUpdating = False e fechei com True, mas o resultado não foi o esperado e continuei vendo todas as operações e planilha que ele abre e fecha dentro da macro. Tirei a instrução TRUE de todas as macros e funcionou, mas depois voltou a mostrar as passagens.

    Pergunto: Eu tenho várias macros que chamam outras macros (modulos comuns), preciso colocar a FALSE e a TRUE em cada macro, mesmo a chamadas internamente em uma macro, ou posso usar apenas na Primeira macro que chama as outras e fechar no fechamento desta.

    Obrigado


    Rui Martins

    terça-feira, 2 de setembro de 2014 20:26

Respostas

  • Boa noite Rui.

    O problema de abrir e fechar simplesmente em cada Macro resulta exatamente nesse problema que citou: quando a segunda Macro terminar ela habilitará a atualização de tela, o que fará com que sua primeira função, após terminar a segunda, passe a executar no modo habilitado.

    Para evitar isso é bastante simples! Basta, antes de agir, verificar o status atual, ou seja, se já estiver desabilitada quando iniciar a função não deve-se fazer nada.

    Como exemplo, vc pode adicionar no início de cada Macro:

    Dim ScrUp as Boolean
    
    ScrUp = Application.ScreenUpdating          'Verifica a situação atual
    If ScrUp Then Application.ScreenUpdating = False


    E ao final da Macro:

    If ScrUp Then Application.ScreenUpdating = True

    Assim sua ação somente será desfeita quando a primeira função terminar.

    Abraço.


    Filipe Magno

    quarta-feira, 3 de setembro de 2014 01:50