Logico VBA Operatori: AND, OR, NOT, SE NON in Excel VBA

⚡ Riepilogo intelligente

Logico VBA OperaGli operatori combinano diverse condizioni in un unico risultato Vero o Falso. Questa pagina spiega gli operatori AND, OR e NOT con esempi eseguibili tramite pulsanti di comando, una tabella di verità completa e gli operatori meno noti Xor, Eqv e Imp.

  • 🔗 Scopo: Gli operatori logici valutano più di una condizione all'interno di una singola istruzione If.
  • and Operare: Restituisce True solo quando tutte le condizioni a cui è associato sono vere.
  • OR Operare: Restituisce True quando almeno una delle condizioni è vera.
  • 🔄 NON Operare: Inverte un risultato, trasformando Vero in Falso e Falso in Vero.
  • 📊 Tabella della verità: Una singola griglia di riferimento mostra il risultato di ciascun operatore per ogni combinazione di input.
  • 🧮 Extra Operatori: Xor, Eqv e Imp gestiscono condizioni esclusive, equivalenti e implicite.
  • ⚠️ Nessun cortocircuito: VBA valuta ogni parte di una condizione, quindi un test di guardia deve essere inserito in un'istruzione If annidata.

Logico VBA Operators: AND, OR, NOT in Excel VBA

Excel VBA logico OperaTors

Supponiamo che tu voglia elaborare un ordine cliente. Per questo, devi prima verificare se il prodotto ordinato esiste o meno. In tal caso, vuoi anche verificare se la quantità disponibile è sufficiente. Gli operatori logici tornano utili in questi casi. Gli operatori logici vengono utilizzati per valutare più di una condizione.

Ogni condizione da sola è costruita da operatori di confronto e restituisce Vero o Falso. Un operatore logico combina quindi questi risultati in un'unica risposta finale.

I principali operatori logici VBA di Excel AND, OR, NOT sono elencati nella tabella seguente:

S / N Operator Descrizione Esempio Uscita
1 and AND: viene utilizzato per combinare più di una condizione. Se tutte le condizioni sono vere, AND restituisce vero. Se una qualsiasi delle condizioni è falsa, AND restituisce falso Se (1 = 1) e (0 = 1) allora falso
2 OR OR: viene utilizzato per combinare più di una condizione. Se una qualsiasi delle condizioni risulta vera, OR restituisce vero. Se sono tutti falsi, OR restituisce falso Se (1 = 1) oppure (5 = 0) allora vero
3 NON NOT: funziona come una funzione inversa. Se la condizione è vera, restituisce falso, mentre se una condizione è falsa, restituisce vero. Se non (0 = 0) allora falso

Le tre descrizioni di cui sopra sono più facili da tenere a mente se considerate come un'unica griglia di input e risultati.

Tabella di verità per VBA Logical OperaTors

Una tabella di verità elenca tutte le combinazioni di input e il risultato restituito da ciascun operatore. Leggerla una volta elimina ogni incertezza da qualsiasi condizione si scriva in seguito.

Condizione A Condizione B A e B A o B Non A
I veri I veri I veri I veri Falso
I veri Falso Falso I veri Falso
Falso I veri Falso I veri I veri
Falso Falso Falso Falso I veri

Due schemi meritano di essere memorizzati. and Produce il valore True solo su una riga su quattro, restringendo così la selezione. OR produce Falso solo su una riga, quindi ne allarga una. NON richiede una sola condizione anziché due, ed è per questo che occupa una colonna a sé stante.

Logico VBA OperaEsempio di fonte Code

Per ragioni di semplicità, confronteremo i numeri codificati.

Aggiungi pulsanti ActiveX al foglio dall'opzione "Inserisci".

Imposta le proprietà come mostrato nell'immagine qui sotto

Logico VBA OperaTors
Logico VBA OperaTors

Nella tabella seguente sono riportate le proprietà che è necessario modificare e i valori che è necessario aggiornare.

S / N Controllate Proprietà Valore
1 PulsanteComando1 Nome btnAND
Didascalia and Operator (1 = 1) e (0 = 0)
2 PulsanteComando2 Nome btnOR
Didascalia OR Operator (1 = 1) Oppure (5 = 0)
3 PulsanteComando3 Nome btnNOT
Didascalia NON Operator Not (0 = 0)

Aggiungere il seguente codice 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 AND Operator

  • “Se (1 = 1) E (0 = 0) Allora” l'istruzione if utilizza l'operatore logico AND per combinare due condizioni (1 = 1) e (0 = 0). Se entrambe le condizioni sono vere, viene eseguito il codice sopra la parola chiave "Else". Se entrambe le condizioni non sono vere, viene eseguito il codice sotto la parola chiave "Else".

Entrambe le condizioni sono vere in questo caso, quindi cliccando sul pulsante viene visualizzato il messaggio "AND valutato come VERO".

