VBA If, ElseIf, Else (guia definitivo para declarações If)

Declaração VBA If

Se então

As instruções If do VBA permitem que você teste se as expressões são VERDADEIRAS ou FALSAS, executando códigos diferentes com base nos resultados.Vejamos um exemplo simples:
1 Se Faixa ("a2"). Valor> 0 Então Faixa ("b2"). Valor = "Positivo"
Isso testa se o valor no intervalo A2 é maior que 0. Se for, definir o intervalo B2 igual a “positivo”Observação: ao testar as condições, usaremos os operadores de comparação =,>, <,, =. Iremos discuti-los com mais detalhes posteriormente neste artigo.Esta é a sintaxe para uma instrução If de uma linha simples:
1 Se [test_expression], então [action]
Para facilitar a leitura, você pode usar um caractere de continuação de linha (sublinhado) para expandir as instruções If para duas linhas (como fizemos na imagem acima):
12 Se [test_expression], então _[açao]
12 Se Intervalo ("a2"). Valor> 0 Então _Intervalo ("b2"). Valor = "Positivo"

Fim se

A instrução if de “linha única” acima funciona bem quando você está testando uma condição. Mas, à medida que suas declarações IF se tornam mais complicadas com várias condições, você precisará adicionar um "End If" ao final da declaração if:
123 Se Intervalo ("a2"). Valor> 0 EntãoIntervalo ("b2"). Valor = "Positivo"Fim se

Aqui, a sintaxe é:

123 Se [test_expression] então[açao]Fim se

O End If significa o fim da instrução if.

Agora vamos adicionar um ElseIF:

ElseIF - Múltiplas Condições

O ElseIf é adicionado a uma instrução If existente. ElseIf testa se uma condição é atendida SOMENTE se as condições anteriores não foram atendidas.No exemplo anterior, testamos se o valor de uma célula é positivo. Agora também testaremos se o valor da célula é negativo com um ElseIf:
12345 Se Intervalo ("a2"). Valor> 0 EntãoIntervalo ("b2"). Valor = "Positivo"Intervalo ElseIf ("a2"). Valor <0 EntãoIntervalo ("b2"). Valor = "Negativo"Fim se

Você pode usar vários ElseIfs para testar várias condições:

1234567891011 Sub If_Multiple_Conditions ()Se Intervalo ("a2"). Valor = "Gato" EntãoIntervalo ("b2"). Valor = "Miau"Intervalo ElseIf ("a2"). Valor = "Cachorro" EntãoIntervalo ("b2"). Valor = "Woof"Intervalo ElseIf ("a2"). Valor = "Pato" EntãoIntervalo ("b2"). Valor = "Quack"Fim seEnd Sub

Agora vamos adicionar um Outro:

Outro

o Outro vai correr se nenhuma outra condição anterior foi atendida.

Terminaremos nosso exemplo usando um Else para indicar que se o valor da célula não for positivo ou negativo, então deve ser zero:

1234567 Se Intervalo ("a2"). Valor> 0 EntãoIntervalo ("b2"). Valor = "Positivo"Intervalo ElseIf ("a2"). Valor <0 EntãoIntervalo ("b2"). Valor = "Negativo"OutroIntervalo ("b2"). Valor = "Zero"Fim se

If-Else

O tipo mais comum de declaração If é um If-Else simples:

1234567 Sub If_Else ()Se Intervalo ("a2"). Valor> 0 EntãoIntervalo ("b2"). Valor = "Positivo"OutroIntervalo ("b2"). Valor = "Não positivo"Fim seEnd Sub

IFs aninhados

Você também pode “aninhar” instruções if dentro umas das outras.

1234567891011 Sub Nested_Ifs ()Se Intervalo ("a2"). Valor> 0 EntãoIntervalo ("b2"). Valor = "Positivo"OutroSe Intervalo ("a2"). Valor <0 EntãoIntervalo ("b2"). Valor = "Negativo"OutroIntervalo ("b2"). Valor = "Zero"Fim seFim seEnd Sub

IF - Ou, E, Xor, Não

A seguir, discutiremos os operadores lógicos: Or, And, Xor, Not.

Se ou

