Logikai változó típusa
A VBA logikai adattípus igaz vagy hamis értékek tárolására szolgál. Az igaz 1 -vel, a hamis 0 -val is ábrázolható.
Logikai változó deklarálásához használja a Dim Statement (a Dimension rövidítése) kifejezést:
1 | Dim blnA mint Boolean |
Ezután, ha értéket szeretne rendelni egy változóhoz, egyszerűen használja az egyenlőségjelet:
1 | blnA = Igaz |
Ha ezt egy eljárásba helyezi, a következőképpen nézhet ki:
123456789101112 | Sub blnPélda ()'deklarálja a logikai változótDim blnA mint Boolean'futtassa a kódot a változó feltöltéséhez - általában a kód egy if vagy egy case utasításHa a tartomány ("A1")> 0 akkorblnA = igazMásblnA = HamisVége Ha'mutasd az üzenetdoboztMsgBox "A teszt annak megállapítására, hogy a cella értéke 0 -nál nagyobb -e" & blnAEnd Sub |
Ha futtatja a fenti kódot, a következő üzenetmező jelenik meg.
Logikai változó deklarálása modulon vagy globális szinten
Az előző példában kijelentettük a Boolean változó egy eljárásban. Az eljárással deklarált változók csak ezen az eljáráson belül használhatók.
Ehelyett logikai változókat deklarálhat modul vagy globális szinten.
Modul szint
Kijelented A modul szintje változókat a kódmodulok tetején a Homályos nyilatkozat.
Ezek a változók az adott kódmodul bármely eljárásával használhatók.
Globális szint
Ön is kijelenti Globális szinten változók a kódmodulok tetején. Azonban ahelyett, hogy a Homályos nyilatkozatot, akkor a Nyilvános nyilatkozat arra utal, hogy a Boolean változó használható a VBA projekt során.
1 | Nyilvános blnA mint Boolean |
Ha bejelentenéd a Boolean modul szintjén, majd próbálja meg egy másik modulban használni, hibaüzenetet kap.
Ha azonban a Nyilvános kulcsszót használta a Boolean változó, a hiba nem fordul elő, és az eljárás tökéletesen fut.
Logikai változó használata
Logikai összehasonlításban a logikai változót használja. Ezeket gyakran használják az If utasításokkal annak tesztelésére, hogy egy feltétel igaz -e vagy hamis a fenti példa szerint, vagy egy kódsorban logikai teszt alkalmazására - esetleg annak megállapítására, hogy az egyik érték nagyobb -e a másiknál.
12345678 | Sub blnPélda ()'deklarálja a logikai változótDim blnA Mint Boolean'tesztelje, hogy az egyik szám nagyobb -e, mint a következőblnA = 45> 68'mutasd az üzenetdoboztMsgBox blnAEnd Sub |
Ha futtatja a fenti kódot, akkor a következő üzenetmezőt fogja kapni.
mert persze a 45 nem nagyobb 68 -nál!
Boole -operátorok használata
Mivel a logikai változókat logikai összehasonlításban használják, az AND és az OR logikai operátorok segítségével tesztelhetjük, hogy egynél több feltétel igaz vagy hamis.
Az AND operátor használata
Az ÉS függvénnyel ellenőrizhetjük, hogy mindkét feltétel teljesül -e.
12345678 | Sub blnPélda ()'deklarálja a logikai változótDim blnA Mint Boolean'az ÉS operátorral tesztelje, hogy mindkét feltétel teljesül -eblnA = 10> 13 És 15> 12'mutasd az üzenetdoboztMsgBox blnAEnd Sub |
vagy futtathatjuk ugyanazt a tesztet egy If utasítás segítségével:
123456789101112 | Sub blnPélda ()'deklarálja a logikai változótDim blnA Mint Boolean'az ÉS operátorral tesztelje, hogy mindkét feltétel teljesül -eHa 10> 13 És 15> 12 AkkorblnA = IgazMásblnA = HamisVége Ha'mutasd az üzenetdoboztMsgBox blnAEnd Sub |
Mindkét példa visszatérne HAMIS annak a ténynek köszönhetően, hogy 10 NEM nagyobb, mint 13 - és MINDKÉT a feltételeknek igaznak kell lenniük ahhoz, hogy a logikai érték igaz legyen.
A VAGY operátor használata
Az OR függvény segítségével ellenőrizhetjük, hogy az egyik feltétel teljesül -e.
12345678 | Sub blnPélda ()'deklarálja a logikai változótDim blnA Mint Boolean'az ÉS operátorral tesztelje, hogy mindkét feltétel teljesül -eblnA = 10> 13 Vagy 15> 12'mutasd az üzenetdoboztMsgBox blnAEnd Sub |
vagy futtathatjuk ugyanazt a tesztet egy If utasítás segítségével:
123456789101112 | Sub blnPélda ()'deklarálja a logikai változótDim blnA Mint Boolean'az ÉS operátorral tesztelje, hogy mindkét feltétel teljesül -eHa 10> 13 VAGY 15> 12 AkkorblnA = IgazMásblnA = HamisVége Ha'mutasd az üzenetdoboztMsgBox blnAEnd Sub |
Ezek a példák visszatérnének IGAZ annak a ténynek köszönhetően, hogy 10 NEM nagyobb 13 -nál, DE 15 IS nagyobb 12 -nél - ésCSAK EGY feltételnek igaznak kell lennie, hogy a logikai érték igaz legyen.
Az If utasítások használatával logikusabb operátorokat használhatunk
A NOT operátor használata
Használhatjuk a NOT operátort a Boolean változóval is. A NOT operátor tagadja a feltétel értékét - tehát ha egy feltétel igaz, akkor a NOT operátor hamis értéket ad vissza.
12345678910111213141516 | Sub FindDifferences ()'deklarálja a tartományváltozókatDim rng1 mint tartományDim rng2 mint tartomány'aktiválja az első lapotMunkalapok ("Sheet1"). Aktiválás'népesítse be a tartományokatSet rng1 = Tartomány ("A3")Set rng2 = Tartomány ("B3")'a NOT operátorral ellenőrizze, hogy az értékek egyenlők -e vagy sem.Ha nem rng1.Value = rng2.Value AkkorMsgBox "A cellák értékei nem egyenlőek"MásMsgBox "A cellák értékei egyenlők"Vége HaEnd Sub |
A Xor logikai operátor használata
AzXor logikai operátor két vagy több feltétel összehasonlítására szolgál. Ha az egyik feltétel igaz, akkor IGAZ értéket ad vissza. Ha 2 feltétel van, és egyik sem igaz, vagy mindkettő igaz, akkor hamis lesz.
1234567891011121314151617 | Sub blnPélda ()'deklarálják az egész számokatDim intA Mint egészDim intB Mint egész'deklarálja a logikai változótDim blnEredmény mint Boolean'töltse ki a változókatintA = 5intB = 10'ellenőrizze, hogy az egyik igaz -eHa intA = 5 Xor intB = 5 AkkorblnResult = IgazMásblnResult = HamisVége HaMsgBox blnResultEnd Sub |
A fenti példában, mivel az egyik feltétel IGAZ, az üzenetdoboz visszatér IGAZ.
1234567891011121314151617 | Sub blnPélda ()'deklarálják az egész számokatDim intA Mint egészDim intB Mint egész'deklarálja a logikai változótDim blnEredmény Booleanként'töltse ki a változókatintA = 5intB = 5'ellenőrizze, hogy az egyik igaz -eHa intA = 5 Xor intB = 5 AkkorblnResult = IgazMásblnResult = HamisVége HaMsgBox blnResultEnd Sub |
A fenti példában azonban, mivel mindkét feltétel igaz, az üzenetdoboz visszatér HAMIS.
1234567891011121314151617 | Sub blnPélda ()'deklarálják az egész számokatDim intA Mint egészDim intB Mint egész'deklarálja a logikai változótDim blnEredmény Booleanként'töltse ki a változókatintA = 6intB = 8'ellenőrizze, hogy az egyik igaz -eHa intA = 5 Xor intB = 5 AkkorblnResult = IgazMásblnResult = HamisVége HaMsgBox blnResultEnd Sub |
és végül, mivel mindkét feltétel HAMIS, az üzenetdoboz is HAMIS értéket ad vissza.