Aggiungere il seguente codice 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 OR Operator

  • “Se (1 = 1) Oppure (5 = 0) Allora” L'istruzione if utilizza l'operatore logico OR per combinare due condizioni (1 = 1) oppure (5 = 0). Se una qualsiasi delle condizioni è vera, viene eseguito il codice sopra la parola chiave Else. Se entrambe le condizioni sono false, viene eseguito il codice sotto la parola chiave Else.

La prima condizione è vera e la seconda è falsa, quindi l'operatore OR restituisce comunque vero e il messaggio recita "OR valutato come VERO".

Aggiungere il seguente codice 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 In caso contrario Operator

  • “Se no (0 = 0) allora” La funzione If Not di VBA utilizza l'operatore logico NOT per negare il risultato della condizione dell'istruzione if. La condizione interna (0 = 0) è vera, quindi Not la trasforma in falsa e viene eseguito il codice che segue la parola chiave 'Else'. Se la condizione interna fosse stata falsa, Not l'avrebbe resa vera e sarebbe stato eseguito il codice che precede 'Else'.

Ciascuno di questi tre pulsanti verifica un valore fisso. Le condizioni reali vengono lette dal foglio di calcolo e combinano entrambe le famiglie di operatori.

Come combinare logica e confronto OperaTors

Una macro di produzione raramente verifica un valore numerico predefinito. Legge un valore, lo confronta e unisce diversi di questi confronti in un'unica decisione. La macro seguente approva un ordine solo quando il prodotto esiste, la quantità è sufficiente e l'account del cliente non è bloccato.

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

Tre regole mantengono una condizione combinata leggibile e corretta.

  • Metti tra parentesi ogni confronto: VBA valuta gli operatori di confronto prima di quelli logici, ma le parentesi creano il gruppoping è evidente e previene errori quando la condizione si aggrava in seguito.
  • Attenzione alla precedenza di "E" rispetto a "O": A oppure B e C si legge come A oppure (B e C)Se intendevi (A o B) e C, le parentesi sono obbligatorie.
  • Applica la dicitura "Non a un valore booleano, non a un numero": Non in attesa si legge in modo naturale. Evitare Nota 5, perché Not esegue un'operazione bit a bit sui numeri e restituisce -6 anziché False.

⚠️ Attenzione: VBA non va in cortocircuito. Se (ws è nullo) oppure (ws.Name = “Dati”) alloraLa seconda parte viene comunque eseguita anche quando la prima è vera, il che genera l'errore di runtime 91. Suddividere tali controlli in istruzioni If annidate.

Xor, Eqv e Imp Operators in VBA

Gli operatori AND, OR e NOT coprono quasi tutte le situazioni quotidiane, ma VBA fornisce altri tre operatori logici che talvolta esprimono una regola in modo molto più chiaro rispetto a una serie di istruzioni If.

Operator Restituisce True quando Esempio Uscita
Xor Esattamente una delle due condizioni è vera, mai entrambe. (1 = 1) Xor (5 = 0) I veri
Equivalente Entrambe le condizioni hanno lo stesso valore, entrambe vere o entrambe false (1 = 1) Eqv (2 = 2) I veri
Diavoletto La prima condizione implica la seconda; solo Vero Imp Falso è falso (1 = 1) Imp (5 = 0) Falso

Xor è la più pratica delle tre. Si adatta a una regola come "uno sconto si applica a un membro dello staff o a un membro del programma fedeltà, ma non a chi è entrambi". Eqv e Imp compaiono principalmente in codici più datati e negli esercizi di logica, quindi riconoscerle è più importante che scriverle.

Scarica Excel contenente il codice sopra

DOMANDE FREQUENTI

Non esiste un limite pratico, ma la leggibilità cala rapidamente oltre tre o quattro. Sposta una condizione lunga in una variabile booleana con un nome descrittivo, quindi verifica quella variabile nell'istruzione If.

Applicato a un numero, l'operatore Not esegue un'inversione bit a bit anziché logica. Applicalo solo a un confronto o a una variabile booleana, come Not (Qty > 0), in modo che il risultato sia Vero o Falso.

La logica è la stessa, ma la sintassi è diversa. Una formula del foglio di calcolo le chiama come funzioni, AND(A1>0, B1>0). VBA le inserisce invece tra le condizioni, come in Se A1 > 0 E B1 > 0 Allora.

Sì. Incolla la condizione e un assistente IA la riscriverà con parentesi più chiare o la dividerà in variabili booleane denominate. Verifica la riscrittura confrontandola con una tabella di verità, perché una semplificazione errata modifica il comportamento in modo impercettibile.

Sì. Basta fornire l'espressione e un assistente basato sull'intelligenza artificiale elenca tutte le combinazioni di input con i relativi risultati, individuando rapidamente eventuali rami irraggiungibili o parentesi posizionate in modo errato.

Riassumi questo post con: