Booleovský typ proměnné
Datový typ VBA Boolean se používá k ukládání hodnot True nebo False. True může být také reprezentováno 1 a False 0.
Chcete -li deklarovat logickou proměnnou, použijte příkaz Dim (zkratka pro Dimension):
1 | Dim blnA jako Boolean |
Potom k přiřazení hodnoty proměnné jednoduše použijete znaménko rovnosti:
1 | blnA = pravda |
Když to vložíte do postupu, může to vypadat takto:
123456789101112 | Sub blnExample ()'deklarujte booleovskou proměnnou.'Dim blnA jako Boolean'spusťte kód pro naplnění proměnné - obvykle je kódem příkaz if nebo casePokud je rozsah („A1“)> 0, pakblnA = pravdaJinýblnA = NepravdaKonec If'zobrazit pole se zprávouMsgBox "Test, zda buňka má hodnotu větší než 0, je" & blnAEnd Sub |
Pokud spustíte výše uvedený kód, zobrazí se následující okno se zprávou.
Deklarujte booleovskou proměnnou na úrovni modulu nebo na globální úrovni
V předchozím příkladu jsme deklarovali Boolean proměnná v rámci procedury. Proměnné deklarované pomocí procedury lze použít pouze v rámci této procedury.
Místo toho můžete deklarovat booleovské proměnné na úrovni modulu nebo na globální úrovni.
Úroveň modulu
Prohlašujete Úroveň modulu proměnné v horní části modulů kódu pomocí Ztlumit tvrzení.
Tyto proměnné lze použít s jakoukoli procedurou v tomto modulu kódu.
Globální úroveň
Také prohlašujete Globální úroveň proměnné v horní části modulů kódu. Místo použití Ztlumit prohlášení, použili byste Veřejnost prohlášení, které naznačuje, že Boolean proměnná je k dispozici pro použití v celém vašem projektu VBA.
1 | Veřejné blnA jako Boolean |
Pokud byste prohlásili Boolean proměnnou na úrovni modulu a poté ji zkuste použít v jiném modulu, došlo by k chybě.
Pokud jste však použili klíčové slovo Public k deklaraci souboru Boolean proměnná, chyba by nenastala a postup by běžel perfektně.
Použití logické proměnné
Při logickém porovnávání používáte logickou proměnnou. Ty se často používají s příkazy If k testování, zda je podmínka pravdivá nebo nepravdivá podle výše uvedeného příkladu, nebo v řádku kódu pro použití logického testu - třeba aby se zjistilo, zda je jedna hodnota větší než jiná.
12345678 | Sub blnExample ()'deklarujte booleovskou proměnnou.'Dim blnA jako booleovský'vyzkoušejte, zda je jedno číslo větší než číslo dalšíblnA = 45> 68'zobrazit pole se zprávouMsgBox blnAEnd Sub |
Pokud spustíte výše uvedený kód, zobrazí se následující okno se zprávou.
protože 45 samozřejmě není větší než 68!
Použití booleovských operátorů
Jelikož logické proměnné se používají při logickém porovnávání, můžeme pomocí logických operátorů AND a OR otestovat, zda je více než jedna podmínka pravdivá nebo nepravdivá.
Pomocí operátoru AND
Pomocí funkce AND můžeme zjistit, zda jsou splněny obě podmínky.
12345678 | Sub blnExample ()'deklarujte booleovskou proměnnouDim blnA jako booleovský'Pomocí operátoru AND vyzkoušejte, zda jsou splněny obě podmínkyblnA = 10> 13 A 15> 12'zobrazit pole se zprávouMsgBox blnAEnd Sub |
nebo bychom mohli spustit stejný test pomocí příkazu If:
123456789101112 | Sub blnExample ()'deklarujte booleovskou proměnnou.'Dim blnA jako booleovský'Pomocí operátoru AND vyzkoušejte, zda jsou obě podmínky splněnyPokud 10> 13 A 15> 12 PakblnA = pravdaJinýblnA = NepravdaKonec If'zobrazit pole se zprávouMsgBox blnAEnd Sub |
Oba výše uvedené příklady se vrátí NEPRAVDIVÉ vzhledem k tomu, že 10 je NE větší než 13 - a OBA podmínky musí být pravdivé, aby byla logická hodnota pravdivá.
Pomocí operátoru OR
Můžeme použít funkci NEBO, abychom zjistili, zda je splněna JEDNA Z podmínek.
12345678 | Sub blnExample ()'deklarujte booleovskou proměnnou.'Dim blnA jako booleovský'Pomocí operátoru AND vyzkoušejte, zda jsou splněny obě podmínkyblnA = 10> 13 nebo 15> 12'zobrazit pole se zprávouMsgBox blnAEnd Sub |
nebo bychom mohli spustit stejný test pomocí příkazu If:
123456789101112 | Sub blnExample ()'deklarujte booleovskou proměnnou.'Dim blnA jako booleovský'Pomocí operátoru AND vyzkoušejte, zda jsou splněny obě podmínkyPokud 10> 13 NEBO 15> 12 PakblnA = pravdaJinýblnA = NepravdaKonec If'zobrazit pole se zprávouMsgBox blnAEnd Sub |
Tyto příklady by se vrátily SKUTEČNÝ vzhledem k tomu, že 10 NENÍ větší než 13, ALE 15 JE větší než 12 - aJEN JEDEN podmínka musí být True, aby byla logická hodnota pravdivá.
Použití příkazů If nám umožňuje použít více logických operátorů
Použití operátoru NOT
Můžeme také použít operátor NOT s booleovskou proměnnou. Operátor NOT neguje hodnotu podmínky - takže pokud je podmínka pravdivá, operátor NOT vrátí hodnotu false.
12345678910111213141516 | Dílčí rozdíly v hledání ()'deklarujte proměnné rozsahu.'Dim rng1 As RangeDim rng2 As Range'aktivujte list jednaPracovní listy („List1“). Aktivujte“naplňte rozsahyNastavit rng1 = rozsah ("A3")Nastavit rng2 = rozsah ("B3")'pomocí operátoru NOT zjistěte, zda jsou hodnoty stejné nebo ne.Pokud není rng1.Value = rng2.Value ThenMsgBox "Hodnoty v buňkách nejsou stejné"JinýMsgBox "Hodnoty v buňkách jsou stejné"Konec IfEnd Sub |
Použití logického operátoru Xor
TheXor logický operátor slouží k porovnání dvou nebo více podmínek. Pokud je jedna z podmínek pravdivá, vrátí hodnotu PRAVDA. Pokud existují 2 podmínky a NEITHER jsou pravdivé nebo OBĚ jsou pravdivé, vrátí FALSE.
1234567891011121314151617 | Sub blnExample ()'deklarujte celá číslaDim intA jako celé čísloDim intB jako celé číslo'deklarujte booleovskou proměnnouDim blnVýsledek jako booleovský“naplňte proměnnéintA = 5intB = 10„Zkontroluj, jestli je jedna pravdaPokud intA = 5 Xor intB = 5 PakblnResult = TrueJinýblnResult = FalseKonec IfMsgBox blnVýsledekEnd Sub |
Ve výše uvedeném příkladu, protože JEDNA z podmínek je PRAVDA, vrátí se okno se zprávou SKUTEČNÝ.
1234567891011121314151617 | Sub blnExample ()'deklarujte celá číslaDim intA jako celé čísloDim intB jako celé číslo'deklarujte booleovskou proměnnou.'Dim blnVýsledek jako booleovský“naplňte proměnnéintA = 5intB = 5“zkontroluj, jestli je jedna pravdaPokud intA = 5 Xor intB = 5 PakblnResult = TrueJinýblnResult = FalseKonec IfMsgBox blnVýsledekEnd Sub |
Ve výše uvedeném příkladu se však, protože platí OBĚ podmínky, vrátí okno se zprávou NEPRAVDIVÉ.
1234567891011121314151617 | Sub blnExample ()'deklarujte celá číslaDim intA jako celé čísloDim intB jako celé číslo'deklarujte booleovskou proměnnou.'Dim blnVýsledek jako booleovský“naplňte proměnnéintA = 6intB = 8“zkontroluj, jestli je jedna pravdaPokud intA = 5 Xor intB = 5 PakblnResult = TrueJinýblnResult = FalseKonec IfMsgBox blnVýsledekEnd Sub |
a nakonec, protože obě podmínky jsou NEPRAVDA, okno se zprávou také vrátí NEPRAVDA.