o Ou operador testa se pelo menos uma condição foi atendida.

O código a seguir testará se o valor no intervalo A2 é menor que 5.000 ou maior que 10.000:

123 Se Intervalo ("a2"). Valor 10000 EntãoIntervalo ("b2"). Valor = "Fora do intervalo"Fim se

Você pode incluir vários Ors em uma linha:

123 Se Intervalo ("a2"). Valor 10.000 ou Intervalo ("a2"). Valor = 9999 EntãoIntervalo ("b2"). Valor = "Fora do intervalo"Fim se

Se você for usar vários Ors, é recomendado usar um caractere de continuação de linha para tornar seu código mais fácil de ler:

123456 Se Intervalo ("a2"). Valor <5000 Ou _Intervalo ("a2"). Valor> 10.000 ou _Intervalo ("a2"). Valor = 9999 EntãoIntervalo ("b2"). Valor = "Fora do intervalo"Fim se

Se e

O operador And permite que você teste se TODAS as condições são atendidas.

123 Se Intervalo ("a2"). Valor> = 5000 E Intervalo ("a2"). Valor <= 10.000 EntãoIntervalo ("b2"). Valor = "No intervalo"Fim se

If Xor

O operador Xor permite que você teste se exatamente uma condição é atendida. Se zero condições forem atendidas, Xor retornará FALSO. Se duas ou mais condições forem atendidas, Xor também retornará falso.

Raramente vi o Xor usado na programação VBA.

Se não

O operador Not é usado para converter FALSE em TRUE ou TRUE em FALSE:

123 Sub IF_Not ()MsgBox Not (True)End Sub

Observe que o operador Not requer parênteses ao redor da expressão para alternar.

O operador Not também pode ser aplicado a instruções If:

123 Se não (intervalo ("a2"). Valor> = 5000 e intervalo ("a2"). Valor <= 10000) EntãoIntervalo ("b2"). Valor = "Fora do intervalo"Fim se

Se comparações

Ao fazer comparações, você geralmente usará um dos operadores de comparação:

Operador de comparação Explicação
= Igual a
Diferente de
> Maior que
>= Melhor que ou igual a
< Menor que
<= Menos que ou igual a

No entanto, você também pode usar qualquer expressão ou função que resulta em VERDADEIRO ou FALSO

If - Função Booleana

Ao construir expressões para instruções If, você também pode usar qualquer função que gere TRUE ou False. O VBA tem algumas dessas funções:

Função Descrição
IsDate Retorna TRUE se a expressão for uma data válida
Está vazia Verifique se há células em branco ou variáveis ​​indefinidas
IsError Verifique os valores de erro
É nulo Verifique se há valor NULL
IsNumeric Verifique o valor numérico

Eles podem ser chamados assim:

1 If IsEmpty (Range ("A1"). Value) Then MsgBox "Cell Empty"

O Excel também tem muitas funções adicionais que podem ser chamadas usando WorksheetFunction. Aqui está um exemplo da Função IsText do Excel:

12 If Application.WorksheetFunction.IsText (Range ("a2"). Value) Then _MsgBox "Cell is Text"

Você também pode criar suas próprias funções definidas pelo usuário (UDFs). A seguir, criaremos uma função booleana simples que retorna TRUE. Em seguida, chamaremos essa função em nossa instrução If:

1234567891011 Sub If_Function ()If TrueFunction ThenMsgBox "True"Fim seEnd SubFunção TrueFunction () como BooleanTrueFunction = TrueFunção Final

Comparando Texto

Você também pode comparar texto semelhante à comparação de números:
1 Msgbox "a" = "b"
1 Msgbox "a" = "a"
Ao comparar o texto, você deve estar atento à “Caixa” (superior ou inferior). Por padrão, o VBA considera letras com maiúsculas e minúsculas diferentes como não correspondentes. Em outras palavras, “A” “a”.Se você deseja que o VBA ignore maiúsculas e minúsculas, você deve adicionar a declaração Option Compare Text no topo do seu módulo:
1 Texto de comparação de opções

Depois de fazer essa declaração “A” = “a”:
12345 Texto de comparação de opçõesSub If_Text ()MsgBox "a" = "A"End Sub

