Instrução If...Then...Else
Executa condicionalmente um grupo de instruções, dependendo do valor de uma expressão.
Sintaxe
IfconditionThen [ statements ] [ Elseelsestatements ]
Ou você pode usar a sintaxe na forma de bloco:
Condição If
[instruções]
[ ElseIfcondition-nThen
[ instruçõeselseif ]]
[ Else
[ instruçõeselse ]]
End If
A sintaxe da instrução If...Then...Else tem estas partes.
Parte | Descrição |
---|---|
condição | Obrigatório. Um ou mais dos dois tipos de expressão a seguir: Uma expressão numérica ou de cadeia de caracteres avaliada como True ou False. Se condição for Null, condição será tratada como False. Uma expressão do formulário TypeOfobjectnameIsobjecttype. O nomedoobjeto é qualquer referência de objeto, e tipodoobjeto é qualquer tipo de objeto válido. A expressão é True se objectname for do tipo de objeto especificado por objecttype; caso contrário, é Falso. |
instruções | Opcional em forma de bloco; obrigatória em forma de linha única sem a cláusula Else. Uma ou mais instruções separadas por dois pontos; será executada se condição for True. |
condição-n | Opcional. Igual a condição. |
instruçõeselseif | Opcional. Uma ou mais instruções executadas caso a condição-n associada seja True. |
instruçõeselse | Opcional. Uma ou mais instruções executadas se nenhuma expressão condição ou condição-n prévia for True. |
Comentários
Utilize o formulário de linha única (primeira sintaxe) para testes curtos e simples. Entretanto, a forma de bloco (segunda sintaxe) oferece mais estrutura e flexibilidade do que a forma de linha única e normalmente é mais fácil de ler, de manter e de depurar.
Observação
Com a forma de linha única, é possível executar várias instruções como resultado de uma decisão If...Then. Todas as instruções devem estar na mesma linha e separadas por dois pontos, como a instrução a seguir:
If A > 10 Then A = A + 1 : B = B + A : C = C + B
Uma instrução If em forma de bloco deve ser a primeira instrução em uma linha. As partes Else, ElseIf e End If da instrução podem ter apenas um número de linha ou rótulo de linha antes delas. O bloco If deve terminar com uma instrução End If.
Para determinar se uma instrução é um bloco If, examine o que vem após a palavra-chave Then. Se algo diferente de um comentário aparecer após Then na mesma linha, a instrução será tratada como uma instrução If de linha única.
As cláusulas Else e ElseIf são opcionais. Você pode ter quantas cláusulas ElseIf quiser em um bloco If, mas nenhuma pode aparecer após a cláusula Else. É possível aninhar instruções If em bloco, ou seja, uma pode ficar dentro da outra.
Durante a execução de um bloco If (segunda sintaxe), condição é testado. Se condição for True, as instruções após Then serão executadas. Se condição for False, cada condição ElseIf (se houver) será avaliada. Quando uma condição True for encontrada, as instruções imediatamente após Then associado serão executadas. Se nenhuma das condições ElseIf for True (ou se não houver cláusulas ElseIf), as instruções após Else serão executadas. Após executar as instruções após Then ou Else, a execução continua com a instrução após End If.
Dica
Select Case pode ser mais útil ao avaliar uma única expressão que possui várias ações possíveis. No entanto, a cláusula objectnameTypeOf Éobjecttype não pode ser utilizada com a instrução Select Case.
Observação
TypeOf não pode ser usado com tipos de dados hard como Long, Integer e assim por diante, diferentes de Object.
Exemplo
Este exemplo mostra as formas de bloco e de linha única da instrução If...Then...Else. Também ilustra o uso de If TypeOf...Then...Else.
Dim Number, Digits, MyString
Number = 53 ' Initialize variable.
If Number < 10 Then
Digits = 1
ElseIf Number < 100 Then
' Condition evaluates to True so the next statement is executed.
Digits = 2
Else
Digits = 3
End If
' Assign a value using the single-line form of syntax.
If Digits = 1 Then MyString = "One" Else MyString = "More than one"
Use a construção If TypeOf para determinar se o Controle passado para um procedimento é uma caixa de texto.
Sub ControlProcessor(MyControl As Control)
If TypeOf MyControl Is CommandButton Then
Debug.Print "You passed in a " & TypeName(MyControl)
ElseIf TypeOf MyControl Is CheckBox Then
Debug.Print "You passed in a " & TypeName(MyControl)
ElseIf TypeOf MyControl Is TextBox Then
Debug.Print "You passed in a " & TypeName(MyControl)
End If
End Sub
Confira também
- Diretiva If...Then...Else
- Usando Instruções Se... Então... Ou
- Tipos de dados
- Instruções
- Glossário do Editor do Visual Basic (VBE)
Suporte e comentários
Tem dúvidas ou quer enviar comentários sobre o VBA para Office ou sobre esta documentação? Confira Suporte e comentários sobre o VBA para Office a fim de obter orientação sobre as maneiras pelas quais você pode receber suporte e fornecer comentários.