VBA logiskt Operators: OCH, ELLER, INTE, OM INTE i Excel VBA
โก Smart sammanfattning
VBA logiskt Operatorer kombinerar flera villkor till ett enda Sant eller Falskt resultat. Den hรคr sidan fรถrklarar OCH, ELLER och INTE med exempel pรฅ kรถrbara kommandoknappar, en fullstรคndig sanningstabell och de mindre kรคnda operatorerna XOR, Eqv och Imp.

Excel VBA Logisk Operatorer
Lรฅt oss sรคga att du vill behandla en kundorder. Fรถr det vill du fรถrst kontrollera om den bestรคllda produkten finns eller inte. Om den gรถr det vill du ocksรฅ kontrollera om mรคngden som finns till hands rรคcker. Logiska operatorer kommer vรคl till pass i sรฅdana fall. Logiska operatorer anvรคnds fรถr att utvรคrdera mer รคn ett villkor.
Varje villkor i sig รคr uppbyggt av jรคmfรถrelseoperatรถrer och returnerar Sant eller Falskt. En logisk operator kombinerar sedan dessa resultat till ett slutgiltigt svar.
De huvudsakliga logiska Excel VBA-operatorerna OCH, ELLER, NOT listas i tabellen nedan:
| S / N | Operator | BESKRIVNING | Exempelvis | Produktion |
|---|---|---|---|---|
| 1 | AND | OCH: Detta anvรคnds fรถr att kombinera mer รคn ett villkor. Om alla villkor รคr sanna, OCH utvรคrderas till sanna. Om nรฅgot av villkoren รคr falskt, AND utvรคrderas till falskt | Om (1 = 1) och (0 = 1) dรฅ | falsk |
| 2 | OR | ELLER: Detta anvรคnds fรถr att kombinera mer รคn ett villkor. Om nรฅgot av villkoren utvรคrderas till sant, returnerar OR sant. Om alla รคr falska returnerar OR falskt | Om (1 = 1) eller (5 = 0) dรฅ | sann |
| 3 | INTE | NOT: Den hรคr fungerar som en omvรคnd funktion. Om villkoret รคr sant returnerar det falskt, och om ett villkor รคr falskt returnerar det sant. | Om inte (0 = 0) dรฅ | falsk |
De tre beskrivningarna ovan รคr enklare att hรฅlla i รฅtanke som ett enda rutnรคt av indata och resultat.
Sanningstabell fรถr VBA Logical Operatorer
En sanningstabell listar alla kombinationer av indata och resultatet som varje operator returnerar. Att lรคsa den en gรฅng eliminerar gissningsleken frรฅn alla villkor du senare skriver.
| Villkor A | Villkor B | A och B | A eller B | Inte A |
|---|---|---|---|---|
| Sant | Sant | Sant | Sant | Falsk |
| Sant | Falsk | Falsk | Sant | Falsk |
| Falsk | Sant | Falsk | Sant | Sant |
| Falsk | Falsk | Falsk | Falsk | Sant |
Tvรฅ mรถnster รคr vรคrda att memorera. AND producerar True pรฅ endast en rad av fyra, sรฅ det begrรคnsar ett urval. OR producerar Falskt pรฅ endast en rad, sรฅ den breddar en. INTE tar ett enda villkor istรคllet fรถr tvรฅ, vilket รคr anledningen till att den har en egen kolumn.
VBA logiskt Operators Exempelkรคlla Code
Fรถr enkelhetens skull kommer vi att jรคmfรถra hรฅrdkodade nummer.
Lรคgg till ActiveX-knappar pรฅ arket frรฅn alternativet Infoga.
Stรคll in egenskaperna som visas i bilden nedan

Fรถljande tabell visar egenskaperna som du behรถver รคndra och de vรคrden som du ocksรฅ behรถver uppdatera.
| S / N | kontroll | Fast egendom | Vรคrderar |
|---|---|---|---|
| 1 | Kommandoknapp1 | Namn | btnAND |
| Bildtext | AND Operator (1 = 1) och (0 = 0) | ||
| 2 | Kommandoknapp2 | Namn | btnOR |
| Bildtext | OR Operator (1 = 1) Eller (5 = 0) | ||
| 3 | Kommandoknapp3 | Namn | btn INTE |
| Bildtext | INTE Operaeller Inte (0 = 0) |
Lรคgg till fรถljande kod i 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 Om OCH Operator
- "Om (1 = 1) Och (0 = 0) Dรฅ" if-satsen anvรคnder den logiska operatorn AND fรถr att kombinera tvรฅ villkor (1 = 1) och (0 = 0). Om bรฅda villkoren รคr sanna exekveras koden ovanfรถr nyckelordet 'Else'. Om bรฅda villkoren inte รคr sanna exekveras koden under nyckelordet 'Else'.
Bรฅda villkoren รคr sanna hรคr, sรฅ om du klickar pรฅ knappen visas "OCH utvรคrderat till SANT".
Lรคgg till fรถljande kod till 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 Om ELLER Operator
- "Om (1 = 1) Eller (5 = 0) Dรฅ" if-satsen anvรคnder den logiska operatorn OR fรถr att kombinera tvรฅ villkor (1 = 1) eller (5 = 0). Om nรฅgot av villkoren รคr sant kรถrs koden ovanfรถr nyckelordet Else. Om bรฅda villkoren รคr falska kรถrs koden under nyckelordet Else.
Det fรถrsta villkoret รคr sant och det andra รคr falskt, sรฅ ELLER returnerar fortfarande sant och meddelandet lyder "ELLER utvรคrderat till SANT".
Lรคgg till fรถljande kod till 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 om INTE Operator
- "Om inte (0 = 0) dรฅ" VBA-funktionen If Not anvรคnder den logiska operatorn NOT fรถr att negera resultatet av if-satsens villkor. Det inre villkoret (0 = 0) รคr sant, sรฅ Not gรถr det till falskt och koden under nyckelordet 'Else' kรถrs. Om det inre villkoret hade varit falskt skulle Not ha gjort det sant och koden ovanfรถr 'Else' skulle ha kรถrts istรคllet.
Dessa tre knappar testar var och en ett fast vรคrde. Verkliga fรถrhรฅllanden lรคses frรฅn kalkylbladet och blandar bรฅda operatorfamiljerna.
Hur man kombinerar logik och jรคmfรถrelse Operatorer
Ett produktionsmakro testar sรคllan ett fastlagt tal. Det lรคser ett vรคrde, jรคmfรถr det och sammanfogar flera av dessa jรคmfรถrelser till ett enda beslut. Makrot nedan godkรคnner en order endast nรคr produkten finns, kvantiteten รคr tillrรคcklig och kundkontot inte รคr spรคrrat.
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
Tre regler hรฅller ett kombinerat villkor lรคsbart och korrekt.
- Parentes varje jรคmfรถrelse: VBA utvรคrderar jรคmfรถrelseoperatorer fรถre logiska, men parenteser bildar gruppenping uppenbara och fรถrhindra ett misstag nรคr tillstรฅndet senare fรถrvรคrras.
- Tรคnk pรฅ att Och har fรถretrรคde framfรถr Eller: A eller B och C lรคses som A Eller (B Och C)Om du menade (A eller B) och C, parenteserna รคr obligatoriska.
- Tillรคmpa Inte pรฅ ett booleskt tal, inte pรฅ ett tal: Inte i vรคntelรคge lรคser naturligt. Undvik Inte 5, eftersom Not utfรถr en bitvis operation pรฅ tal och returnerar -6 istรคllet fรถr False.
โ ๏ธ Varning: VBA kortsluter inte. Om (ws รคr ingenting) eller (ws.Name = "Data") dรฅ, den andra delen kรถrs fortfarande รคven nรคr den fรถrsta รคr sann, vilket orsakar kรถrtidsfel 91. Dela upp sรฅdana skydd i kapslade If-satser.
XOR, Eqv och Imp Operatorer i VBA
OCH, ELLER och INTE tรคcker nรคstan alla vardagliga villkor, men VBA tillhandahรฅller ytterligare tre logiska operatorer som ibland uttrycker en regel mycket tydligare รคn ett bo av If-satser.
| Operator | Returnerar Sant nรคr | Exempelvis | Produktion |
|---|---|---|---|
| Xor | Exakt ett av de tvรฅ villkoren รคr sant, aldrig bรฅda | (1 = 1) X eller (5 = 0) | Sant |
| ekv | Bรฅda villkoren har samma vรคrde, bรฅda sanna eller bรฅda falska | (1 = 1) Ekv. (2 = 2) | Sant |
| Imp | Det fรถrsta villkoret antyder det andra; endast Sant Imp Falskt รคr falskt | (1 = 1) Imp (5 = 0) | Falsk |
Xor รคr den mest praktiska av de tre. Den passar en regel som "en rabatt gรคller en anstรคlld eller en lojalitetsmedlem, men inte nรฅgon som รคr bรฅda". Ekv. och Imp fรถrekommer frรคmst i รคldre kod och i logikรถvningar, sรฅ det รคr viktigare att kรคnna igen dem รคn att skriva dem.
Ladda ner Excel som innehรฅller ovanstรฅende kod