VBA If Like

O VBA Like Operator permite que você faça comparações inexatas de texto. Clique no link “Like Operator” para saber mais, mas mostraremos um exemplo básico abaixo:

12345678 Dim strName as StringstrName = "Sr. Charles"Se strNome Like "Mr *" EntãoMsgBox "True"OutroMsgBox "False"Fim se

Aqui, estamos usando um caractere curinga asterisco “*”. O * representa qualquer número de quaisquer caracteres. Portanto, a instrução If acima retornará TRUE. O operador Like é uma ferramenta extremamente poderosa, mas geralmente subutilizada, para lidar com texto.

Se Loops

Os loops de VBA permitem que você repita ações. Combinar IF-ELSEs com Loops é uma ótima maneira de processar muitos cálculos rapidamente.

Continuando com nosso exemplo Positivo / Negativo, adicionaremos um For Each Loop para percorrer um intervalo de células:

1234567891011121314 Sub If_Loop ()Dim Cell como RangePara cada célula no intervalo ("A2: A6")Se Cell.Value> 0 ThenCell.Offset (0, 1) .Value = "Positivo"ElseIf Cell.Value <0 ThenCell.Offset (0, 1) .Value = "Negativo"OutroCell.Offset (0, 1) .Value = "Zero"Fim sePróxima CélulaEnd Sub

Exemplos If Else

Agora examinaremos alguns exemplos mais específicos.

Verifique se a célula está vazia

Este código irá verificar se uma célula está vazia. Se estiver vazio, ele irá ignorar a célula. Se não estiver vazio, ele emitirá o valor da célula para a célula à direita:
1234567 Sub If_Cell_Empty ()Se Intervalo ("a2"). Valor "" EntãoIntervalo ("b2"). Valor = Intervalo ("a2"). ValorFim seEnd Sub

Verifique se a célula contém texto específico

A função Instr testa se uma string de texto é encontrada em outra string. Use-o com uma instrução If para verificar se uma célula contém um texto específico:
123 If Instr (Range ("A2"). Value, "text")> 0 ThenMsgbox "Texto encontrado"Fim se

Verifique se a célula contém texto

Este código testará se uma célula é um texto:
1234567 Sub If_Cell_Is_Text ()If Application.WorksheetFunction.IsText (Range ("a2"). Value) ThenMsgBox "Cell is Text"Fim seEnd Sub

If Goto

Você pode usar o resultado de uma instrução If para “ir para” outra seção do código.
12345678910 Sub IfGoTo ()If IsError (Cell.value) ThenIr para pularFim se'Algum códigoPular:End Sub

Excluir linha se a célula estiver em branco

Usando Ifs e loops, você pode testar se uma célula está em branco e, em caso afirmativo, excluir a linha inteira.
123456789 Sub DeleteRowIfCellBlank ()Dim Cell As RangePara cada célula no intervalo ("A2: A10")Se Cell.Value = "" Então Cell.EntireRow.DeletePróxima CélulaEnd Sub

Se MessageBox Sim / Não

Com as caixas de mensagens do VBA, você pode pedir ao usuário para selecionar entre várias opções. A caixa de mensagem Sim / Não solicita que o usuário selecione Sim ou Não. Você pode adicionar uma caixa de mensagem Sim / Não a um procedimento para perguntar ao usuário se deseja continuar executando o procedimento ou não. Você lida com a entrada do usuário usando uma instrução If.Aqui está a caixa de mensagem Sim / Não na prática:
123456789101112 Sub MsgBoxVariable ()Dim answer As Integeranswer = MsgBox ("Deseja continuar?", vbQuestion + vbYesNo)Se a resposta = vb Sim, entãoMsgBox "Sim"OutroMsgBox "Não"Fim seEnd Sub

VBA If, ElseIf, Else no Access VBA

As funções If, ElseIf e Else funcionam exatamente da mesma forma no Access VBA e no Excel VBA.

Você pode usar uma instrução If para verificar se há registros em um conjunto de registros.

Você vai ajudar o desenvolvimento do site, compartilhando a página com seus amigos

wave wave wave wave wave