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.

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

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
