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.

  • 🔗 Tarkoitus: Loogiset operaattorit arvioivat useamman kuin yhden ehdon yhden If-lausekkeen sisällä.
  • ✅ JA Operator: Palauttaa arvon True vain, kun jokainen siihen liitetty ehto on True.
  • ➕ OR Operator: Palauttaa arvon True, kun vähintään yksi ehdoista on True.
  • 🔄 ÄLÄ Operator: Kääntää tuloksen kääntäen arvon True arvoksi False ja arvon False arvoksi True.
  • 📊 Totuustaulukko: Yksi viiteruudukko näyttää kunkin operaattorin tuloksen jokaiselle syöttöyhdistelmälle.
  • 🧮 Lisää Operatorit: Xor, Eqv ja Imp käsittelevät poissulkevia, ekvivalentteja ja implisiittisiä ehtoja.
  • ⚠️ Ei oikosulkua: VBA arvioi ehdon jokaisen osan, joten suojaustestin on sijaittava sisäkkäisessä If-lausekkeessa.

VBA Looginen Operatekijät: JA, TAI, EI Excel VBA:ssa

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

VBA Looginen OperaTors
VBA Looginen OperaTors

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

UKK

Käytännössä ei ole rajaa, mutta luettavuus heikkenee nopeasti kolmen tai neljän jälkeen. Siirrä pitkä ehto loogiseksi muuttujaksi kuvaavalla nimellä ja testaa sitten kyseistä muuttujaa If-lausekkeessa.

Lukuun sovellettuna Not suorittaa bittikohtaisen inversion loogisen inversion sijaan. Käytä sitä vain vertailuun tai loogiseen muuttujaan, kuten Not (Määrä > 0), jolloin tulos on True tai False.

Logiikka täsmää, mutta syntaksi eroaa. Laskentataulukon kaava kutsuu niitä funktioina, JA(A1>0, B1>0). VBA sijoittaa ne ehtojen väliin, kuten Jos A1 > 0 Ja B1 > 0 Silloin.

Kyllä. Liitä ehto, niin tekoälyavustaja kirjoittaa sen uudelleen selkeämmillä sulkeilla tai jakaa sen nimettyihin totuusarvomuuttujiin. Tarkista uudelleenkirjoitus totuusarvotaulua vasten, koska väärä sievennys muuttaa toimintaa hiljaa.

Kyllä. Syötä lauseke, niin tekoälyavustaja listaa jokaisen syöteyhdistelmän tuloksen kanssa, mikä paljastaa nopeasti haaran, johon ei koskaan päästä, tai väärään paikkaan sijoitetun sulkeen.

Tiivistä tämä viesti seuraavasti: