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.
 

Excel Facts

How to find 2nd largest value in a column?
MAX finds the largest value. =LARGE(A:A,2) will find the second largest. =SMALL(A:A,3) will find the third smallest
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.
 
Upvote 0
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
 
Upvote 0

Forum statistics

Threads
1,213,504
Messages
6,114,020
Members
448,543
Latest member
MartinLarkin

We've detected that you are using an adblocker.

We have a great community of people providing Excel help here, but the hosting costs are enormous. You can help keep this site running by allowing ads on MrExcel.com.
Allow Ads at MrExcel

Which adblocker are you using?

Disable AdBlock

Follow these easy steps to disable AdBlock

1)Click on the icon in the browser’s toolbar.
2)Click on the icon in the browser’s toolbar.
2)Click on the "Pause on this site" option.
Go back

Disable AdBlock Plus

Follow these easy steps to disable AdBlock Plus

1)Click on the icon in the browser’s toolbar.
2)Click on the toggle to disable it for "mrexcel.com".
Go back

Disable uBlock Origin

Follow these easy steps to disable uBlock Origin

1)Click on the icon in the browser’s toolbar.
2)Click on the "Power" button.
3)Click on the "Refresh" button.
Go back

Disable uBlock

Follow these easy steps to disable uBlock

1)Click on the icon in the browser’s toolbar.
2)Click on the "Power" button.
3)Click on the "Refresh" button.
Go back
Back
Top