VBA Lógico Operators: E, OU, NÃO, SE NÃO no Excel VBA
⚡ Resumo Inteligente
VBA Lógico OperaOs operadores AND, OR e NOT combinam várias condições em um único resultado Verdadeiro ou Falso. Esta página explica os operadores AND, OR e NOT com exemplos executáveis usando botões de comando, uma tabela verdade completa e os menos conhecidos operadores XOR, EQV e IMP.

Excel VBA lógico Operatoros
Digamos que você queira processar um pedido de cliente. Para isso, você deve primeiro verificar se o produto encomendado existe ou não. Em caso afirmativo, você também deseja verificar se a quantidade disponível é suficiente. Os operadores lógicos são úteis nesses casos. Os operadores lógicos são usados para avaliar mais de uma condição.
Cada condição, por si só, é construída a partir de operadores de comparação e retorna Verdadeiro ou Falso. Um operador lógico então combina esses resultados em uma resposta final.
Os principais operadores lógicos do Excel VBA AND, OR, NOT estão listados na tabela abaixo:
| S / N | Operator | Descrição | Exemplo | saída |
|---|---|---|---|---|
| 1 | E | AND: Isso é usado para combinar mais de uma condição. Se todas as condições forem verdadeiras, AND será avaliado como verdadeiro. Se alguma das condições for falsa, AND será avaliado como falso | Se (1 = 1) e (0 = 1) então | falso |
| 2 | OR | OU: Isto é usado para combinar mais de uma condição. Se alguma das condições for avaliada como verdadeira, OR retornará verdadeiro. Se todos eles forem falsos, OR retorna falso | Se (1 = 1) ou (5 = 0) então | verdadeiro |
| 3 | NÃO | NÃO: Este funciona como uma função inversa. Se a condição for verdadeira, retorna falso, e se a condição for falsa, retorna verdadeiro. | Se não (0 = 0) então | falso |
As três descrições acima são mais fáceis de memorizar como uma única grade de entradas e resultados.
Tabela verdade para lógica VBA Operatoros
Uma tabela verdade lista todas as combinações de entradas e o resultado retornado por cada operador. Lê-la uma vez elimina as suposições de qualquer condição que você escrever posteriormente.
| Condição A | Condição B | A e B | A ou B | Não A |
|---|---|---|---|---|
| a Verdadeira | a Verdadeira | a Verdadeira | a Verdadeira | Falso |
| a Verdadeira | Falso | Falso | a Verdadeira | Falso |
| Falso | a Verdadeira | Falso | a Verdadeira | a Verdadeira |
| Falso | Falso | Falso | Falso | a Verdadeira |
Vale a pena memorizar dois padrões. E O valor True só retorna uma linha em cada quatro, restringindo assim a seleção. OR Produz False em apenas uma linha, portanto, amplia uma delas. NÃO Ela requer apenas uma condição em vez de duas, razão pela qual possui uma coluna própria.
VBA Lógico OperaExemplo de fonte Code
Por uma questão de simplicidade, compararemos números codificados.
Adicione botões ActiveX à planilha a partir da “opção Inserir”.
Defina as propriedades conforme mostrado na imagem abaixo

