Blog

Postado em em 11 de abril de 2019

Evento Change no VBA – Como Usar?

Você já ouviu falar em evento change no VBA? Sabe o que é ou como ele pode te ajudar nas suas automações dentro do Excel?

Caso prefira o conteúdo de Eventos no VBA no formato de vídeo-aula clique nesse link!

O que são eventos Change VBA?

São acontecimentos no VBA e sempre que ele ocorre ele implica em uma ação, ou seja, podemos dizer que é causa e consequência, se ocorrer um evento teremos uma consequência para ele. Desta forma, podemos automatizar alguns processos. Então, sempre que ocorrer uma ação o Excel automaticamente nos dará a consequência dela.

Quando utilizar evento Change no VBA?

Neste caso, vamos utilizar esses eventos para automatizar uma planilha de ponto de funcionários, ou seja, sempre que um funcionário chegar ele terá que colocar um “X” na coluna de entrada para que o Excel nos retorne o dia e a hora em que este funcionário chegou ao trabalho.

Neste caso esse “X” será nosso evento, e a consequência para ele é escrever em uma célula a data e hora em que o funcionário chegou ao trabalho. Desta forma podemos automatizar o processo, e assim evitar que cada pessoa tenha que escrever manualmente seus horários.

eventos vba como usar o evento change vba excel 1

Como utilizar o evento Change VBA?

Para começar a programação em VBA é necessário abrirmos o ambiente VBA, para isso podemos utilizar o atalho ALT + F11 (ou ALT + Fn + F11 se a primeira opção não funcionar). Feito isso teremos o ambiente VBA aberto para começarmos.

eventos vba como usar o evento change vba excel 2

Para os eventos do VBA iremos selecionar com um clique duplo a opção de Planilha1 dentro da aba Projeto – VBAProject.Essa Planilha1 se refere a aba Planilha1 que é onde iremos fazer o código de evento. Feito isso será aberta um caixa para podermos escrever o código.

eventos vba como usar o evento change vba excel 3

Para fazermos um evento no VBA teremos que ir na parte superior da janela branca que abriu e clicar em Geral. Feito isso será aberta uma lista de opções e devemos selecionar a opção Worksheet.

eventos vba como usar o evento change vba excel 4

O próximo passo é selecionar a opção Change ao lado de onde alteramos de Geral para Worksheet.

Evento change no vba

Feito isso teremos dois códigos iniciados o primeiro é o do evento Change e o segundo é do evento SelectionChange, que foi o inicialmente gerado. Este segundo código podemos apagar e ficar apenas com o primeiro.

Private Sub Worksheet_Change(ByVal Target as Range)

End Sub

Private Sub Worksheet_selectionChange(ByVal Target as Range)

End Sub

O código agora será escrito entre o Private Sub e o End Sub.

Algo muito importante quando tratamos de evento é o Target. O Target se refere à última célula que foi alterada dentro do Excel, isto é, se eu colocar um “x” na célula B2, o meu Target passa a ser a célula B2.

Iremos iniciar o código com a estrutura If, que traduzida do inglês significa “se”, então teremos que se algo acontecer iremos executar uma ação. Neste caso, iremos verificar o intervalo do nosso Target (que será o nosso alvo do evento). Para nós, só faz sentido realizar o nossos código se a célula que for alterada dentro do excel estiver entre as linhas 3 e 8 e na coluna C. Então, para indicarmos esse intervalo do Target para o VBA devemos dizer que a linha deve ser maior ou igual a 3 e menor ou igual a 8, e também que está na coluna C (que é a terceira coluna). Este intervalo corresponde ao intervalo da nossa entrada que será marcada com o “X”, ou seja, esse intervalo vai da célula C3 até a célula C8.

Feito isso teremos o seguinte código:

Private Sub Worksheet_Change(ByVal Target as Range)

If Target.Row >= 3 And Target.row <= 8 And Tanget.Column = 3 then

Abaixo iremos explicar o que significa cada parte deste código inicial.

If – é a função se, então temos que se aquelas condições forem verdadeiras o código irá executar o que tem dentro desta função, caso contrário irá pular o código dentro do If.

Then – é o equivalente ao então no português. Isso significa que se a condição do If for verdadeira então irá executar o código dentro da função If.

Target.Row – é o nosso alvo, no entanto estamos extraindo somente a linha (row).

Target.Column – é a mesma indicação do nosso alvo, no entanto está relacionado a coluna (column) dele.

And – é a função E. Como temos três condições com essa função isso significa que essas condições devem ser satisfeitas ao mesmo tempo, desta forma o intervalo irá ficar entre as células C3 e C8.

Em seguida, iremos dizer ao Excel o que fazer se nossas condições forem atendidas. Neste caso iremos colocar a data e hora que o funcionário chegou na coluna ao lado, ou seja, na coluna D.

Private Sub Worksheet_Change(ByVal Target as Range)

If Target.Row >= 3 And Target.row <= 8 And Tanget.Column = 3 then
	Cells(Target.Row, Target.Column + 1) = Now
End If

End Sub

Abaixo teremos a explicação de cada função no restante do código:

Cells – é a função que seleciona uma célula. Essa função precisa de dois argumentos: o primeiro é a linha e o segundo é a coluna. Como vamos fazer uma modificação na mesma linha podemos manter a mesma linha do nosso target que é Target.Row, no entanto nossa coluna agora será a coluna D, portanto teremos que colocar o Target.Column + 1, pois vamos colocar a data e hora na coluna ao lado.

Now – é a função AGORA do Excel, que indica a data e o horário atual na célula.

End If – é a indicação para finalizar a função If.

Então, agora temos que toda vez que uma causa alterar o nosso target teremos uma consequência na coluna D que é a data e hora de entrada do funcionário.

Para testarmos iremos colocar “X” em qualquer lugar do nosso target e iremos observar o resultado na coluna D, na mesma linha em que foi colocado nosso “X”.

eventos vba como usar o evento change vba excel 9

Essa função é muito útil para automatizar procedimentos como este, portanto o usuário não irá perder tempo tendo que escrever manualmente ou mesmo escrever a fórmula AGORA dentro de cada célula para indicar a hora que chegou.

Então, é possível utilizar essa mesma função para diversas atividades que ao modificar um valor em um intervalo já temos uma resposta automática em uma outra célula.

Hashtag Treinamentos

Para acessar outras publicações de VBA, clique aqui!


Quer aprender mais sobre VBA com um minicurso básico gratuito?