Como usar a instrução if com else no vba?

Se você deseja ser um usuário avançado de VBA, uma instrução IF é obrigatória. E acredito que você já conheça a palavra SE e a utilize com frequência como função de planilha.

No VBA, IF funciona da mesma maneira. Sua ideia básica é realizar uma tarefa quando uma condição for VERDADEIRA, caso contrário não faça nada ou faça outra coisa. Você pode escrever de forma simples e também em condições complexas.

Para facilitar a compreensão, dividi-o em três partes diferentes.

  • Fornecido para ser testado.
  • Uma tarefa a ser executada se a condição for TRUE.
  • Uma tarefa a ser executada se a condição for FALSE.

Isto é o que parece na vida real:

usando o código de instrução VBA IF no Excel

No exemplo acima, a chuva é uma condição. Se esta condição for VERDADEIRA, o menino abrirá o guarda-chuva e se a condição for FALSA ele usará o chapéu. As condições são onipresentes em nossas vidas diárias. Mas agora vamos voltar ao nosso mundo da codificação e explorá-lo.

Sintaxe: VBA SE

Temos três tipos diferentes de instruções IF no VBA.

1. SE-Então

IF THEN é a forma mais simples de uma instrução IF. Tudo o que precisamos fazer é especificar uma condição para verificar e se essa condição for VERDADEIRA, a tarefa será executada. Mas, se esta condição for FALSA, não fará nada e saltará a linha instantaneamente.

Sintaxe

 IF condition Then statement[s]

Na sintaxe acima, precisamos especificar uma condição a ser avaliada e uma tarefa a ser executada se essa condição for VERDADEIRA.

Exemplo

instrução vba if usando código de macro if then

No exemplo acima, verificamos se a célula A1 contém o valor 10 e caso contenha, o extrato exibirá uma caixa de mensagem com a mensagem “A célula A1 possui o valor 10”.

 Sub CheckValue() If Range("A1").Value = 10 Then MsgBox ("Cell A1 has value 10") End Sub

2. SE-então-senão

Você pode usar a instrução IF-Then-Else quando quiser executar uma tarefa específica se uma condição for TRUE e uma tarefa diferente se uma condição for FALSE.

Sintaxe

 IF Condition Then Statement[s] Else Statement[s] End If

Com a sintaxe acima, podemos realizar diferentes tarefas dependendo do resultado de uma condição. Se a condição for TRUE, ele executará a instrução que você mencionou após “Then” ou se a condição for FALSE, executará a instrução que você mencionou após “Else”.

Exemplo

 Sub CheckValue() If Range("A1").Value = "10" Then MsgBox ("Cell A1 has value 10") Else MsgBox ("Cell A1 has a value other than 10") End Sub
instrução vba if usando código de macro if then else

No exemplo acima, usei a instrução IF-Then-Else para verificar o valor na célula A1.

Se a célula A1 tiver um valor de 10, você receberá uma caixa de mensagem dizendo “A célula A1 tem um valor de 10” e se houver outro valor na célula A1 você receberá uma caixa de mensagem dizendo “A célula A1 tem um valor diferente de 10”. Portanto, aqui podemos realizar diferentes tarefas com base no resultado da condição.

3. SE-Então-Elseif-Else

Este é o tipo de IF mais útil e importante que o ajudará a escrever declarações de condições avançadas. Neste tipo você pode especificar a segunda condição após avaliar sua primeira condição.

Sintaxe

 IF Condition Then Statement[s] Elseif Condition Then Statement[s] Else Statement[s] End If

Na sintaxe acima, temos:

  1. Na condição de avaliar.
  2. Uma instrução a ser executada se esta condição for TURE.
  3. Se esta condição for FALSA, então temos a segunda condição para avaliar.
  4. E, se a segunda condição for VERDADEIRA, temos uma declaração a fazer.
  5. Mas, se ambas as condições, primeira e segunda, forem FALSAS, ele fará a afirmação que você mencionou após “Else”.

E a melhor parte é que você pode usar qualquer número de “Elseif”s em seu código. Isso significa que você pode especificar qualquer número de condições em sua declaração.

Exemplo

instrução vba if usando código de macro if then elseif elseif
 Sub check_grade() If Range("A2").Value = "A" Then MsgBox "Very Good" Else If Range("A2").Value = "B" Then MsgBox "Good" ElseIf Range("A2").Value = "C" Then MsgBox "Average" ElseIf Range("A2").Value = "D" Then MsgBox "Poor" ElseIf Range("A2").Value = "E" Then MsgBox "Very Poor" Else MsgBox "Enter Correct Grade" End Sub

No exemplo acima, escrevemos uma macro que primeiro verificará o valor “A” na célula A2 e se a célula tiver uma classificação “A”, a instrução retornará a mensagem “Muito Bom”.

Esta instrução irá primeiro verificar a célula A2 quanto ao valor “A” e se a célula tiver uma classificação “A”, a instrução retornará a mensagem “Muito Bom”.

