VBA Logički Operatorovi: I, ILI, NE, AKO NIJE u Excel VBA
⚡ Pametni sažetak
VBA Logički OperaUvjeti kombiniraju nekoliko uvjeta u jedan rezultat True ili False. Ova stranica objašnjava I, ILI i NE s primjerima izvršnih naredbenih gumba, potpunom tablicom istinitosti i manje poznatim operatorima Xor, Eqv i Imp.

Excel VBA Logičan Operaulagatelji
Recimo da želite obraditi narudžbu kupca. Za to prvo želite provjeriti postoji li naručeni proizvod ili ne. Ako postoji, također želite provjeriti je li količina pri ruci dovoljna. Logički operatori dobro dolaze u takvim slučajevima. Logički operatori koriste se za procjenu više od jednog uvjeta.
Svaki uvjet za sebe izgrađen je od operatori usporedbe i vraća True ili False. Logički operator zatim kombinira te rezultate u jedan konačni odgovor.
Glavni Excel VBA logički operatori AND, OR, NOT navedeni su u tablici ispod:
| S / N | Operahumka | Description | Primjer | Izlaz |
|---|---|---|---|---|
| 1 | I | I: Ovo se koristi za kombiniranje više od jednog uvjeta. Ako su svi uvjeti istiniti, AND procjenjuje se na istinito. Ako je bilo koji od uvjeta lažan, I procjenjuje se na lažno | Ako je (1 = 1) i (0 = 1) onda | lažan |
| 2 | OR | ILI: Ovo se koristi za kombiniranje više od jednog uvjeta. Ako bilo koji od uvjeta bude istinit, OR vraća istinito. Ako su svi netočni, OR vraća netočno | Ako je (1 = 1) ili (5 = 0) onda | istinski |
| 3 | NE | NE: Ovo radi kao inverzna funkcija. Ako je uvjet istinit, vraća false, a ako je uvjet false, vraća true. | Ako ne (0 = 0) onda | lažan |
Tri gornja opisa lakše je zapamtiti kao jednu mrežu ulaza i rezultata.
Tablica istinitosti za VBA logičke operacije Operaulagatelji
Tablica istinitosti navodi svaku kombinaciju ulaza i rezultat koji svaki operator vraća. Jedno čitanje uklanja nagađanje iz bilo kojeg uvjeta koji kasnije napišete.
| Uvjet A | Uvjet B | A i B | A ili B | Ne A |
|---|---|---|---|---|
| Pravi | Pravi | Pravi | Pravi | Lažan |
| Pravi | Lažan | Lažan | Pravi | Lažan |
| Lažan | Pravi | Lažan | Pravi | Pravi |
| Lažan | Lažan | Lažan | Lažan | Pravi |
Vrijedi zapamtiti dva obrasca. I daje vrijednost True samo u jednom od četiri retka, pa sužava odabir. OR proizvodi False samo u jednom retku, pa proširuje jedan. NE uzima jedan uvjet umjesto dva, zbog čega ima jedan vlastiti stupac.
VBA Logički OperaPrimjer izvora Code
Radi jednostavnosti, uspoređivat ćemo čvrsto kodirane brojeve.
Dodajte ActiveX gumbe na list iz "Opcije umetanja".
Postavite svojstva kao što je prikazano na slici ispod

