Cavalcante Consultores – treinamento e consultoria em finanças e Excel

Introdução Macros auto-executáveis

Cavalcante Consultores > Biblioteca de Excel > Introdução Macros auto-executáveis

O que são?

Macros auto-executáveis são macros que se executam automaticamente na ocorrência de um evento, como por exemplo: ao abrir um arquivo, ao selecionar uma planilha, ao selecionar uma célula e até mesmo em um horário pré-determinado. Esse evento pode ser uma ação promovida pelo usuário ou ser iniciado pelo próprio código.

Tipos de macros auto-executáveis

Sintaxe - Macros de arquivo

As macros de arquivo são escritas dentro da janela de código da pasta de trabalho. Para abrir a janela de código, clique duas vezes sobre o item dentro da pasta Microsoft Excel Objetos, dentro da janela Projeto no Editor do Visual Basic.

Private Sub Worksheet_[evento]([argumento])
  [procedimento]
End Sub

[argumentos] definem a ação a tomar após o fim do procedimento interno. Opcional.

[procedimento] pode ser um procedimento ou função armazenada em um módulo padrão.

Tipos comuns de [evento] de arquivo:

Sintaxe - Macros de planilha

As macros de planilha são escritas dentro da janela de código da planilha respectiva (Plan1, Plan2, etc.). Para abrir a janela de código, clique duas vezes sobre a planilha dentro da pasta Microsoft Excel Objetos, dentro da janela Projeto, no Editor do Visual Basic.

Private Sub Worksheet_[evento]([argumento])
  [procedimento]
End Sub

[argumento] informa o intervalo de células selecionado ou alterado.

[procedimento] pode ser um procedimento ou função armazenada em um módulo padrão.

Tipos comuns de [evento] de planilha:

Outros eventos

Todos os eventos possíveis dentro de uma pasta de trabalho ou planilha são listados clicando na setinha da janela de código. Confira no vídeo abaixo para saber como selecionar um evento e escrever um procedimento associado.

Exemplo

Neste exemplo, vamos mostrar um evento de arquivo (ao abrir o arquivo) e um evento de planilha (ao alterar um campo específico da planilha).

O evento Workbook Open foi escrito dentro da janela de código da pasta de trabalho PastaTeste. Ao abrir o arquivo a mensagem abaixo será exibida:

Veja a sintaxe que cria esta janela:

Private Sub Workbook_Open()
  MsgBox "Arquivo de exemplo de macros auto-executáveis"
End Sub

O evento Worksheet Change foi escrito dentro da janela de código da planilha Plan1 (Macros Auto Exe). Quando você digita seu nome no campo B5 o evento Worksheet Change é acionado. Usando o argumento Target podemos saber qual campo foi alterado. Se a célula B5 for alterada, a função Calculo é acionada e calcula o número de letras do nome digitado.

Veja a sintaxe do evento que chama a função cálculo:

Private Sub Worksheet_Change(ByVal Target As Range)

 Dim linha As Integer
 Dim coluna As Integer

 ' Usamos o argumento Target para saber qual campo foi alterado.
 coluna = Target.Column
 linha = Target.Row
 
 ' Executa a função calculo se campo B5 foi alterado.
 If (linha = 5 And coluna = 2) Then
  Calculo linha, coluna
 End If
 
End Sub

A função Calculo foi escrita dentro do Módulo1. Ela retorna o número de letras do nome digitado no campo B5. Veja a sintaxe abaixo:

Function Calculo(l, c)

 Dim nome As String
 Dim nletras As Integer
 
 nome = Sheets(1).Cells(l, c)    ' Leitura do nome digitado.
 nletras = Len(nome)             ' Conta o número de letras.
  
 ' Escreve o número de letras na célula B7.
  Sheets(1).Range("B7") = "Seu nome tem " & nletras amp; " letras"
 
End Function

Pratique!