SheetChange
Primeiro devemos criar um módulo de classe e renome-lo para AppEventCls.
1) Entre no VBA depois em Inserir>Módulo de classe
2) Click no módulo para seleciona-lo depois nas Propriedades do módulo altere o nome para AppEventCls
3) Ao final o resultado deve ser como a a imagem abaixo.
De um duplo click no módulo de classe, copie e cole o código abaixo.
1 2 3 4 5 6 7 |
Option Explicit 'Modulo de classe AppEventCls Public WithEvents myApp As Application Private Sub myApp_SheetChange(ByVal Sh As Object, ByVal Target As Range) MsgBox Sh.Name & "‚ célula" & Target.Address & _ "‚ foi alterada - Por Application" End Sub |
Pronto!!! Já expandimos esse evento para todo o objeto application, mas agora vamos precisar inicializar esse evento para que comece a ser utilizado, para isso vamos criar uma rotina em um módulo.
1) Entre no VBA depois em Inserir>Módulo
2) Ao final o resultado deve ser como a a imagem abaixo.
De um duplo click no módulo, copie e cole o código abaixo.
1 2 3 4 5 6 |
Option Explicit 'Declarando uma variavel que vai assumir os eventos do módulo Dim myAppCls As New AppEventCls Sub InitializeAppEvent() Set myAppCls.myApp = Application End Sub |
Execute o código acima e a cada vez que alternar entre uma planilha e outra no mesmo objeto application ou seja na mesma instancia desse Excel mas não se limitando a uma unica pasta de trabalho (workbook) sera exibida uma mensagem.
Nesse exemplo mostrei como dar o start manualmente por uma rotina, mas nada impede a execução por um evento padrão tipo open.
Clique aqui para baixar o arquivo desse passo a passo.