VBA umożliwia korzystanie z operatorów logicznych I, Lub, Nie, Xor do porównania wartości. Operatory są uważane za „Boolean”, co oznacza, że w wyniku zwracają True lub False.
Jeśli chcesz dowiedzieć się, jak porównywać ciągi, kliknij tutaj: VBA Compare Strings - StrComp
Jeśli chcesz dowiedzieć się, jak korzystać z operatorów porównania, kliknij tutaj: Operatory porównania VBA - nierówne i więcej
Korzystanie z operatora logicznego i
ten I operator logiczny porównuje co najmniej dwa warunki. Jeśli wszystkie warunki są spełnione, operator zwróci True. Jeśli przynajmniej jeden z warunków nie jest spełniony, operator zwróci False. Oto przykład:
123456789101112 | Dim intA jako liczba całkowitaDim intB jako liczba całkowitaDim blnResult As BooleanintA = 5intB = 5Jeśli intA = 5 I intB = 5 WtedyblnWynik = PrawdaW przeciwnym razieblnWynik = FałszZakończ, jeśli |
W tym przykładzie chcemy sprawdzić, czy oba intA oraz intB są równe 5. Jeśli to prawda, wartość Boolean blnWynik będzie prawdą, w przeciwnym razie będzie fałszem.
Najpierw ustalamy wartości intA oraz intB do 5:
12 | intA = 5intB = 5 |
Następnie używamy I operator w instrukcji If, aby sprawdzić, czy wartości są równe 5:
12345 | Jeśli intA = 5 I intB = 5 WtedyblnWynik = PrawdaW przeciwnym razieblnWynik = FałszZakończ, jeśli |
Ponieważ obie zmienne są równe 5, blnWynik zwraca True:
Rysunek 1. Korzystanie z operatora logicznego And w VBA
Korzystanie z operatora logicznego lub
ten Lub operator logiczny porównuje co najmniej dwa warunki. Jeśli przynajmniej jeden z warunków jest spełniony, zwróci True. Jeśli żaden z warunków nie jest spełniony, operator zwróci False. Oto kod przykładu:
123456789101112 | Dim intA jako liczba całkowitaDim intB jako liczba całkowitaDim blnResult As BooleanintA = 5intB = 10Jeśli intA = 5 Lub intB = 5 WtedyblnWynik = PrawdaW przeciwnym razieblnWynik = FałszZakończ, jeśli |
W tym przykładzie chcemy sprawdzić, czy oba intA jest równy 5. lub intB jest równa 10. Jeśli którykolwiek z tych warunków jest spełniony, wartość Boolean blnWynik będzie prawdą, w przeciwnym razie będzie fałszem.
Najpierw ustalamy wartość intA do 5 i intB do 10:
12 | intA = 5intB = 10 |
Następnie używamy Lub operator w instrukcji If, aby sprawdzić, czy którakolwiek z wartości jest równa 5:
12345 | Jeśli intA = 5 Lub intB = 5 WtedyblnWynik = PrawdaW przeciwnym razieblnWynik = FałszZakończ, jeśli |
Jak intA wartość to 5, blnWynik zwraca True:
Rysunek 2. Użycie operatora logicznego Or w VBA
Korzystanie z operatora nielogicznego
ten Nie operator logiczny sprawdza co najmniej jeden warunek. Jeśli warunki są spełnione, operator zwraca False. W przeciwnym razie zwraca True. Oto kod przykładu:
12345678910 | Dim intA jako liczba całkowitaDim blnResult As BooleanintA = 5Jeśli nie (intA = 6) WtedyblnWynik = PrawdaW przeciwnym razieblnWynik = FałszZakończ, jeśli |
W tym przykładzie chcemy sprawdzić, czy wartość intA nie równa się 6. Jeśli intA jest inna niż 6, wartość Boolean blnWynik będzie prawdą, w przeciwnym razie będzie fałszem.
Najpierw ustalamy wartość intA do 5:
1 | intA = 5 |
Następnie używamy operatora Not w instrukcji If, aby sprawdzić, czy wartość intA jest różna od 6:
12345 | Jeśli nie (intA = 6) WtedyblnWynik = PrawdaW przeciwnym razieblnWynik = FałszZakończ, jeśli |
Jak intA wartość to 5, blnWynik zwraca True:
Rysunek 3. Korzystanie z operatora logicznego Not w VBA
Korzystanie z operatora logicznego Xor
ten Xor operator logiczny porównuje co najmniej dwa warunki. Jeśli dokładnie jeden z warunków jest spełniony, zwróci True. Jeśli żaden z warunków nie jest spełniony lub spełniony jest więcej niż jeden, zwróci False. Oto kod przykładu:
123456789101112 | Dim intA jako liczba całkowitaDim intB jako liczba całkowitaDim blnResult As BooleanintA = 5intB = 10Jeśli intA = 5 Xlub intB = 5 WtedyblnWynik = PrawdaW przeciwnym razieblnWynik = FałszZakończ, jeśli |
W tym przykładzie chcemy sprawdzić, czy dokładnie jedna z wartości (intA lub IntB) jest równa 5. Jeśli tylko jeden warunek jest spełniony, wartość Boolean blnWynik będzie prawdą, w przeciwnym razie będzie fałszem.
Najpierw ustalamy wartość intA do 5 i intB do 10:
12 | intA = 5intB = 10 |
Następnie używamy Lub operator w instrukcji If, aby sprawdzić, czy którakolwiek z wartości jest równa 5:
12345 | Jeśli intA = 5 Xlub intB = 5 WtedyblnWynik = PrawdaW przeciwnym razieblnWynik = FałszZakończ, jeśli |
Jak intA wartość to 5 i intB ma 10 lat, blnWynik zwraca True:
Rysunek 4. Korzystanie z operatora logicznego Xor w VBA
Jest operatorem
Operator Is sprawdza, czy dwie zmienne obiektu przechowują ten sam obiekt.
Spójrzmy na przykład. Tutaj przypiszemy dwa arkusze do obiektów arkusza rng1 i rng2, sprawdzając, czy dwa obiekty arkusza przechowują ten sam arkusz:
12345678910111213 | Sub PorównajObiekty()Dim ws1 jako arkusz roboczy, ws2 jako arkusz roboczyUstaw ws1 = Arkusze("Arkusz1")Ustaw ws2 = Arkusze("Arkusz2")Jeśli ws1 Czy ws2 WtedyMsgBox "Ten sam WS"W przeciwnym razieMsgBox "Różne WS"Zakończ, jeśliNapis końcowy |
Oczywiście obiekty arkusza roboczego nie są takie same, więc zwracane jest „Różne WS”.
Jak operator
Operator Like może porównać dwa ciągi dla niedokładnych dopasowań. Ten przykład sprawdzi, czy ciąg zaczyna się od „Mr.”
1234567891011121314 | Sub LikeDemo()Dim strName jako ciągDim blnResult As BooleanstrName = "Pan Michael James"Jeśli strName Like "Pan*" WtedyblnWynik = PrawdaW przeciwnym razieblnWynik = FałszZakończ, jeśliNapis końcowy |