VBA logikai Operators: ÉS, VAGY, NEM, HA NEM az Excel VBA-ban

⚡ Okos összefoglaló

VBA logikai OperaAz operátorok több feltételt kombinálnak egyetlen Igaz vagy Hamis eredményné. Ez az oldal az ÉS, VAGY és NEM operátorokat ismerteti futtatható parancsgomb példákkal, egy teljes igazságtáblázattal, valamint a kevésbé ismert Xor, Eqv és Imp operátorokkal.

  • 🔗 Cél: A logikai operátorok egyetlen If utasításon belül egynél több feltételt is kiértékelnek.
  • ✅ ÉS Operator: Csak akkor ad vissza Igaz értéket, ha minden feltétel, amelyhez csatlakozik, Igaz.
  • ➕ OR Operator: Igaz értéket ad vissza, ha legalább az egyik feltétel igaz.
  • 🔄 NEM Operator: Megfordítja az eredményt, Igaz értéket Hamisra, a Hamis értéket pedig Igazra fordítja.
  • 📊 Igazság táblázat: Egyetlen referenciarács mutatja az egyes operátorok eredményét minden bemeneti kombináció esetén.
  • 🧮 külön - Extra Operators: Az Xor, az Eqv és az Imp függvények kizárólagos, ekvivalens és implicit feltételeket kezelnek.
  • ⚠️ Nincs rövidzárlat: A VBA egy feltétel minden részét kiértékeli, így egy védelmi tesztnek egy beágyazott If függvényben kell lennie.

VBA logikai Operators: ÉS, VAGY, NEM Excel VBA-ban

Excel VBA Logikai Operatorzok

Tegyük fel, hogy egy vásárlói megrendelést szeretne feldolgozni. Ehhez először ellenőrizni szeretné, hogy a megrendelt termék létezik-e vagy sem. Ha igen, akkor azt is ellenőrizni kell, hogy elegendő-e a kéznél lévő mennyiség. A logikai operátorok jól jönnek ilyen esetekben. A logikai operátorok egynél több feltétel kiértékelésére szolgálnak.

Minden egyes feltétel önmagában épül fel összehasonlító operátorok és Igaz vagy Hamis értéket ad vissza. Egy logikai operátor ezután egyetlen végső válasszal egyesíti ezeket az eredményeket.

A fő Excel VBA logikai operátorok ÉS, VAGY, NEM az alábbi táblázatban találhatók:

S / N Operator Leírás Példa teljesítmény
1 ÉS ÉS: Ez egynél több feltétel kombinálására szolgál. Ha minden feltétel igaz, az ÉS igazra értékeli. Ha bármelyik feltétel hamis, az ÉS hamisra értékeli Ha (1 = 1) És (0 = 1), Akkor hamis
2 OR VAGY: Ez egynél több feltétel kombinálására szolgál. Ha valamelyik feltétel igaz, akkor az VAGY igazat ad vissza. Ha mindegyik hamis, a VAGY hamis értéket ad vissza Ha (1 = 1) Vagy (5 = 0) Akkor igaz
3 NEM NEM: Ez úgy működik, mint egy inverz függvény. Ha a feltétel igaz, akkor hamis értéket ad vissza, ha pedig hamis, akkor igazat ad vissza. Ha nem (0 = 0), akkor hamis

A fenti három leírást könnyebb fejben tartani, ha a bemeneteket és eredményeket egyetlen táblázatként használjuk.

Igazságtáblázat VBA logikai függvényekhez Operatorzok

Egy igazságtáblázat felsorolja a bemenetek összes kombinációját és az egyes operátorok által visszaadott eredményt. Egyszeri elolvasása megszünteti a találgatást a későbbi feltételek megírásánál.

A feltétel B feltétel A és B A vagy B Nem A
Igaz Igaz Igaz Igaz Hamis
Igaz Hamis Hamis Igaz Hamis
Hamis Igaz Hamis Igaz Igaz
Hamis Hamis Hamis Hamis Igaz

Két mintát érdemes megjegyezni. ÉS a négy sorból csak egyben eredményez Igaz értéket, így leszűkíti a kijelölést. OR csak egy sorban eredményez Hamis értéket, tehát eggyel szélesebbre skálázza. NEM egyetlen feltételt vesz fel kettő helyett, ezért van egy saját oszlopa.

VBA logikai Operapélda forrása Code

Az egyszerűség kedvéért keményen kódolt számokat fogunk összehasonlítani.

Adjon hozzá ActiveX gombokat a laphoz a „Beszúrás” opcióból.

Állítsa be a tulajdonságokat az alábbi képen látható módon

VBA logikai Operatorzok
VBA logikai Operatorzok

A következő táblázat azokat a tulajdonságokat mutatja, amelyeket módosítani kell, és azokat az értékeket, amelyeket szintén frissítenie kell.

S / N Vezérlés Ingatlanok Érték:
1 Parancsgomb1 Név btnAND
Képaláírás ÉS Operator (1 = 1) És (0 = 0)
2 Parancsgomb2 Név btnOR
Képaláírás OR Operator (1 = 1) vagy (5 = 0)
3 Parancsgomb3 Név btnNOT
Képaláírás NEM Operator Nem (0 = 0)

Adja hozzá a következő kódot a btnAND_Clickhez

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 Ha ÉS Operator

  • "Ha (1 = 1) és (0 = 0) akkor" az if utasítás az ÉS logikai operátort használja két feltétel (1 = 1) és (0 = 0) kombinálására. Ha mindkét feltétel igaz, akkor az „Else” kulcsszó feletti kód végrehajtásra kerül. Ha mindkét feltétel nem igaz, akkor az „Egyéb” kulcsszó alatti kód végrehajtásra kerül.

