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.

  • 🔗 Svrha: Logički operatori procjenjuju više od jednog uvjeta unutar jedne If naredbe.
  • I Operator: Vraća vrijednost True samo kada je svaki uvjet koji spaja True.
  • OR Operator: Vraća True kada je barem jedan od uvjeta True.
  • 🔄 NE Operator: Invertira rezultat, pretvarajući True u False i False u True.
  • 📊 Tablica istine: Jedna referentna mreža prikazuje rezultat svakog operatora za svaku ulaznu kombinaciju.
  • 🧮 dodatni Operatorovi: Xor, Eqv i Imp obrađuju isključive, ekvivalentne i implicitne uvjete.
  • ⚠️ Bez kratkog spoja: VBA procjenjuje svaki dio uvjeta, tako da zaštitni test mora biti unutar ugniježđenog If-a.

VBA Logički Operaoperatori: I, ILI, NE u Excelu VBA

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

VBA Logički Operaulagatelji
VBA Logički Operaulagatelji

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

Pitanja i odgovori

Ne postoji praktično ograničenje, ali čitljivost brzo pada nakon tri ili četiri. Premjestite dugi uvjet u logičku varijablu s opisnim nazivom, a zatim testirajte tu varijablu u If naredbi.

Primijenjeno na broj, Not izvodi bitnu inverziju umjesto logičke. Primjenjuje se samo na usporedbu ili logičku varijablu, kao što je Not (Qty > 0), tako da je rezultat True ili False.

Logika se podudara, ali sintaksa se razlikuje. Formula radnog lista ih poziva kao funkcije, AND(A1>0, B1>0). VBA ih umjesto toga smješta između uvjeta, kao u Ako je A1 > 0 I B1 > 0 Tada.

Da. Zalijepite uvjet i AI asistent će ga prepisati s jasnijim zagradama ili ga podijeliti na imenovane Booleove varijable. Provjerite prepisivanje u odnosu na tablicu istinitosti, jer pogrešno pojednostavljenje tiho mijenja ponašanje.

Da. Unesite izraz i AI asistent će navesti svaku ulaznu kombinaciju s rezultatom, što brzo otkriva granu koja se nikada ne može dosegnuti ili zagradu postavljenu na pogrešnu poziciju.

Sažmite ovu objavu uz: