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.

  • 🔗 Objetivo: Os operadores lógicos avaliam mais de uma condição dentro de uma única instrução If.
  • E Operator: Retorna verdadeiro somente quando todas as condições que ele conecta forem verdadeiras.
  • OR Operator: Retorna Verdadeiro quando pelo menos uma das condições for Verdadeira.
  • 🔄 NÃO Operator: Inverte um resultado, transformando Verdadeiro em Falso e Falso em Verdadeiro.
  • 📊 Mesa da verdade: Uma única grade de referência mostra o resultado de cada operador para cada combinação de entrada.
  • 🧮 Extra Operatores: Xor, Eqv e Imp lidam com condições exclusivas, equivalentes e implícitas.
  • ⚠️ Sem curto-circuito: O VBA avalia cada parte de uma condição, portanto, um teste de guarda deve estar dentro de uma estrutura If aninhada.

VBA Lógico OperaOperadores: E, OU, NÃO em VBA do Excel

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

VBA Lógico Operatoros
VBA Lógico Operatoros

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

Perguntas Frequentes

Não há limite prático, mas a legibilidade cai rapidamente após três ou quatro condições. Mova uma condição longa para uma variável booleana com um nome descritivo e, em seguida, teste essa variável na instrução If.

Aplicado a um número, o operador NOT realiza uma inversão bit a bit em vez de uma inversão lógica. Use-o apenas em comparações ou variáveis ​​booleanas, como NOT(Qtd > 0), para que o resultado seja True ou False.

A lógica coincide, mas a sintaxe difere. Uma fórmula de planilha as chama como funções, AND(A1>0, B1>0). O VBA as coloca entre as condições, como em If A1 > 0 And B1 > 0 Then.

Sim. Cole a condição e um assistente de IA a reescreverá com parênteses mais claros ou a dividirá em variáveis ​​booleanas nomeadas. Verifique a reescrita em uma tabela verdade, pois uma simplificação incorreta altera o comportamento silenciosamente.

Sim. Forneça a expressão e um assistente de IA listará todas as combinações de entrada com seus respectivos resultados, o que rapidamente expõe um ramo que nunca poderá ser alcançado ou um parêntese colocado na posição errada.

Resuma esta postagem com: