VBA vám umožňuje používat logické operátory A, Nebo, Ne, Xor porovnávat hodnoty. Operátoři jsou považováni za „booleovské“, což znamená, že v důsledku toho vracejí hodnotu True nebo False.
Pokud se chcete dozvědět, jak porovnávat řetězce, klikněte sem: VBA Porovnání řetězců - StrComp
Chcete -li se naučit používat srovnávací operátory, klikněte sem: Srovnávací operátory VBA - nerovná se a další
Pomocí And Logical Operator
The A logický operátor porovnává dvě nebo více podmínek. Pokud jsou splněny všechny podmínky, operátor vrátí True. Pokud alespoň jedna z podmínek není pravdivá, operátor vrátí False. Zde je příklad:
123456789101112 | Dim intA jako celé čísloDim intB jako celé čísloDim blnVýsledek jako booleovskýintA = 5intB = 5Pokud intA = 5 And intB = 5 ThenblnResult = TrueJinýblnResult = FalseKonec If |
V tomto příkladu chceme zkontrolovat, zda obojí intA a intB jsou rovny 5. Pokud je to pravda, hodnota Boolean blnVýsledek bude pravdivé, v opačném případě bude nepravdivé.
Nejprve nastavíme hodnoty intA a intB do 5:
12 | intA = 5intB = 5 |
Poté použijeme A operátor v příkazu If pro kontrolu, zda jsou hodnoty rovny 5:
12345 | Pokud intA = 5 And intB = 5 ThenblnResult = TrueJinýblnResult = FalseKonec If |
Protože se obě proměnné rovnají 5, bude blnVýsledek vrací True:
Obrázek 1. Použití logického operátoru And ve VBA
Pomocí nebo logického operátoru
The Nebo logický operátor porovnává dvě nebo více podmínek. Pokud je splněna alespoň jedna z podmínek, vrátí hodnotu True. Pokud není splněna žádná z podmínek, vrátí operátor False. Zde je kód pro příklad:
123456789101112 | Dim intA jako celé čísloDim intB jako celé čísloDim blnVýsledek jako booleovskýintA = 5intB = 10Pokud intA = 5 Nebo intB = 5 PakblnResult = TrueJinýblnResult = FalseKonec If |
V tomto příkladu chceme zkontrolovat, zda obojí intA se rovná 5. nebo intB se rovná 10. Pokud je některá z těchto podmínek pravdivá, hodnota Boolean blnVýsledek bude pravdivé, v opačném případě bude nepravdivé.
Nejprve nastavíme hodnotu intA do 5 a intB do 10:
12 | intA = 5intB = 10 |
Poté použijeme Nebo operátor v příkazu If pro kontrolu, zda se některá z hodnot rovná 5:
12345 | Pokud intA = 5 Nebo intB = 5 PakblnResult = TrueJinýblnResult = FalseKonec If |
Tak jako intA hodnota je 5, blnVýsledek vrací True:
Obrázek 2. Použití logického operátoru Nebo ve VBA
Použití nelogického operátoru
The Ne logický operátor kontroluje jednu nebo více podmínek. Pokud jsou podmínky splněny, operátor vrátí False. V opačném případě vrátí True. Zde je kód pro příklad:
12345678910 | Dim intA jako celé čísloDim blnVýsledek jako booleovskýintA = 5Pokud ne (intA = 6) PakblnResult = TrueJinýblnResult = FalseKonec If |
V tomto příkladu chceme zkontrolovat, zda je hodnota intA není rovno 6. Pokud intA je jiná než 6, hodnota Boolean blnVýsledek bude pravdivé, v opačném případě bude nepravdivé.
Nejprve nastavíme hodnotu intA do 5:
1 | intA = 5 |
Poté použijeme operátor Not v příkazu If, abychom zkontrolovali, zda je hodnota intA jiná než 6:
12345 | Pokud ne (intA = 6) PakblnResult = TrueJinýblnResult = FalseKonec If |
Tak jako intA hodnota je 5, blnVýsledek vrací True:
Obrázek 3. Použití nelogického operátoru ve VBA
Použití logického operátoru Xor
The Xor logický operátor porovnává dvě nebo více podmínek. Pokud je splněna přesně jedna z podmínek, vrátí True. Pokud není splněna žádná z podmínek nebo je splněno více než jedna, vrátí hodnotu False. Zde je kód pro příklad:
123456789101112 | Dim intA jako celé čísloDim intB jako celé čísloDim blnVýsledek jako booleovskýintA = 5intB = 10Pokud intA = 5 Xor intB = 5 PakblnResult = TrueJinýblnResult = FalseKonec If |
V tomto příkladu chceme zkontrolovat, zda se přesně jedna z hodnot (intA nebo IntB) rovná 5. Pokud je splněna pouze jedna podmínka, hodnota Boolean blnVýsledek bude pravdivé, v opačném případě bude nepravdivé.
Nejprve nastavíme hodnotu intA do 5 a intB do 10:
12 | intA = 5intB = 10 |
Poté použijeme Nebo operátor v příkazu If pro kontrolu, zda se některá z hodnot rovná 5:
12345 | Pokud intA = 5 Xor intB = 5 PakblnResult = TrueJinýblnResult = FalseKonec If |
Tak jako intA hodnota je 5 a intB je 10, blnVýsledek vrací True:
Obrázek 4. Použití logického operátoru Xor ve VBA
Je operátor
Is Operator testuje, zda dvě objektové proměnné ukládají stejný objekt.
Podívejme se na příklad. Zde přiřadíme dva listy k objektům listu rng1 a rng2, přičemž testujeme, zda dva objekty listu ukládají stejný list:
12345678910111213 | Sub CompareObjects ()Dim ws1 jako pracovní list, ws2 jako pracovní listSada ws1 = Listy ("List1")Nastavit ws2 = listy ("list2")Pokud ws1 Is ws2 ThenMsgBox "Stejné WS"JinýMsgBox „Různé WS“Konec IfEnd Sub |
Objekty listu samozřejmě nejsou stejné, takže je vráceno „Různé WS“.
Jako operátor
Operátor Like může porovnat dva řetězce pro nepřesné shody. Tento příklad otestuje, zda řetězec začíná „Mr.“
1234567891011121314 | Sub LikeDemo ()Dim strName As StringDim blnVýsledek jako booleovskýstrName = "Pan Michael James"Pokud strName jako „Pan*“ TakblnResult = TrueJinýblnResult = FalseKonec IfEnd Sub |