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.

  • 🔗 Cel: Operatory logiczne oceniają więcej niż jeden warunek w ramach jednego polecenia If.
  • ROLNICZE Operasłup: Zwraca wartość True tylko wtedy, gdy wszystkie warunki, z którymi łączy, mają wartość True.
  • OR Operasłup: Zwraca wartość True, jeśli przynajmniej jeden z warunków ma wartość True.
  • 🔄 NIE Operasłup: Odwraca wynik, zamieniając Prawda na Fałsz i Fałsz na Prawda.
  • 📊 Tabela prawdy: Pojedyncza siatka odniesienia pokazuje wynik każdego operatora dla każdej kombinacji wejściowej.
  • 🧮 Extra Operatory: Xor, Eqv i Imp obsługują warunki wyłączne, równoważne i domniemane.
  • ⚠️ Brak zwarcia: VBA ocenia każdą część warunku, więc test zabezpieczający musi znajdować się w zagnieżdżonym warunku If.

Logiczne VBA Operators: AND, OR, NOT w programie Excel VBA

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

Logiczne VBA Operatorsy
Logiczne VBA Operatorsy

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

FAQ

Nie ma praktycznego ograniczenia, ale czytelność szybko spada poniżej trzech lub czterech. Przenieś długi warunek do zmiennej boolowskiej o opisowej nazwie, a następnie przetestuj tę zmienną w instrukcji warunkowej If.

Zastosowany do liczby, operator Not wykonuje inwersję bitową, a nie logiczną. Należy go stosować tylko do porównania lub zmiennej boolowskiej, takiej jak Not (Ilość > 0), aby wynik był równy Prawda lub Fałsz.

Logika jest zgodna, ale składnia jest inna. Formuła arkusza kalkulacyjnego wywołuje je jako funkcje AND(A1>0, B1>0). VBA umieszcza je pomiędzy warunkami, na przykład If A1 > 0 And B1 > 0 Then.

Tak. Wklej warunek, a asystent AI przepisze go, używając bardziej przejrzystych nawiasów lub dzieląc na nazwane zmienne boolowskie. Zweryfikuj przepis z tablicą prawdy, ponieważ błędne uproszczenie po cichu zmienia zachowanie.

Tak. Podaj wyrażenie, a asystent AI wyświetli każdą kombinację danych wejściowych wraz z jej wynikiem, co szybko ujawnia gałąź, do której nigdy nie można dotrzeć, lub nawias umieszczony w niewłaściwym miejscu.

Podsumuj ten post następująco: