Booleovský typ premennej
Na ukladanie hodnôt True alebo False sa používa boolovský údajový typ VBA. Pravda môže byť tiež reprezentovaná 1 a nepravdivá 0.
Ak chcete deklarovať booleovskú premennú, použite príkaz Dim (skratka pre dimenziu):
1 | Dim blnA ako booleovský |
Potom na priradenie hodnoty premennej jednoducho použijete znamienko rovnosti:
1 | blnA = Pravda |
Keď to zadáte do postupu, môže to vyzerať takto:
123456789101112 | Sub blnPriklad ()'deklarujte booleovskú premennúDim blnA ako booleovský„Spustite kód na vyplnenie premennej - kód je zvyčajne príkaz if alebo caseAk je rozsah („A1“)> 0, potomblnA = pravdaInakblnA = nepravdaKoniec Ak“Zobraziť pole so správouMsgBox "Test, či bunka má hodnotu väčšiu ako 0, je" & blnAKoniec pod |
Ak spustíte kód uvedený vyššie, zobrazí sa nasledujúce okno so správou.
Deklarujte booleovskú premennú na modulovej alebo globálnej úrovni
V predchádzajúcom príklade sme deklarovali súbor Booleovský premenná v rámci procedúry. Premenné deklarované pomocou postupu je možné použiť iba v rámci tohto postupu.
Namiesto toho môžete deklarovať booleovské premenné na úrovni modulu alebo na globálnej úrovni.
Úroveň modulu
Prehlasujete Úroveň modulu premenné v hornej časti modulov kódu s príponou Dim vyhlásenie.
Tieto premenné je možné použiť s akýmkoľvek postupom v tomto module kódu.
Globálna úroveň
Tiež vyhlasujete Globálna úroveň premenné v hornej časti modulov kódu. Avšak namiesto použitia Dim vyhlásenie, použili by ste príponu Verejné vyhlásenie, ktoré naznačuje, že Booleovský premenná je k dispozícii na použitie vo vašom projekte VBA.
1 | Verejné blnA ako logická hodnota |
Ak by ste mali vyhlásiť Booleovský premennú na úrovni modulu a potom ju skúste použiť v inom module, zobrazí sa chyba.
Ak ste však na deklarovanie súboru použili kľúčové slovo Public Booleovský premenná, chyba by nenastala a postup by prebehol perfektne.
Použitie booleovskej premennej
V logickom porovnaní použijete boolovskú premennú. Často sa používajú s príkazmi If na testovanie, či je podmienka pravdivá alebo nepravdivá podľa vyššie uvedeného príkladu, alebo v riadku kódu na použitie logického testu - možno na zistenie, či je jedna hodnota väčšia ako druhá.
12345678 | Sub blnPriklad ()'deklarujte booleovskú premennúDim blnA ako booleovský'vyskúšajte, či je jedno číslo väčšie ako ďalšieblnA = 45> 68“Zobraziť pole so správouMsgBox blnAKoniec pod |
Ak spustíte kód uvedený vyššie, zobrazí sa nasledujúce okno so správou.
pretože 45 samozrejme nie je väčšie ako 68!
Použitie boolovských operátorov
Keďže na logické porovnávanie sa používajú logické premenné, môžeme na testovanie logických operátorov AND a OR zistiť, či je viac ako jedna podmienka pravdivá alebo nepravdivá.
Použitie operátora AND
Pomocou funkcie AND môžeme zistiť, či sú splnené OBOJ podmienky.
12345678 | Sub blnPriklad ()'deklarujte booleovskú premennúDim blnA ako booleovský'Pomocou operátora AND vyskúšajte, či sú obe podmienky splnenéblnA = 10> 13 A 15> 12“Zobraziť pole so správouMsgBox blnAKoniec pod |
alebo by sme mohli vykonať rovnaký test pomocou príkazu If:
123456789101112 | Sub blnPriklad ()'deklarujte booleovskú premennúDim blnA ako booleovský'Pomocou operátora AND vyskúšajte, či sú obe podmienky splnenéAk 10> 13 A 15> 12 PotomblnA = PravdaInakblnA = nepravdaKoniec Ak“Zobraziť pole so správouMsgBox blnAKoniec pod |
Oba vyššie uvedené príklady sa vrátia NEPRAVDA vzhľadom k tomu, že 10 je NIE viac ako 13 - a OBA podmienky musia byť pravdivé, aby bola logická hodnota pravdivá.
Použitie operátora ALEBO
Na zistenie, či je splnená JEDNA z podmienok, môžeme použiť funkciu ALEBO.
12345678 | Sub blnPriklad ()'deklarujte booleovskú premennúDim blnA ako booleovský'Pomocou operátora AND vyskúšajte, či sú obe podmienky splnenéblnA = 10> 13 alebo 15> 12“Zobraziť pole so správouMsgBox blnAKoniec pod |
alebo by sme mohli vykonať rovnaký test pomocou príkazu If:
123456789101112 | Sub blnPriklad ()'deklarujte booleovskú premennúDim blnA ako booleovský'Pomocou operátora AND vyskúšajte, či sú obe podmienky splnenéAk 10> 13 ALEBO 15> 12 PotomblnA = PravdaInakblnA = nepravdaKoniec Ak“Zobraziť pole so správouMsgBox blnAKoniec pod |
Tieto príklady by sa vrátili PRAVDA vzhľadom na skutočnosť, že 10 NIE je väčšie ako 13, ALE 15 JE väčšie ako 12 - aLEN JEDEN podmienka musí byť pravdivá, aby bola logická hodnota pravdivá.
Použitie príkazov If nám umožňuje použiť viac logických operátorov
Použitie operátora NOT
S booleovskou premennou môžeme použiť aj operátor NOT. Operátor NOT neguje hodnotu podmienky - takže ak je podmienka pravdivá, operátor NOT vráti hodnotu false.
12345678910111213141516 | Rozdiel pod hľadaním ()'deklarovať premenné rozsahuDim rng1 As RangeDim rng2 As Range'aktivujte list jednaPracovné listy („List1“). Aktivujte„naplňte rozsahyNastaviť rng1 = rozsah ("A3")Nastaviť rng2 = rozsah ("B3")'Ak chcete zistiť, či sú hodnoty rovnaké alebo nie, použite operátor NOT.Ak nie je rng1.Value = rng2.Value PotomMsgBox „Hodnoty v bunkách nie sú rovnaké“InakMsgBox „Hodnoty v bunkách sú rovnaké“Koniec AkKoniec pod |
Použitie logického operátora Xor
TheXor logický operátor sa používa na porovnanie dvoch alebo viacerých podmienok. Ak je jedna z podmienok pravdivá, vráti hodnotu PRAVDA. Ak existujú 2 podmienky a NIŽŠIE sú pravdivé alebo OBOJNÉ sú pravdivé, vráti sa NEPRAVDA.
1234567891011121314151617 | Sub blnPriklad ()“deklarovať celé číslaDim intA ako celé čísloDim intB ako celé číslo'deklarujte booleovskú premennúDim blnVýsledok ako booleovský“vyplňte premennéintA = 5intB = 10“skontrolujte, či je jedna pravdaAk intA = 5 X alebo intB = 5 PotomblnResult = PravdaInakblnResult = FalseKoniec AkMsgBox blnVýsledokKoniec pod |
Vo vyššie uvedenom príklade, pretože JEDNA z podmienok je PRAVDA, vráti sa okno so správou PRAVDA.
1234567891011121314151617 | Sub blnPriklad ()“deklarovať celé číslaDim intA ako celé čísloDim intB ako celé číslo'deklarujte booleovskú premennúDim blnVýsledok ako booleovský“vyplňte premennéintA = 5intB = 5“skontrolujte, či je jedna pravdaAk intA = 5 X alebo intB = 5 PotomblnResult = PravdaInakblnResult = FalseKoniec AkMsgBox blnVýsledokKoniec pod |
Vo vyššie uvedenom príklade, pretože sú splnené OBOJ podmienky, sa okno so správou vráti NEPRAVDA.
1234567891011121314151617 | Sub blnPriklad ()“deklarovať celé číslaDim intA ako celé čísloDim intB ako celé číslo'deklarujte booleovskú premennúDim blnVýsledok ako booleovský“vyplňte premennéintA = 6intB = 8“skontrolujte, či je jedna pravdaAk intA = 5 X alebo intB = 5 PotomblnResult = PravdaInakblnResult = FalseKoniec AkMsgBox blnVýsledokKoniec pod |
a nakoniec, keďže obe podmienky sú NEPRAVDIVÉ, pole so správou tiež vráti NEPRAVDIVÉ.