VBA Looginen Operators: JA, TAI, EI, JOS EI Excel VBA:ssa
⚡ Älykäs yhteenveto
VBA Looginen Operaoperaattorit yhdistävät useita ehtoja yhdeksi True- tai False-tulokseksi. Tällä sivulla selitetään JA-, TAI- ja EI-operaattorit suoritettavien komentopainike-esimerkkien, täydellisen totuusarvotaulukon ja vähemmän tunnettujen Xor-, Eqv- ja Imp-operaattoreiden avulla.

Excel VBA Looginen OperaTors
Oletetaan, että haluat käsitellä asiakkaan tilauksen. Tätä varten haluat ensin tarkistaa, onko tilattu tuote olemassa vai ei. Jos on, haluat myös tarkistaa, onko käsillä oleva määrä tarpeeksi. Loogiset operaattorit ovat hyödyllisiä tällaisissa tapauksissa. Loogisia operaattoreita käytetään useamman kuin yhden ehdon arvioimiseen.
Jokainen ehto itsessään rakentuu vertailuoperaattorit ja palauttaa arvon True tai False. Looginen operaattori yhdistää sitten tulokset yhdeksi lopulliseksi vastaukseksi.
Tärkeimmät Excel VBA:n loogiset operaattorit JA, TAI, EI on lueteltu alla olevassa taulukossa:
| S / N | OperaTor | Tuotetiedot | esimerkki | ulostulo |
|---|---|---|---|---|
| 1 | JA | JA: Tätä käytetään yhdistämään useampi kuin yksi ehto. Jos kaikki ehdot ovat tosia, AND arvioi todeksi. Jos jokin ehdoista on epätosi, AND arvioi epätosi | Jos (1 = 1) ja (0 = 1), niin | väärä |
| 2 | OR | TAI: Tätä käytetään useamman kuin yhden ehdon yhdistämiseen. Jos jokin ehdoista on tosi, TAI palauttaa tosi. Jos kaikki ne ovat vääriä, TAI palauttaa epätosi | Jos (1 = 1) Tai (5 = 0) Niin | totta |
| 3 | ÄLÄ | EI: Tämä toimii käänteisenä funktiona. Jos ehto on tosi, se palauttaa epätosi, ja jos ehto on epätosi, se palauttaa tosi. | Jos ei (0 = 0), niin | väärä |
Yllä olevat kolme kuvausta on helpompi pitää mielessä yhtenä syötteiden ja tulosten ruudukkona.
Totuustaulukko VBA Logicille OperaTors
Totuusarvotaulukko listaa kaikki syötteiden yhdistelmät ja kunkin operaattorin palauttaman tuloksen. Taulukon lukeminen kerran poistaa arvailun myöhemmin kirjoittamistasi ehdoista.
| Kunto A | Ehto B | A ja B | A tai B | Ei A |
|---|---|---|---|---|
| Totta | Totta | Totta | Totta | Väärä |
| Totta | Väärä | Väärä | Totta | Väärä |
| Väärä | Totta | Väärä | Totta | Totta |
| Väärä | Väärä | Väärä | Väärä | Totta |
Kaksi kaavaa kannattaa opetella ulkoa. JA tuottaa arvon True vain yhdellä rivillä neljästä, joten se rajaa valintaa. OR tuottaa arvon False vain yhdellä rivillä, joten se leventää riviä yhdellä. ÄLÄ ottaa yhden ehdon kahden sijaan, minkä vuoksi sillä on oma sarake.
VBA Looginen Operaesimerkkilähteestä Code
Yksinkertaisuuden vuoksi vertaamme kovakoodattuja lukuja.
Lisää ActiveX-painikkeet taulukkoon "Lisää-vaihtoehdosta".
Aseta ominaisuudet alla olevan kuvan mukaisesti

