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.

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

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
