Como criar eventos de nível de aplicativo no Excel VBA

Índice:

Anonim

Os eventos de nível de aplicativo funcionam em todo o aplicativo (Excel nesta referência). Mas ativar o evento do aplicativo não é tão fácil quanto criar Workbook ou Worksheet Events. Mas garanto que não é tão complicado assim. Neste artigo, aprenderemos como criar e usar o Evento de aplicativo no Excel VBA em algumas etapas fáceis.

Etapa 1: criar um objeto de evento em um módulo de classe

Para criar um objeto de evento, precisamos usar o módulo de classe.

  • Insira um módulo de classe. Nomeie como quiser. Eu o chamei de MyAppEvents.
  • Defina uma variável de evento do tipo de aplicativo com a palavra-chave WithEvents.
    Privado WithEvents myApp como aplicativo
  • Inicialize este evento na sub-rotina class_initialize ().
    No menu suspenso à esquerda, selecione turma. Depois, no menu suspenso superior direito, selecione inicializar.

    Private Sub Class_Initialize () Set myApp = Application End Sub
  • Agora defina os eventos que deseja usar. No menu suspenso superior esquerdo, selecione o objeto de evento. Todos os procedimentos de tratamento de eventos disponíveis estarão disponíveis para você no menu suspenso superior direito. Selecione o que for necessário e defina o que deseja fazer quando o evento for disparado.
    Eu uso o evento SheetActivate. Sempre que um usuário alternar entre as planilhas de qualquer pasta de trabalho aberta, ele mostrará o nome da pasta de trabalho e a pasta que o usuário selecionou.

    Private Sub myApp_SheetActivate (ByVal Sh As Object) MsgBox ActiveWorkbook.Name & "-" & Sh.Name End Sub 

Você pode definir quantos eventos você deseja definir aqui.

Os eventos não começarão a funcionar imediatamente. Esse foi o primeiro passo. Por ser um módulo de classe, precisamos criar um objeto dele para ativar os eventos.

Agora, só precisamos iniciar esses eventos a partir de uma sub-rotina normal.

Etapa 2: Criar uma sub-rotina de início de evento no módulo normal

Agora temos uma aula de eventos. Precisamos apenas criar um objeto dessa classe e inicializá-lo. Assim que executarmos esta sub-rotina, todos os eventos definidos na classe de eventos começarão a funcionar.

  • Insira um módulo normal.
  • Defina uma variável da classe que você criou.
    AppE privado como MyAppEvents
  • Inicialize-o em uma sub-rotina. Você pode nomeá-lo como quiser.
    Private Sub StartEvents () Set AppE = New MyAppEvents End Sub
  • Execute este código usando a tecla F5. Opcionalmente, você pode atribuir esta macro a um botão na planilha se desejar iniciar os eventos a partir da planilha.

E está feito. Agora, sempre que você trocar de planilha, uma caixa de mensagem aparecerá com o nome da planilha e da planilha, desde que o código que contém a planilha esteja aberto.

Foi difícil? Acho que não. Deixe-me saber o que você pensa na seção de comentários abaixo.

Ativando e desativando eventos de aplicativos VBA

Depois de executar a macro no módulo normal, ela sempre será disparada até que você feche a pasta de trabalho que contém os eventos. Mas você pode querer que eles os liguem e desliguem à sua vontade. Existem duas maneiras de fazer isso.

  • Anular o objeto de evento
  • Defina EnableEvents como False

1. Anulando o objeto de evento

Em uma sub-rotina separada, defina o objeto de evento como Nothing

Private Sub StopEvents () Definir AppE = Nothing End Sub

Depois de executar este código, os eventos irão parar de funcionar. Você pode colocá-lo em um botão na planilha para interromper os eventos. Agora você terá dois botões para iniciar e parar esses eventos específicos. Ele apenas interromperá os eventos criados pelo objeto AppE.

2. Defina EnableEvents como False

O segundo método é desabilitar os eventos. Para tornar todos os eventos impossíveis de capturar, definimos a propriedade EnableEvents da classe Application como Falso.

Private Sub StopEvents () Application.EnableEvents = False End Sub

O código acima irá desabilitar todos os eventos. Mesmo os eventos padrão do Excel. Eles não funcionarão até que você os reinicie. Mesmo se você executar a sub-rotina StartEvents () (acima), o evento não funcionará. Para que todos os eventos voltem a funcionar, você terá que configurar novamente a propriedade EnableEvents para True.

Portanto, se você deseja que seus eventos funcionem sempre que iniciá-los, adicione esta linha de código no sub.

Private Sub StartEvents () Application.EnableEvents = True Set AppE = New MyAppEvents End Sub

Iniciando eventos de aplicativo Custome toda vez que a pasta de trabalho é aberta

Se você estiver desenvolvendo uma ferramenta para o usuário final, pode querer que os eventos funcionem automaticamente. Nesse caso, você pode colocar o iniciador de evento no objeto Workbook com o evento Workbook_open (), em vez de em um módulo normal. Isso fará com que seu objeto de evento seja inicializado assim que você abrir a pasta de trabalho que contém os eventos.

Então sim pessoal, é assim que você pode usar o evento de aplicativo no excel. Deixe-me saber se isso foi explicativo o suficiente e ajudou a entender os eventos de nível de aplicativo no Excel VBA na seção de comentários abaixo. Se você tem algo a acrescentar, anote também. Você pode fazer suas perguntas relacionadas a este artigo ou qualquer outro tópico relacionado ao Excel VBA na seção de comentários abaixo.

Baixe o arquivo de trabalho abaixo:

Os eventos no Excel VBA | Existem sete tipos de eventos no Excel. Cada evento trata de um escopo diferente. O evento de aplicativo lida com o nível da pasta de trabalho. Livro de exercícios no nível das folhas. Planilha de eventos no nível de alcance.

Os eventos de planilha no Excel VBASubmeter comentários Causa Os eventos de planilha são realmente úteis quando você deseja que suas macros sejam executadas quando um evento especificado ocorrer na planilha.

Eventos de pasta de trabalho usando VBA no Microsoft Excel | Os eventos da pasta de trabalho funcionam em toda a pasta de trabalho. Como todas as planilhas fazem parte da pasta de trabalho, esses eventos também funcionam nelas.

Impedir que uma automacro / eventmacro seja executada usando VBA no Microsoft Excel| Para evitar a execução da macro auto_open, use a tecla shift.

Eventos de objeto de gráfico usando VBA no Microsoft Excel| Os gráficos são objetos complexos e há vários componentes que você anexa a eles. Para fazer os Eventos do Gráfico usamos o módulo Class.

Artigos populares:

50 atalhos do Excel para aumentar sua produtividade | Torne sua tarefa mais rápida. Esses 50 atalhos tornarão seu trabalho ainda mais rápido no Excel.

A função VLOOKUP no Excel | Esta é uma das funções mais usadas e populares do Excel, que é usada para pesquisar valores em diferentes intervalos e planilhas.

CONT.SE no Excel 2016 | Conte valores com condições usando esta função incrível. Você não precisa filtrar seus dados para contar um valor específico. A função Countif é essencial para preparar seu painel.

Como usar a função SUMIF no Excel | Esta é outra função essencial do painel. Isso ajuda você a somar valores em condições específicas.