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

Luis Felipe

New Member
Joined
Jul 11, 2016
Messages
8
(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.
 

Marcelo Branco

MrExcel MVP
Joined
Aug 23, 2010
Messages
16,296
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.
 

Luis Felipe

New Member
Joined
Jul 11, 2016
Messages
8
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
 

Forum statistics

Threads
1,077,778
Messages
5,336,249
Members
399,072
Latest member
abublitz

Some videos you may like

This Week's Hot Topics

Top