Sljedeća tablica prikazuje svojstva koja trebate promijeniti i vrijednosti koje također trebate ažurirati.
| S / N | kontrola | Svojstvo | Još malo brojeva |
|---|---|---|---|
| 1 | CommandButton1 | Ime | btnAND |
| Naslov | I Operator (1 = 1) i (0 = 0) | ||
| 2 | CommandButton2 | Ime | btnOR |
| Naslov | OR Operator (1 = 1) Ili (5 = 0) | ||
| 3 | CommandButton3 | Ime | btnNE |
| Naslov | NE Operator ne (0 = 0) |
Dodajte sljedeći kod u 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 Ako je AND Operahumka
- "Ako je (1 = 1) i (0 = 0) onda" naredba if koristi logički operator AND za kombiniranje dva uvjeta (1 = 1) i (0 = 0). Ako su oba uvjeta istinita, izvršava se kod iznad ključne riječi 'Else'. Ako oba uvjeta nisu istinita, izvršava se kod ispod ključne riječi 'Else'.
Oba uvjeta su ovdje istinita, pa klik na gumb prikazuje "I procijenjeno kao ISTINA".
Dodajte sljedeći kod u 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 Ako ILI Operahumka
- “Ako je (1 = 1) Ili (5 = 0) Onda” Naredba if koristi logički operator OR za kombiniranje dvaju uvjeta (1 = 1) Ili (5 = 0). Ako je bilo koji od uvjeta istinit, izvršava se kod iznad ključne riječi Else. Ako su oba uvjeta netočna, izvršava se kod ispod ključne riječi Else.
Prvi uvjet je istinit, a drugi je neistinit, pa ILI i dalje vraća istinito, a poruka glasi „ILI procijenjeno kao ISTINA“.
Dodajte sljedeći kod u 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 Ako NE Operahumka
- "Ako ne (0 = 0) tada" VBA funkcija If Not koristi logički operator NOT za negiranje rezultata uvjeta if naredbe. Unutarnji uvjet (0 = 0) je istinit, pa ga Not pretvara u neistinit i izvršava se kôd ispod ključne riječi 'Else'. Da je unutarnji uvjet bio neistinit, Not bi ga pretvorio u istinit i umjesto toga bi se izvršio kôd iznad 'Else'.
Ova tri gumba testiraju fiksnu vrijednost. Stvarni uvjeti čitaju se s radnog lista i kombiniraju obje porodice operatora.
Kako kombinirati logiku i usporedbu Operaulagatelji
Proizvodni makro rijetko testira fiksno kodirani broj. Čita vrijednost, uspoređuje je i spaja nekoliko tih usporedbi u jednu odluku. Makro u nastavku odobrava narudžbu samo kada proizvod postoji, količina je dovoljna i račun kupca nije na čekanju.
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
Tri pravila održavaju kombinirani uvjet čitljivim i ispravnim.
- U zagrade uvrstite svaku usporedbu: VBA procjenjuje operatore usporedbe prije logičkih, ali zagrade čine grupuping očito i spriječiti grešku kada se stanje kasnije pogorša.
- Imajte na umu prednost operatora And nad operatorom Or: A ili B i C čita se kao A ili (B i C)Ako si mislio/mislila (A ili B) i C, zagrade su obavezne.
- Primijeni Not na Booleovu vrijednost, not na broj: Nije na čekanju čita se prirodno. Izbjegavajte Ne 5. godine, jer Not izvodi bitnu operaciju na brojevima i vraća -6 umjesto False.
⚠️ Upozorenje: VBA ne uzrokuje kratki spoj. U Ako (ws nije ništa) ili (ws.Naziv = “Podaci”) tada, drugi dio se i dalje izvršava čak i kada je prvi istinit, što izaziva grešku u vremenu izvođenja 91. Podijelite takve čuvare u ugniježđene If naredbe.
Xor, Eqv i Imp Operatori u VBA-i
I, ILI i NOT pokrivaju gotovo svaki svakodnevni uvjet, ali VBA nudi još tri logička operatora koji povremeno izražavaju pravilo puno jasnije od skupa If naredbi.
| Operahumka | Vraća True kada | Primjer | Izlaz |
|---|---|---|---|
| xor | Točno jedan od dva uvjeta je istinit, nikada oba | (1 = 1) Xor (5 = 0) | Pravi |
| Jednadžba | Oba uvjeta imaju istu vrijednost, oba su istinita ili oba su neistinita | (1 = 1) Jednadžba (2 = 2) | Pravi |
| vragolan | Prvi uvjet implicira drugi; samo je True (istina) i False (neistinito) lažno. | (1 = 1) Poboljšano (5 = 0) | Lažan |
Xor je najpraktičniji od ta tri. Odgovara pravilu poput „popust se odnosi na člana osoblja ili člana programa vjernosti, ali ne na nekoga tko je oboje“. Eqv i Imp pojavljuju se uglavnom u starijem kodu i u logičkim vježbama, pa je njihovo prepoznavanje važnije od pisanja.
Preuzmite Excel koji sadrži gornji kod