A tabela a seguir mostra as propriedades que você precisa alterar e os valores que você também precisa atualizar.
| S / N | Controlar | Propriedade | Valor |
|---|---|---|---|
| 1 | BotãoComando1 | Nome | btnAND |
| Subtítulo | E Operator (1 = 1) e (0 = 0) | ||
| 2 | BotãoComando2 | Nome | btnOU |
| Subtítulo | OR Operator (1 = 1) Ou (5 = 0) | ||
| 3 | BotãoComando3 | Nome | btnNÃO |
| Subtítulo | NÃO Operator Não (0 = 0) |
Adicione o seguinte código a btnAND_Click
Private Sub btnAND_Click() If (1 = 1) And (0 = 0) Then MsgBox "AND evaluated to TRUE", vbOKOnly, "AND operator" Else MsgBox "AND evaluated to FALSE", vbOKOnly, "AND operator" End If End Sub
VBA se E Operator
- “Se (1 = 1) E (0 = 0) Então” a instrução if usa o operador lógico AND para combinar duas condições (1 = 1) e (0 = 0). Se ambas as condições forem verdadeiras, o código acima da palavra-chave 'Else' será executado. Se ambas as condições não forem verdadeiras, o código abaixo da palavra-chave 'Else' será executado.
Ambas as condições são verdadeiras aqui, portanto, ao clicar no botão, é exibido "E avaliado como VERDADEIRO".
Adicione o seguinte código a btnOR_Click
Private Sub btnOR_Click() If (1 = 1) Or (5 = 0) Then MsgBox "OR evaluated to TRUE", vbOKOnly, "OR operator" Else MsgBox "OR evaluated to FALSE", vbOKOnly, "OR operator" End If End Sub
VBA se OU Operator
- “Se (1 = 1) ou (5 = 0) Então” A instrução `if` utiliza o operador lógico OU para combinar duas condições: (1 = 1) OU (5 = 0). Se alguma das condições for verdadeira, o código acima da palavra-chave `else` será executado. Se ambas as condições forem falsas, o código abaixo da palavra-chave `else` será executado.
A primeira condição é verdadeira e a segunda é falsa, portanto o operador OR ainda retorna verdadeiro e a mensagem diz "OR avaliado como VERDADEIRO".
Adicione o seguinte código a btnNOT_Click
Private Sub btnNOT_Click() If Not (0 = 0) Then MsgBox "NOT evaluated to TRUE", vbOKOnly, "NOT operator" Else MsgBox "NOT evaluated to FALSE", vbOKOnly, "NOT operator" End If End Sub
VBA se NÃO Operator
- “Se não (0 = 0) então” A função VBA `If Not` usa o operador lógico `NOT` para negar o resultado da condição da instrução `if`. A condição interna (0 = 0) é verdadeira, então `Not` a transforma em falsa e o código abaixo da palavra-chave `Else` é executado. Se a condição interna fosse falsa, `Not` a teria tornado verdadeira e o código acima de `Else` teria sido executado.
Cada um desses três botões testa um valor fixo. As condições reais são lidas da planilha e combinam ambas as famílias de operadores.
Como combinar raciocínio lógico e comparação Operatoros
Uma macro de produção raramente testa um número fixo. Ela lê um valor, compara-o e combina várias dessas comparações em uma única decisão. A macro abaixo aprova um pedido somente quando o produto existe, a quantidade é suficiente e a conta do cliente não está bloqueada.
Sub ApproveOrder() Dim QtyOnHand As Long Dim QtyOrdered As Long Dim OnHold As Boolean QtyOnHand = Sheet1.Range("B2").Value QtyOrdered = Sheet1.Range("B3").Value OnHold = Sheet1.Range("B4").Value ' All three parts must hold for the order to pass If (QtyOrdered > 0) And (QtyOnHand >= QtyOrdered) And Not OnHold Then Sheet1.Range("B5").Value = "Approved" Else Sheet1.Range("B5").Value = "On hold" End If End Sub
Três regras mantêm uma condição combinada legível e correta.
- Coloque entre parênteses todas as comparações: O VBA avalia os operadores de comparação antes dos lógicos, mas os colchetes agrupam os operadores.ping óbvio e evita erros quando a situação se agravar posteriormente.
- Observe a precedência de "E" sobre "Ou": A ou B e C é lido como A ou (B e C)Se você quis dizer (A ou B) e COs parênteses são obrigatórios.
- Não se aplica a valores booleanos, nem a números: Não está em espera. lê naturalmente. Evite Não 5, porque Not realiza uma operação bit a bit em números e retorna -6 em vez de False.
⚠️ Aviso: O VBA não entra em curto-circuito. Se (ws Is Nothing) Ou (ws.Name = “Data”) EntãoA segunda parte ainda é executada mesmo quando a primeira é verdadeira, o que gera o erro de tempo de execução 91. Divida essas verificações em instruções If aninhadas.
Xor, Eqv e Imp Operatores em VBA
Os operadores AND, OR e NOT abrangem quase todas as situações do dia a dia, mas o VBA oferece mais três operadores lógicos que, ocasionalmente, expressam uma regra com muito mais clareza do que uma série de instruções If.
| Operator | Retorna verdadeiro quando | Exemplo | saída |
|---|---|---|---|
| Xor | Exatamente uma das duas condições é verdadeira, nunca ambas. | (1 = 1) Xor (5 = 0) | a Verdadeira |
| Eq. | Ambas as condições têm o mesmo valor, ambas verdadeiras ou ambas falsas. | (1 = 1) Eqv (2 = 2) | a Verdadeira |
| Criança levada | A primeira condição implica a segunda; somente Verdadeiro Imp Falso é falso. | (1 = 1) Imp (5 = 0) | Falso |
O operador XOR é o mais prático dos três. Ele se adequa a uma regra como "um desconto se aplica a um funcionário ou a um membro do programa de fidelidade, mas não a alguém que seja ambos". Os operadores EQV e Imp aparecem principalmente em códigos mais antigos e em exercícios de lógica, portanto, reconhecê-los é mais importante do que escrevê-los.
Baixe o Excel contendo o código acima