E, se a primeira condição for FALSA, ele avaliará a segunda condição e retornará a mensagem “Bom” caso a célula tenha classificação “B”.

E, se a segunda condição for falsa, passará para a terceira condição e assim por diante. Por fim, se todas as cinco condições forem falsas, ele executará o código que escrevi depois do restante.

O segredo para escrever uma instrução IF em VBA

Agora você conhece todos os tipos de SI e também pode escolher um dependendo da tarefa que precisa realizar. Deixe-me contar um segredo.

Instrução IF de linha única versus instrução IF em bloco

Você pode escrever uma declaração IF de duas maneiras diferentes e ambas têm vantagens e desvantagens. Olhe para a.

1. Declaração de uma linha

A instrução de uma linha é perfeita se você usar a instrução IF-Then. A base para usar uma instrução de linha é escrever todo o seu código em uma única linha.

 If A1 = 10 Then Msgbox("Cell A1 has value 10")

Na instrução acima, escrevemos uma instrução IF para avaliar se a célula A1 tem o valor 10, então ela exibirá uma caixa de mensagem. A prática recomendada para usar uma instrução de uma linha é quando você precisa escrever um código simples. Usar código de uma linha para declarações complexas e longas é difícil de entender.

Dica rápida: ao escrever código de linha única, você não precisa usar Endif para completar a instrução.

2. Declaração de bloco

Uma instrução Block é perfeita quando você deseja escrever seu código de maneira decente e compreensível. Ao escrever uma instrução de bloco, você pode usar várias linhas em sua macro, fornecendo um código limpo e organizado.

 Sub check_value() If Range(“A1”).Value = “10” Then MsgBox ("Cell A1 has value 10") Else MsgBox ("Cell A1 has a value other than 10") End If End Sub

No exemplo acima, escrevemos uma instrução IF-Then-Else em blocos. E você pode ver que é fácil de ler e até mesmo de depurar.

Ao escrever instruções complexas (o que você definitivamente fará depois de ler este guia), instruções em bloco são sempre boas. E, ao escrever instruções If aninhadas, você também pode adicionar recuo em sua linha para maior clareza.

Dica rápida – Você tem uma exceção que pode ignorar usando Else no final do seu código ao usar IF-Then-Elseif-Else. Isto é muito útil quando você não precisa realizar nenhuma tarefa quando nenhuma das condições é VERDADEIRA em sua declaração.

8 exemplos concretos

Aqui listei alguns exemplos simples, mas úteis, que você pode seguir.

1. SE aninhado

A melhor parte da instrução IF é que você cria instruções aninhadas. Você pode adicionar uma segunda condição à primeira condição.

escrevendo aninhamento if com instrução vba if
 Sub NestIF() Dim res As Long res = MsgBox("Do you want to save this file?", vbYesNo, "Save File") If res = vbYes Then 'start of first IF statement If ActiveWorkbook.Saved <> True Then 'start of second IF statement. ActiveWorkbook.SaveMsgBox ("Workbook Saved") Else MsgBox "This workbook is already saved" End If 'end of second IF statement Else MsgBox "Make Sure to save it later" End If ' end of first IF statement End Sub

No exemplo acima, usamos uma instrução IF aninhada. Ao executar esta macro , você receberá uma caixa de mensagem com as opções OK e Cancelar. O trabalho da declaração condicional começa depois disso.

Primeiro, ele avaliará o botão em que você clicou. Se você clicou em “Sim”, aninhe-o para avaliar se sua planilha está salva ou não.

Se sua pasta de trabalho não for salva, ela será salva e você receberá uma mensagem. E, se a pasta de trabalho já estiver salva, será exibida uma mensagem sobre isso.

Mas se você clicar no botão a condição da primeira macro será FALSE e você só receberá uma mensagem para salvar seu livro posteriormente.

A ideia básica neste código é que a segunda condição depende totalmente da primeira condição, se a primeira condição for FALSA então a segunda condição não será avaliada.

Saiba mais sobre IF aninhado

2. Crie um loop com IF e GoTo

Você também pode criar um loop usando goto com IF. A maioria dos programadores evita escrever loops dessa maneira porque temos maneiras melhores de fazer loops . Mas não há mal nenhum em aprender como podemos fazer isso.

 Sub auto_open() Alert: If InputBox("Enter Username") <> "Puneet" Then GoTo Alert Else MsgBox "Welcome" End If End Sub

No exemplo acima, usamos uma instrução de condição para criar um loop. Usamos auto_open como nome da macro para que toda vez que alguém abrir o arquivo, ele execute essa macro.

O usuário deve inserir um nome de usuário e se esse nome de usuário não for igual a “Puneet” ele repetirá o código e mostrará a caixa de entrada novamente. E, se você inserir o texto correto, ele poderá acessar o arquivo.

3. Verifique se uma célula contém um número

Aqui usamos uma condição para verificar se a célula ativa contém um valor numérico ou não.

