VBA vám umožňuje používať logické operátory A, Alebo, Nie, Xor porovnávať hodnoty. Operátori sú považovaní za „booleovských“, čo znamená, že v dôsledku toho vracajú hodnotu True alebo False.
Ak sa chcete dozvedieť, ako porovnávať struny, kliknite sem: Porovnanie strún VBA - StrComp
Ak sa chcete dozvedieť, ako používať porovnávacie operátory, kliknite sem: Porovnávacie operátory VBA - nerovná sa a ďalšie
Použitie logického operátora
The A logický operátor porovnáva dve alebo viac podmienok. Ak sú splnené všetky podmienky, operátor vráti hodnotu True. Ak aspoň jedna z podmienok nie je pravdivá, operátor vráti hodnotu False. Tu je príklad:
123456789101112 | Dim intA ako celé čísloDim intB ako celé čísloDim blnVýsledok ako booleovskýintA = 5intB = 5Ak intA = 5 A intB = 5 PotomblnResult = PravdaInakblnResult = FalseKoniec Ak |
V tomto prípade chceme skontrolovať, či sú obidve intA a intB sa rovnajú 5. Ak je to pravda, hodnota Boolean blnVýsledok bude to pravda, v opačnom prípade to bude nepravda.
Najprv nastavíme hodnoty intA a intB do 5:
12 | intA = 5intB = 5 |
Potom použijeme A operátor v príkaze If, aby skontroloval, či sú hodnoty rovné 5:
12345 | Ak intA = 5 A intB = 5 PotomblnResult = PravdaInakblnResult = FalseKoniec Ak |
Pretože obe premenné sú rovné 5, bude blnVýsledok vráti True:
Obrázok 1. Použitie logického operátora And vo VBA
Použitie alebo logického operátora
The Alebo logický operátor porovnáva dve alebo viac podmienok. Ak je splnená aspoň jedna z podmienok, vráti hodnotu True. Ak nie je splnená žiadna z podmienok, operátor vráti hodnotu False. Tu je kód pre príklad:
123456789101112 | Dim intA ako celé čísloDim intB ako celé čísloDim blnVýsledok ako booleovskýintA = 5intB = 10Ak intA = 5 alebo intB = 5 PotomblnResult = PravdaInakblnResult = FalseKoniec Ak |
V tomto prípade chceme skontrolovať, či sú obidve intA sa rovná 5. alebo intB sa rovná 10. Ak je ktorákoľvek z týchto podmienok pravdivá, hodnota Boolean blnVýsledok bude to pravda, v opačnom prípade to bude nepravda.
Najprv nastavíme hodnotu intA do 5 a intB do 10:
12 | intA = 5intB = 10 |
Potom použijeme Alebo operátor v príkaze If, aby skontroloval, či sa niektorá z hodnôt rovná 5:
12345 | Ak intA = 5 alebo intB = 5 PotomblnResult = PravdaInakblnResult = FalseKoniec Ak |
Ako intA hodnota je 5, blnVýsledok vráti True:
Obrázok 2. Použitie logického operátora Alebo vo VBA
Použitie nie logického operátora
The Nie logický operátor kontroluje jednu alebo viac podmienok. Ak sú podmienky splnené, operátor vráti hodnotu False. V opačnom prípade vráti hodnotu True. Tu je kód pre príklad:
12345678910 | Dim intA ako celé čísloDim blnVýsledok ako booleovskýintA = 5Ak nie (intA = 6) PotomblnResult = PravdaInakblnResult = FalseKoniec Ak |
V tomto prípade chceme skontrolovať, či je hodnota intA sa nerovná 6. Ak intA je iná ako 6, hodnota Boolean blnVýsledok bude to pravda, v opačnom prípade to bude nepravda.
Najprv nastavíme hodnotu intA do 5:
1 | intA = 5 |
Potom použijeme operátor Not v príkaze If na kontrolu, či je hodnota intA iná ako 6:
12345 | Ak nie (intA = 6) PotomblnResult = PravdaInakblnResult = FalseKoniec Ak |
Ako intA hodnota je 5, blnVýsledok vráti True:
Obrázok 3. Použitie nie logického operátora vo VBA
Použitie logického operátora Xor
The Xor logický operátor porovnáva dve alebo viac podmienok. Ak je splnená presne jedna z podmienok, vráti hodnotu True. Ak nie je splnená žiadna z podmienok alebo je splnených viac ako jedna podmienka, vráti hodnotu False. Tu je kód pre príklad:
123456789101112 | Dim intA ako celé čísloDim intB ako celé čísloDim blnVýsledok ako booleovskýintA = 5intB = 10Ak intA = 5 X alebo intB = 5 PotomblnResult = PravdaInakblnResult = FalseKoniec Ak |
V tomto prípade chceme skontrolovať, či sa presne jedna z hodnôt (intA alebo IntB) rovná 5. Ak je splnená iba jedna podmienka, hodnota Boolean blnVýsledok bude to pravda, v opačnom prípade to bude nepravda.
Najprv nastavíme hodnotu intA do 5 a intB do 10:
12 | intA = 5intB = 10 |
Potom použijeme Alebo operátor v príkaze If, aby skontroloval, či sa niektorá z hodnôt rovná 5:
12345 | Ak intA = 5 X alebo intB = 5 PotomblnResult = PravdaInakblnResult = FalseKoniec Ak |
Ako intA hodnota je 5 a intB je 10, blnVýsledok vráti True:
Obrázok 4. Použitie logického operátora Xor vo VBA
Je operátor
Is Operator testuje, či dve objektové premenné ukladajú ten istý objekt.
Pozrime sa na príklad. Tu priradíme dva pracovné hárky k objektom pracovného hárka rng1 a rng2, pričom testujeme, či dva objekty pracovného hárka uchovávajú rovnaký pracovný hárok:
12345678910111213 | Podrovnané objekty ()Dim ws1 ako pracovný list, ws2 ako pracovný listNastaviť ws1 = listy („list1“)Nastaviť ws2 = listy („list2“)Ak ws1 je ws2 potomMsgBox „Rovnaké WS“InakMsgBox „Rôzne WS“Koniec AkKoniec pod |
Objekty pracovného hárka samozrejme nie sú rovnaké, takže sa vráti „rôzne WS“.
Rovnako ako operátor
Operátor Like môže porovnávať dva reťazce pre nepresné zhody. Tento príklad otestuje, či reťazec začína reťazcom „Mr.“
1234567891011121314 | Sub LikeDemo ()Dim strName ako reťazecDim blnVýsledok ako booleovskýstrName = "Pán Michael James"Ak strName ako „Pán*“ PotomblnResult = PravdaInakblnResult = FalseKoniec AkKoniec pod |