NUNCA MAIS PASSE RAIVA POR NÃO CONSEGUIR RESOLVER UM PROBLEMA COM O EXCEL - GARANTIDO!

UNIVERSIDADE DO VBA - Domine o VBA no Excel Criando Sistemas Completos - Passo a Passo - CLIQUE AQUI

Quer Receber Novidades e E-books Gratuitos de Excel? * Junte-se a mais de 103.000 pessoas!

Curso Grátis de Excel Avançado - Módulo 5 - Lição: Estruturas If... Then... Else If e Select Case

120 Lições | Gratuito Online | Autor: Júlio Battisti


Em um primeiro grupo, temos as chamadas estruturas de decisão. São estruturas que realizam um teste lógico, e executam determinados comandos quando o teste resultar verdadeiro, ou um conjunto diferente de comandos, quando o teste resultar falso. Agora passaremos a analisar as estruturas de decisão, disponíveis no VBA.

A estrutura If ... Then

A estrutura If...Then, é uma das estruturas de decisão mais conhecidas. Toda linguagem de programação implementa esta estrutura. É utilizada para executar determinados comandos, caso uma condição seja verdadeira. A forma geral desta estrutura é a seguinte:

If condição Then
   Comando1
   Comando2
   ...
   Comandon
End If.

Uma condição é testada, caso a condição seja verdadeira, um ou mais comandos podem ser executados. Considere o exemplo a seguir:

Dim x, y
x=10
y=15
If x<y Then
   MsgBox "x é menor do que y"
End If

Neste exemplo, a mensagem " x é menor do que y", será exibida, uma vez que o teste x<y é verdadeiro, conforme podemos constatar pelos valores atribuídos as variáveis x e y.

A estrutura If ... Then...Else

A estrutura If...Then...Else, acrescenta mais uma possibilidade a estrutura If...Then. É utilizada para executar determinados comandos, caso uma condição seja verdadeira, ou um conjunto diferente de comandos, caso a condição seja falsa. A forma geral desta estrutura é a seguinte:

If condição Then
   Comando1
   Comando2
   ...
   Comandon
Else
   Comando1
   Comando2
   ...
   Comandon
End If

Uma condição é testada, caso a condição seja verdadeira, um determinado comando, ou conjunto de comandos será executado; caso a condição seja falsa, um comando, ou conjunto de comandos diferentes, será executado. Considere o exemplo a seguir:

Dim x, y
x=15
y=10
If x<y Then
   MsgBox "x é menor do que y"
Else
   MsgBox "x é maior do que y"
End If

Neste exemplo, a mensagem " x é maior do que y", será exibida, uma vez que o teste x<y é falso, conforme podemos constatar pelos valores atribuídos as variáveis x e y.

A estrutura If ... Then...ElseIf...Else

A estrutura If...Then...ElseIf, nos dá uma poder maior, para testarmos diversas possibilidades. É utilizada quando precisamos realizar mais do que um teste lógico. Neste caso, para cada novo teste que se faça necessário, utilizamos um ElseIf. A forma geral desta estrutura é a seguinte:

If condição Then
   'Comandos a serem executados, caso a condição seja verdadeira.
   Comando1
   Comando2
   ...
   Comandon
ElseIf condição2 then
   'Comandos a serem executados, caso a condição2 seja verdadeira.
   Comando1
   Comando2
   ...
   Comandon
ElseIf condição3 then
'Comandos a serem executados, caso a condição3 seja verdadeira.
   Comando1
   Comando2
   ...
   Comandon
...
ElseIf condiçãon then
   'Comandos a serem executados, caso a condição n seja verdadeira.
   Comando1
   Comando2
   ...
   Comandon
Else
   'Comandos a serem executados, caso nenhuma das condições anteriores seja verdadeira.
   Comando1
   Comando2
   ...
   Comandon
End If

Uma condição é testada, caso a condição seja verdadeira, um determinado comando, ou conjunto de comandos será executado; caso a condição seja falsa, podemos fazer um segundo teste (condição-2). Caso a segunda condição seja verdadeira, um determinado comando, ou conjunto de comandos será executado, a assim por diante, para n condições. Caso nenhuma das condições seja verdadeira, os comandos após a cláusula Else, serão executados. É importante observar que somente um dos conjuntos de comandos será executado. Quando uma condição verdadeira for encontrada, o conjunto de comandos associado a essa condição será executado e a execução segue a partir do End If, isto é, as demais condições da estrutura não serão testadas.

Considere o exemplo a seguir:

Dim x, y
Dim z, k
Dim w, p
x=35
y=30
z=25
k=20
w=15
p=10
If x<y Then
   MsgBox "x é menor do que y"
ElseIf x<z Then
   MsgBox "x é menor do que z"
ElseIf x<k Then
   MsgBox "x é menor do que k"
ElseIf x<w Then
   MsgBox "x é menor do que w"
ElseIf x<p Then
   MsgBox "x é menor do que p"
Else
   MsgBox "x é o maior dos números"
End If

Neste exemplo, a mensagem " x é maior dos números", será exibida, uma vez que todos os testes anteriores falham (pois x é o maior número), com isso somente será executado o último MsgBox, que faz parte do Else.

Mas o que acontece, quando um dos ElseIf é verdadeiro?

Os teste vão sendo feitos. Quando o teste de um dos ElseIf for verdadeiro, os comandos abaixo do ElseIf verdadeiro, serão executados e o laço será encerrado. Em resumo, quando um dos ElseIf apresentar um teste verdadeiros, os comandos relacionados serão executados, e os demais não serão avaliados, seguindo a execução para o primeiro comando, após o End If.

A estrutura Select...Case

Quando precisamos realizar uma série de testes, é mais eficiente utilizarmos uma única estrutura Select...Case, do que utilizarmos uma série de testes utilizando a estrutura If...Then...ElseIf.

O funcionamento da estrutura Select...Case, é bastante intuitivo.

Considere o exemplo a seguir:

Dim x
x=10
Select Case x
 Case 2
   MsgBox "X vale 2 !"
 Case 4
   MsgBox "X vale 4 !"
 Case 6
   MsgBox "X vale 6 !"
 Case 8
   MsgBox "X vale 8 !"
 Case 10
   MsgBox "X vale 10 !"
 Case Else
   MsgBox "X não é um número par, menor do que 12 "
End Select

A estrutura Select Case x, vai testar o valor de x. Em cada um dos Case, o valor de x está sendo testado. Quando for encontrado um valor coincidente com o de x, os comandos abaixo deste Case serão executados. No nosso exemplo, o comando MsgBox "X vale 10 !", abaixo de Case 10, será executado. O comando abaixo do Case Else somente será executado, se todos os testes anteriores falharem.

O uso da estrutura Select...Case, torna o código mais eficiente e de mais fácil leitura.

Na próxima lição veremos mais algumas estruturas de controle, disponíveis no VBA.

[LIVRO]: MACROS E PROGRAMAÇÃO VBA NO EXCEL 2010 - PASSO-A-PASSO

APRENDA COM JULIO BATTISTI - 1124 PÁGINAS: CLIQUE AQUI