Seuraavassa taulukossa näkyvät ominaisuudet, joita sinun on muutettava, ja arvot, jotka sinun on myös päivitettävä.
| S / N | Valvonta: | Omaisuus | Arvo |
|---|---|---|---|
| 1 | Komentopainike1 | Nimi | btnAND |
| Kuvateksti | JA Operator (1 = 1) ja (0 = 0) | ||
| 2 | Komentopainike2 | Nimi | btnOR |
| Kuvateksti | OR Operator (1 = 1) tai (5 = 0) | ||
| 3 | Komentopainike3 | Nimi | btnNOT |
| Kuvateksti | ÄLÄ OperaEi (0 = 0) |
Lisää seuraava koodi btnAND_Clickiin
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 Jos JA OperaTor
- "Jos (1 = 1) ja (0 = 0) sitten" if-lause käyttää loogista AND-operaattoria kahden ehdon (1 = 1) ja (0 = 0) yhdistämiseen. Jos molemmat ehdot ovat tosia, Muu-avainsanan yläpuolella oleva koodi suoritetaan. Jos molemmat ehdot eivät ole tosia, avainsanan Muut alla oleva koodi suoritetaan.
Molemmat ehdot ovat tässä tosia, joten painikkeen napsauttaminen näyttää "JA arvioidaan arvoksi TOSI".
Lisää seuraava koodi kohtaan 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 Jos TAI OperaTor
- "Jos (1 = 1) tai (5 = 0) sitten" if-lauseke käyttää TAI-loogista operaattoria kahden ehdon (1 = 1) tai (5 = 0) yhdistämiseen. Jos jokin ehdoista on tosi, Else-avainsanan yläpuolella oleva koodi suoritetaan. Jos molemmat ehdot ovat epätosia, Else-avainsanan alapuolella oleva koodi suoritetaan.
Ensimmäinen ehto on tosi ja toinen epätosi, joten TAI palauttaa silti arvon tosi ja viestissä lukee ”TAI arvioidaan arvoksi TOSI”.
Lisää seuraava koodi btnNOT_Clickiin
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 Jos EI OperaTor
- "Jos ei (0 = 0) sitten" VBA:n If Not -funktio käyttää NOT-loogista operaattoria if-lauseke-ehdon tuloksen kieltämiseen. Sisäinen ehto (0 = 0) on tosi, joten Not muuttaa sen arvoksi epätosi ja 'Else'-avainsanan alapuolella oleva koodi suoritetaan. Jos sisäinen ehto olisi ollut epätosi, Not olisi muuttanut sen arvoksi tosi ja 'Else'-avainsanan yläpuolella oleva koodi olisi suoritettu sen sijaan.
Nämä kolme painiketta testaavat kukin kiinteää arvoa. Todelliset olosuhteet luetaan laskentataulukosta ja ne yhdistävät molemmat operaattoriryhmät.
Miten yhdistää logiikka ja vertailu OperaTors
Tuotantomakro testaa harvoin kiinteästi koodattua numeroa. Se lukee arvon, vertaa sitä ja yhdistää useita näistä vertailuista yhdeksi päätökseksi. Alla oleva makro hyväksyy tilauksen vain, kun tuote on olemassa, määrä on riittävä ja asiakastili ei ole odotustilassa.
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
Kolme sääntöä pitää yhdistetyn ehdon luettavana ja oikeina.
- Sulkeissa jokainen vertailu: VBA arvioi vertailuoperaattorit ennen loogisia operaattoreita, mutta sulkeet tekevät joukosta loogisen.ping ilmeinen ja estää virheen, kun tila myöhemmin pahenee.
- Muista Ja-sanan etusija Tai-sanaan nähden: A tai B ja C luetaan nimellä A Tai (B ja C)Jos tarkoitit (A tai B) ja C, sulkeet ovat pakollisia.
- Käytä Not-operaattoria totuusarvoon, ei lukuun: Ei odotustilassa lukee luonnollisesti. Vältä Ei 5, koska Not suorittaa bittikohtaisen operaation luvuille ja palauttaa -6 arvon False sijaan.
⚠️ Varoitus: VBA ei aiheuta oikosulkua. Jos (ws ei ole mitään) tai (ws.Name = “Data”) niin, toinen osa suoritetaan edelleen, vaikka ensimmäinen olisi tosi, mikä aiheuttaa suorituksenaikaisen virheen 91. Jaa tällaiset suojat sisäkkäisiin If-lausekkeisiin.
Xor, Eqv ja Imp Operators VBA:ssa
JA-, TAI- ja EI-operaattorit kattavat lähes kaikki arkipäivän ehdot, mutta VBA tarjoaa kolme muuta loogista operaattoria, jotka toisinaan ilmaisevat säännön paljon selkeämmin kuin joukko If-lausekkeita.
| OperaTor | Palauttaa arvon True, kun | esimerkki | ulostulo |
|---|---|---|---|
| xor | Täsmälleen toinen kahdesta ehdosta on totta, ei koskaan molempia | (1 = 1) Xor (5 = 0) | Totta |
| Yhtälö | Molemmilla ehdoilla on sama arvo, molemmat tosia tai molemmat epätosia | (1 = 1) Yhtälö (2 = 2) | Totta |
| pikkupaholainen | Ensimmäinen ehto viittaa toiseen; vain True Imp False on falsi. | (1 = 1) Vaikutus (5 = 0) | Väärä |
Xor on kolmesta käytännöllisin. Se sopii esimerkiksi sääntöön, kuten ”alennus koskee henkilökuntaan kuuluvaa tai kanta-asiakasohjelmaan kuuluvaa, mutta ei molempia”. Eqv ja Imp esiintyvät pääasiassa vanhemmassa koodissa ja logiikkaharjoituksissa, joten niiden tunnistaminen on tärkeämpää kuin niiden kirjoittaminen.
Lataa Excel, joka sisältää yllä olevan koodin
