Results 1 to 3 of 3

Thread: Por que a macro é executada quando troco de um documento Excel para outro?
Thanks Thanks: 0 Likes Likes: 0

  1. #1
    New Member
    Join Date
    Jul 2016
    Posts
    8
    Post Thanks / Like
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    Default Por que a macro é executada quando troco de um documento Excel para outro?

    (Posted originally in Brazilian Portuguese)

    Olá!

    Por favor, eu tenho um documento Excel no qual desenvolvi uma macro e quando estou com esse documento aberto e em seguida abro outro documento Excel, o que ocorre é que quando troco do primeiro documento (que tem a macro) para o outro documento (que não tem a macro) e volto, a macro no primeiro documento é executada. Isso está me atrapalhando, pois quando preciso adicionar dados que são usados para os cálculos executados pela macro, devido a ter desabilitado muitos elementos da tela do Excel para deixar com mais jeito de aplicação, tenho que toda vez entrar no modo de editor da macro (Alt F11) e desabilitar a parte da macro que esconde os menus, barras laterais, etc. da tela.
    O código que estou utilizando para remover esses elementos do Excel são os seguintes:

    1- Sub TelaMenu() - é a sub que transforma a tela do Excel numa tela com mais jeito de aplicação, removendo menus e barras laterais;

    Code:
    Sub TelaMenu()
    
    
        With Application
        
            .ScreenUpdating = False
            .EnableEvents = False
                
            .ExecuteExcel4Macro "SHOW.TOOLBAR(""Ribbon"",False)"
            .DisplayFormulaBar = False
            .DisplayStatusBar = False
            .Caption = "CSM TIME REPORT"
            
            With ActiveWindow
            
                .DisplayHorizontalScrollBar = False
                .DisplayVerticalScrollBar = False
                .DisplayWorkbookTabs = False
                .DisplayHeadings = False
                .DisplayGridlines = False
            
            End With
            
                .ScreenUpdating = True
                .EnableEvents = True
        
        End With
    
    
    End Sub
    2- Sub TelaNormal() - é a sub que volta para a tela do normal do Excel, restaurando os menus e barras laterais do Excel.

    Code:
    Sub TelaNormal()
    
    
        With Application
        
            .ScreenUpdating = False
            .EnableEvents = False
        
            .ExecuteExcel4Macro "SHOW.TOOLBAR(""Ribbon"",True)"
            .DisplayFormulaBar = True
            .DisplayStatusBar = True
            .Caption = ""
            
            With ActiveWindow
            
                .DisplayHorizontalScrollBar = True
                .DisplayVerticalScrollBar = True
                .DisplayWorkbookTabs = True
                .DisplayHeadings = True
                .DisplayGridlines = True
            
            End With
    
    
                .ScreenUpdating = True
                .EnableEvents = True
        
        End With
    
    
    End Sub
    3- Outras subs que chamam TelaMenu, TelaNormal, etc. Na ordem em que aparece no código, tenho os seguintes procedimentos em uso: Activate, BeforeClose, Deactivate, Open.

    Code:
    Option Explicit
    
    
    Private Sub Workbook_Activate()
    
    
        Call TelaMenu
    
    
    End Sub
    
    
    Private Sub Workbook_BeforeClose(Cancel As Boolean)
    
    
        Call TelaNormal
        ThisWorkbook.Save
    
    
    End Sub
    
    
    Private Sub Workbook_Deactivate()
    
    
    Call TelaNormal
    
    
    End Sub
    
    
    Private Sub Workbook_Open()
    
    
        Sheets("DATA").ScrollArea = "A1:S50"
        Call TelaMenu
    
    
    End Sub
    Agradeço a quem puder me ajuda com este tema. Obrigado.

  2. #2
    MrExcel MVP
    Join Date
    Aug 2010
    Location
    Rio de Janeiro BRAZIL
    Posts
    15,937
    Post Thanks / Like
    Mentioned
    17 Post(s)
    Tagged
    8 Thread(s)

    Default Re: Por que a macro é executada quando troco de um documento Excel para outro?

    Olá Luis Felipe,

    Quando você volta para esta pasta de trabalho (Workbook) o evento Workbook_Activate é disparado

    Code:
    Private Sub Workbook_Activate()
    
        Call TelaMenu
    
    End Sub
    E a macro TelaMenu é executada.

    Se você não quer que isto ocorra apague esta linha ou ponha um comentário (apóstrofo) na frente da linha.

    Espero que isto ajude.

    M.

  3. #3
    New Member
    Join Date
    Jul 2016
    Posts
    8
    Post Thanks / Like
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    Default Re: Por que a macro é executada quando troco de um documento Excel para outro?

    Olá Marcelo,

    De fato, com a sua orientação, funcionou. Eu fiz alguns testes na aplicação e notei somente um efeito colateral que é o aparecimento da Barra de Fórmulas quando abro um outro arquivo Excel. Mesmo que eu rode a macro TelaMenu novamente deixando a tela toda limpa, ao comutar de um workbook para outro, a Barra de Fórulas reaparece.

    Eu tentei cometar outras partes do código, mas não funcionou adequadamente. De qualquer forma, isso não atrapalha tanto como o que ocorria antes, assim é possível conviver com isso.

    Agradeço a sua valiosa ajuda no esclarecimento deste caso.

    Atenciosamente,

    Luis Felipe

Some videos you may like

User Tag List

Tags for this Thread

Like this thread? Share it with others

Like this thread? Share it with others

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •