Estrutura If … Then (ElseIf, Else, End If) e Operadores Comparativos no VBA

O Pessoal!

Neste post vou falar da estrutura If…Then, que usamos para testar condições lógicas. Com certeza, essa é a parte do VBA que mais usei até hoje para automatizar minhas tarefas em Controladoria e Finanças!

Com esta estrutura podemos efetuar comparações entre os valores de duas ou mais variáveis, determinando no código que o VBA execute Funções ou comandos a partir do resultado de um teste lógico.

Podemos, por exemplo, determinar que o VBA formate o fundo de uma célula com vermelho, caso o valor preenchido nesta célula seja menor que zero.

 

A tabela abaixo contém operadores comparativos que podemos usar nessa estrutura.

 

Exemplo de código:

 

Sub Estrutura_If_Then()

‘ Declaração de variáveis.

Dim x As Integer

Dim y As Integer

x = 5

y = 3

‘ Teste lógico.

If x > y Then

‘ Comandos a serem executados quando x for maior que y.

MsgBox “x é maior que y.”

Else

‘ Comandos a serem executados quando x for menor ou igual a y.

MsgBox “x é menor que y.”

End If

End Sub

 

A estrutura acima é formada por um único teste lógico: x > y. Se esta condição for atendida, o VBA mostrará a mensagem “x é maior que y”. Caso contrário, mostrará a mensagem “x é menor que y”, independentemente do valor de x.

Neste exemplo, sendo x igual a y, teremos um problema, pois ambas mensagens não corresponderão ao resultado correto. Aqui, o ideal seria trabalharmos com três hipóteses: x > y, x < y ou x = y. No entanto, precisaríamos incluir mais uma condição à estrutura…

E o que é interessante e que justifica a utilização desta estrutura na criação de planilhas inteligentes, com validações, cálculos, formatações etc. complexos, é que podemos efetuar quantos testes forem necessários. Para isso, basta incluirmos testes adicionais utilizando ElseIf na estrutura.

 

Concluindo, quando trabalhamos com testes lógicos, utilizamos If (no primeiro teste), ElseIf (nos testes intermediários) e Else, por último, para cobrir todas as possibilidades de resultados diferentes dos esperados nos testes efetuados.

Para melhor entender o significado do Else, podemos dizer que sempre que os testes lógicos da estrutura não forem atendidos, o VBA executará os comandos após o Else.

Podemos exemplificar, alterando o código anterior da seguinte forma:

Sub Estrutura_If_Then()

‘ Declaração de variáveis.

Dim x As Integer

Dim y As Integer

x = 5

y = 3

‘ Teste lógico.

If x > y Then

‘ Comandos a serem executados quando x for maior que y.

MsgBox “x é maior que y.”

ElseIf x < y Then

‘ Comandos a serem executados quando x for menor que y.

MsgBox “x é menor que y.”

Else

‘ Comandos a serem executados quando x assumir qualquer outro valor.

MsgBox “x não é maior nem menor que y.”

End If

End Sub

Como sabemos que x só pode assumir três valores distintos em relação a y, poderíamos substituir o Else por ElseIf x = y Then.

Importante: para que o VBA entenda essa estrutura, ela deve conter obrigatoriamente If (teste lógico) Then e End If. Os intermediários ElseIf e Else podem ser usados de acordo com suas necessidades de testes lógicos, mas não são obrigatórios!

Abs, Dr. E

P.S. Gostaria de pedir desculpas, mas infelizmente não estou conseguindo responder todos os e-mails com dúvidas que venho recebendo. Por isso, peço que não usem o espaço de comentários do post para enviar dúvidas.

Deixe uma resposta

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s