VBA – Combinação de If com And, Or e Not
Este artigo demonstrará como usar a instrução If do VBA com And, Or e Not
Quando usamos uma instrução IF no Excel VBA, a instrução executará uma linha de código se a condição que estiver sendo testada for verdadeira
- Podemos usar as instruções AND e OR em conjunto com as instruções IF para testar mais de uma condição e direcionar o código de acordo.
- Também podemos usar uma instrução NOT com uma instrução IF para verificar se a condição NÃO é verdadeira – basicamente é o inverso da instrução IF quando usada sozinha.
IF…AND
Podemos usar a combinação IF…AND de operadores lógicos quando quisermos testar mais de uma condição em que todas as condições precisam ser verdadeiras para que a próxima linha de código seja executada
Por exemplo, considere a planilha a seguir
Para verificar se o lucro é superior a R$ 5.000, podemos executar a macro a seguir
Sub VerificarLucro()
If Range("C5") >= 10000 And Range("C6") < 5000 Then
MsgBox "Lucro de R$ 5.000 obtido!"
Else
Msgbox "Lucro não obtido!"
End If
End Sub
Essa macro verificará se a célula C5 é maior ou igual a R$ 10.000 E verificará se a célula B6 é menor que R$ 5.000. Se essas condições forem AMBAS verdadeiras, a caixa de mensagem será exibida
Se alterarmos a macro para verificar se C5 é apenas maior que R$ 10.000, o lucro não será obtido!
IF… OR
Podemos usar a combinação IF…OR de operadores lógicos quando quisermos testar mais de uma condição em que apenas uma das condições precisa ser verdadeira para que a próxima linha de código seja executada
O formato para isso é quase idêntico ao do exemplo IF…AND acima
Sub VerificarLucro()
If Range("C5") > 10000 Or Range("C6") < 5000 Then
MsgBox "Lucro de R$ 5.000 obtido!"
Else
Msgbox "Lucro não obtido!"
End If
End Sub
Entretanto, com essa macro, como estamos usando uma instrução IF …OR, somente uma das condições precisa ser verdadeira
IF NOT…
IF…NOT altera a instrução IF – ela verificará se a condição NÃO é verdadeira em vez de verificar se a condição é verdadeira
Sub VerificarLucro()
If NOT Range("C5")< 10000 Or Range("C6") < 5000 Then
MsgBox "Lucro de R$ 5.000 obtido!"
Else
Msgbox "Lucro não obtido!"
End If
End Sub
No exemplo acima, a instrução IF está verificando se o valor em C5 NÃO é menor que 10.000
Portanto, esta linha de código
IF Range("C5") > 10000
e esta linha de código
IF NOT Range("C5") < 10000
estão testando a mesma coisa!