Mindkét feltétel igaz, így a gombra kattintva az „ÉS” függvény IGAZ eredményt ad.

Adja hozzá a következő kódot a btnOR_Clickhez

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 Ha VAGY Operator

  • "Ha (1 = 1) vagy (5 = 0) akkor" Az if utasítás az OR logikai operátort használja két feltétel (1 = 1) vagy (5 = 0) kombinálására. Ha bármelyik feltétel igaz, akkor az Else kulcsszó feletti kód hajtódik végre. Ha mindkét feltétel hamis, akkor az Else kulcsszó alatti kód hajtódik végre.

Az első feltétel igaz, a második hamis, így az OR függvény továbbra is igaz értéket ad vissza, és az üzenet így szól: „A VAGY függvény kiértékelve IGAZ-ra”.

Adja hozzá a következő kódot a btnNOT_Clickhez

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 Ha NEM Operator

  • "Ha nem (0 = 0) akkor" A VBA If Not függvény a NOT logikai operátort használja az if utasítás feltételének eredményének negálására. A belső feltétel (0 = 0) igaz, ezért a Not hamissá alakítja, és az 'Else' kulcsszó alatti kód fut le. Ha a belső feltétel hamis lett volna, a Not igazra változtatta volna, és az 'Else' feletti kód futott volna le.

Ez a három gomb mindegyike egy fix értéket tesztel. A valós körülmények a munkalapról olvashatók ki, és mindkét operátorcsaládot keverik.

Hogyan ötvözzük a logikát és az összehasonlítást Operatorzok

Egy termelési makró ritkán tesztel fixen kódolt számokat. Beolvas egy értéket, összehasonlítja azt, és ezek közül több összehasonlítást egyetlen döntéssé egyesít. Az alábbi makró csak akkor hagyja jóvá a rendelést, ha a termék létezik, a mennyiség elegendő, és az ügyfélszámla nincs felfüggesztve.

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

Három szabály biztosítja, hogy egy kombinált feltétel olvasható és helyes legyen.

  • Minden összehasonlítás zárójelben: A VBA a logikai operátorok előtt értékeli ki az összehasonlító operátorokat, de a zárójelek az alsó határt adják.ping nyilvánvaló, és megelőzhető a hiba, amikor a helyzet később súlyosbodik.
  • Ügyeljen az „És” elsőbbségére az „Or”-ral szemben: A vagy B és C így olvasható A Vagy (B És C)Ha arra gondoltál, hogy (A vagy B) és C, a zárójelek használata kötelező.
  • Nem logikai értékre, nem számra alkalmazza: Nincs várakoztatás alatt természetesen olvas. Kerülje Nem 5., mivel a Not bitenkénti műveletet hajt végre számokon, és -6 értéket ad vissza a False helyett.

⚠️ Figyelmeztetés: A VBA nem zár rövidre. Ha (ws Is Nothing) Vagy (ws.Name = “Data”) Akkor, a második rész akkor is fut, ha az első igaz, ami a 91-es futásidejű hibát okozza. Bontsa fel az ilyen őröket beágyazott If utasításokra.

Xor, Eqv és Imp Operatorok VBA-ban

Az ÉS, VAGY és NEM operátorok szinte minden mindennapi feltételt lefednek, de a VBA további három logikai operátort biztosít, amelyek esetenként sokkal világosabban fejeznek ki egy szabályt, mint egy egymásra fészkelt Ha utasítások.

Operator Igaz értéket ad vissza, ha Példa teljesítmény
xor A két feltétel közül pontosan az egyik igaz, soha nem mindkettő (1 = 1) XOR (5 = 0) Igaz
Egyenlet Mindkét feltételnek ugyanaz az értéke, mindkettő igaz, vagy mindkettő hamis (1 = 1) Egyenlet (2 = 2) Igaz
Manó Az első feltétel magában foglalja a másodikat; csak az Igaz / Hamis érték hamis. (1 = 1) Imp (5 = 0) Hamis

Az Xor a három közül a legpraktikusabb. Jól illik egy olyan szabályhoz, mint például: „a kedvezmény csak alkalmazottra vagy törzsvásárlóra vonatkozik, de nem arra, aki mindkettő”. Az Eqv és az Imp főként régebbi kódban és logikai feladatokban jelenik meg, így felismerésük fontosabb, mint megírásuk.

Töltse le a fenti kódot tartalmazó Excelt

GYIK

Nincs gyakorlati korlát, de az olvashatóság gyorsan romlik három vagy négy felett. Helyezzen el egy hosszú feltételt egy leíró nevű logikai változóban, majd tesztelje ezt a változót az If utasításban.

Egy számra alkalmazva a Not függvény bitenkénti inverziót hajt végre logikai inverzió helyett. Csak összehasonlításra vagy logikai változóra, például Not (Qty > 0) alkalmazza, így az eredmény True (igaz) vagy False (hamis).

A logika egyezik, de a szintaxis eltérő. Egy munkalapképlet függvényként hívja meg őket, ÉS(A1>0, B1>0). A VBA ehelyett a feltételek közé helyezi őket, például: Ha A1 > 0 És B1 > 0 Akkor.

Igen. Illeszd be a feltételt, és egy MI-asszisztens átírja tisztább zárójelekkel, vagy elnevezett Boole-változókra osztja. Ellenőrizd az átírást egy igazságtáblázattal, mert egy rossz egyszerűsítés észrevétlenül megváltoztatja a viselkedést.

Igen. Adja meg a kifejezést, és egy MI asszisztens listázza az összes bemeneti kombinációt az eredménnyel együtt, ami gyorsan feltár egy soha nem elérhető ágat, vagy egy rossz pozícióba helyezett zárójelet.

Foglald össze ezt a bejegyzést a következőképpen: