Logiczne VBA Operators: ORAZ, LUB, NIE, JEŚLI NIE w Excel VBA
⚡ Inteligentne podsumowanie
Logiczne VBA OperaOperatory łączą kilka warunków w jeden wynik „Prawda” lub „Fałsz”. Ta strona wyjaśnia operatory AND, OR i NOT wraz z przykładami przycisków poleceń, pełną tabelą prawdy oraz mniej znanymi operatorami Xor, Eqv i Imp.

Logiczne Excel VBA Operatorsy
Załóżmy, że chcesz przetworzyć zamówienie klienta. W tym celu najpierw chcesz sprawdzić, czy zamówiony produkt istnieje, czy nie. Jeśli tak, chcesz również sprawdzić, czy ilość dostępna jest wystarczająca. W takich przypadkach przydatne są operatory logiczne. Operatory logiczne służą do oceny więcej niż jednego warunku.
Każdy stan sam w sobie jest zbudowany z operatory porównania i zwraca wartość Prawda lub Fałsz. Następnie operator logiczny łączy te wyniki w jedną, ostateczną odpowiedź.
Główne operatory logiczne języka VBA programu Excel: AND, OR, NOT przedstawiono w poniższej tabeli:
| S / N | OperaTor | OPIS | Przykład | Wydajność |
|---|---|---|---|---|
| 1 | ROLNICZE | AND: Służy do łączenia więcej niż jednego warunku. Jeśli wszystkie warunki są prawdziwe, ORAZ daje wartość true. Jeśli którykolwiek z warunków jest fałszywy, ORAZ ma wartość fałszywą | Jeśli (1 = 1) i (0 = 1) wtedy | fałszywy |
| 2 | OR | LUB: Służy do łączenia więcej niż jednego warunku. Jeśli którykolwiek z warunków ma wartość true, OR zwraca wartość true. Jeśli wszystkie są fałszywe, OR zwraca wartość false | Jeśli (1 = 1) lub (5 = 0) Wtedy | prawdziwy |
| 3 | NIE | NIE: Ta funkcja działa jak funkcja odwrotna. Jeśli warunek jest prawdziwy, zwraca wartość false, a jeśli warunek jest fałszywy, zwraca wartość true. | Jeśli nie (0 = 0), to | fałszywy |
Trzy powyższe opisy łatwiej zapamiętać jako pojedynczą siatkę danych wejściowych i wyników.
Tabela prawdy dla języka VBA Logical Operatorsy
Tabela prawdy zawiera wszystkie kombinacje danych wejściowych i wynik zwracany przez każdy operator. Jednokrotne jej odczytanie eliminuje zgadywanie z warunków, które zapiszesz później.
| Warunek A | Warunek B. | A i B | A lub B | Ani |
|---|---|---|---|---|
| Prawdziwy | Prawdziwy | Prawdziwy | Prawdziwy | Fałszywy |
| Prawdziwy | Fałszywy | Fałszywy | Prawdziwy | Fałszywy |
| Fałszywy | Prawdziwy | Fałszywy | Prawdziwy | Prawdziwy |
| Fałszywy | Fałszywy | Fałszywy | Fałszywy | Prawdziwy |
Warto zapamiętać dwa wzorce. ROLNICZE zwraca wartość True tylko w jednym wierszu z czterech, co zawęża wybór. OR generuje False tylko w jednym wierszu, więc poszerza go. NIE przyjmuje jeden warunek zamiast dwóch, dlatego ma jedną własną kolumnę.
Logiczne VBA Operators Przykładowe źródło Code
Dla uproszczenia będziemy porównywać zakodowane na stałe liczby.
Dodaj przyciski ActiveX do arkusza za pomocą opcji „Wstaw”.
Ustaw właściwości jak pokazano na obrazku poniżej

Poniższa tabela przedstawia właściwości, które należy zmienić, i wartości, które należy zaktualizować.
| S / N | Control: | Właściwość | Wartość: |
|---|---|---|---|
| 1 | Przycisk Polecenia1 | Imię i nazwisko | btnAND |
| Podpis | ROLNICZE Operator (1 = 1) i (0 = 0) | ||
| 2 | Przycisk Polecenia2 | Imię i nazwisko | btnOR |
| Podpis | OR Operator (1 = 1) Lub (5 = 0) | ||
| 3 | Przycisk Polecenia3 | Imię i nazwisko | btnNIE |
| Podpis | NIE Operator Nie (0 = 0) |
Dodaj następujący kod do 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 Jeśli AND OperaTor
- „Jeśli (1 = 1) i (0 = 0) to” instrukcja if używa operatora logicznego AND do połączenia dwóch warunków (1 = 1) i (0 = 0). Jeśli oba warunki są prawdziwe, wykonywany jest kod powyżej słowa kluczowego 'Else'. Jeśli oba warunki nie są prawdziwe, wykonywany jest kod poniżej słowa kluczowego 'Else'.
Oba warunki są tutaj prawdziwe, więc po kliknięciu przycisku pojawia się komunikat „AND” (i) jest oceniane jako PRAWDA.
Dodaj następujący kod do 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 Jeśli LUB OperaTor
- „Jeśli (1 = 1) Lub (5 = 0) To” Instrukcja if używa operatora logicznego OR do połączenia dwóch warunków (1 = 1) lub (5 = 0). Jeśli którykolwiek z warunków jest spełniony, wykonywany jest kod ze słowem kluczowym Else powyżej. Jeśli oba warunki są fałszywe, wykonywany jest kod ze słowem kluczowym Else poniżej.
Pierwszy warunek jest prawdziwy, a drugi fałszywy, więc OR nadal zwraca wartość true, a komunikat brzmi „OR obliczono jako TRUE”.
Dodaj następujący kod do 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 Jeśli NIE OperaTor
- „Jeśli nie (0 = 0) to” Funkcja VBA If Not używa operatora logicznego NOT do negacji wyniku warunku instrukcji if. Warunek wewnętrzny (0 = 0) jest prawdziwy, więc funkcja Not zmienia go na fałszywy i wykonywany jest kod pod słowem kluczowym „Else”. Gdyby warunek wewnętrzny był fałszywy, funkcja Not zmieniłaby go na prawdziwy, a kod nad słowem kluczowym „Else” zostałby wykonany.
Każdy z tych trzech przycisków testuje stałą wartość. Rzeczywiste warunki odczytane z arkusza kalkulacyjnego i mieszają obie rodziny operatorów.
Jak połączyć logikę i porównanie Operatorsy
Makro produkcyjne rzadko testuje zakodowaną na stałe liczbę. Odczytuje wartość, porównuje ją i łączy kilka porównań w jedną decyzję. Poniższe makro zatwierdza zamówienie tylko wtedy, gdy produkt istnieje, jego ilość jest wystarczająca, a konto klienta nie jest zawieszone.
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
Trzy zasady sprawiają, że warunek łączony jest czytelny i poprawny.
- Uwzględnij każde porównanie: VBA ocenia operatory porównania przed operatorami logicznymi, ale nawiasy tworzą grupęping oczywiste i zapobiegnie błędowi, gdy stan się pogorszy.
- Pamiętaj o pierwszeństwie „And” nad „Or”: A lub B i C czyta się jako A lub (B i C). Jeśli miałeś na myśli (A lub B) i C, nawiasy są obowiązkowe.
- Zastosuj Not do wartości logicznej, a nie do liczby: Nie wstrzymane czyta się naturalnie. Unikaj Nie 5, ponieważ Not wykonuje operację bitową na liczbach i zwraca -6 zamiast False.
⚠️ Ostrzeżenie: VBA nie powoduje zwarć. W Jeśli (ws to nic) lub (ws.Name = „Dane”), to, druga część nadal działa, nawet gdy pierwsza jest prawdą, co powoduje błąd czasu wykonania 91. Podziel takie zabezpieczenia na zagnieżdżone instrukcje If.
Xor, Eqv i Imp Operatory w VBA
Operatory AND, OR i NOT pokrywają niemal wszystkie codzienne sytuacje, ale VBA udostępnia trzy dodatkowe operatory logiczne, które czasami wyrażają regułę o wiele jaśniej niż grupa instrukcji If.
| OperaTor | Zwraca wartość True, gdy | Przykład | Wydajność |
|---|---|---|---|
| Xor | Dokładnie jeden z dwóch warunków jest prawdziwy, nigdy oba jednocześnie | (1 = 1) Xor (5 = 0) | Prawdziwy |
| Równ | Oba warunki mają tę samą wartość, oba są prawdziwe lub oba są fałszywe | (1 = 1) Równoważnik (2 = 2) | Prawdziwy |
| Chochlik | Pierwszy warunek implikuje drugi; tylko Prawda Imp Fałsz jest fałszem | (1 = 1) Imp (5 = 0) | Fałszywy |
Xor jest najbardziej praktyczny z tych trzech. Pasuje do zasady takiej jak „zniżka dotyczy pracownika lub członka programu lojalnościowego, ale nie kogoś, kto jest jednym i drugim”. Eqv i Imp pojawiają się głównie w starszym kodzie i ćwiczeniach logicznych, więc ich rozpoznanie jest ważniejsze niż ich napisanie.
Pobierz Excel zawierający powyższy kod