use a instrução vba if para verificar o número na célula
 Sub check_number() If IsNumeric(Range("B2").Value) Then MsgBox "Yes, active cell has a number." Else MsgBox "No, active cell hasn't a number." End If End Sub

No exemplo acima, escrevi uma condição usando a função isnumeric em VBA que é igual à função numérica na planilha para verificar se o valor de uma célula é um número ou não.

Se o valor for um número, ele retornará TRUE e você receberá a mensagem “Sim, a célula ativa possui um valor numérico”. E, se o valor não for um número, você receberá a mensagem “Nenhum valor numérico na célula ativa”.

4. Use OR e AND com IF

Usando IF OR, você pode especificar duas ou mais condições e executar uma tarefa se pelo menos uma condição for TRUE entre todas.

 Sub UsingOR() If Range("A1") < 70 Or Range("B1") < 70 Then MsgBox "You Are Pass" Else If Range("A1") < 40 And Range("B1") < 40 Then MsgBox "You Are Pass" Else MsgBox "You Are Fail" End If End If End Sub

No exemplo acima, na linha 2, temos duas condições utilizando OR. Se o aluno obtiver 70 pontos em alguma das disciplinas, o resultado será “Aprovado”. E na linha 7 temos duas condições usando o operador AND. Caso o aluno obtenha mais de 40 pontos em ambas as disciplinas, o resultado será “Aprovado”.

Usando IF AND você pode especificar múltiplas condições e executar uma tarefa se todas as condições forem TRUE.

5. Use Não com SE

Usando NOT em uma condição, você pode alterar TRUE para FALSE e FALSE para TRUE.

VBA SE NÃO

 Sub IF_Not() If Range(“D1”) <= 40 And Not Range(“E1”) = “E” Then MsgBox "You Are Pass." Else MsgBox "You Are Fail." End If End Sub

No exemplo acima, usamos NOT na condição. Temos duas células com a pontuação do sujeito. Em uma célula a pontuação está em números e em outra célula tem notas.

  • Se o aluno obtiver notas acima de 40 na primeira disciplina e acima da nota E na segunda disciplina, é APROVADO.
  • Se o aluno obtiver notas acima de 40 na primeira disciplina e acima da nota E na segunda disciplina, é APROVADO.

Assim, toda vez que as notas de um aluno forem superiores a 40 e uma nota diferente de E, receberemos uma mensagem “Você foi aprovado” ou “Você foi reprovado”.

6. Declaração IF com caixa de seleção

Agora, aqui usamos uma caixa de seleção para executar uma macro.

usando a instrução vba if com caixa de seleção
 Sub ship_as_bill() If Range("D15") = True Then Range("D17:D21") = Range("C17:C21") Else If Range(“D15”) = False Then Range("D17:D21").ClearContents Else MsgBox (“Error!”) End If End If End Sub

No exemplo acima, usamos uma instrução IF para criar uma condição de que, se a caixa de seleção estiver marcada, o intervalo D17:D21 será igual ao intervalo C17:C21. E, se a caixa não estiver marcada, o intervalo D17:D21 ficará vazio.

Usando esta técnica podemos usar o endereço de cobrança como endereço de entrega e se precisarmos de mais alguma coisa podemos inserir o endereço manualmente.

7. Verifique se uma célula foi mesclada

E aqui escrevemos uma condição para receber um alerta se uma célula ativa for mesclada.

verifique se uma célula foi mesclada usando a instrução vba if
 Sub MergeCellCheck() If ActiveCell.MergeCells Then MsgBox "Active Cell Is Merged" Else MsgBox "Active Cell Is Not Merged" End If End Sub

No código acima, usamos células mescladas para verificar se a célula ativa foi mesclada ou não. Se a célula ativa for mesclada, a condição retornará um alerta para isso .

8. Exclua a linha inteira se uma célula estiver vazia

Aqui usamos IF para verificar se uma linha está vazia ou não. E, se esta linha estiver vazia, a instrução irá deletar aquela linha específica.

 Sub DeleteRow() If Application.CountA(ActiveCell.EntireRow) = 0 Then ActiveCell.EntireRow.Delete Else MsgBox Application.CountA(ActiveCell.EntireRow) & "Cell(s) have values in this row" End If End Sub

No exemplo acima, ele irá primeiro verificar as células que possuem um valor. Se o número de células com valor for zero, a condição excluirá a linha ativa, caso contrário retornará o alerta indicando o número de células com valor.

Conclusão

Como eu disse, esta é uma das partes mais importantes do VBA e você deve aprendê-la se quiser dominar o VBA. Com a instrução IF, você pode escrever códigos simples e também códigos complexos. Você também pode usar operadores lógicos e escrever condições aninhadas.

Espero que este guia ajude você a escrever códigos melhores.

Agora me diga isso. Você escreve condições com frequência em VBA? Que tipo de códigos você escreve? Por favor, compartilhe suas opiniões comigo na seção de comentários. E não se esqueça de compartilhar este guia com seus amigos.

Adicione um comentário

O seu endereço de email não será publicado. Campos obrigatórios marcados com *