Loogiline muutuja tüüp
VBA Boolean andmetüüpi kasutatakse väärtuste True või False salvestamiseks. Tõene võib olla ka 1 ja vale 0.
Loogilise muutuja deklareerimiseks kasutage Dim Statement (lühend Dimension):
1 | Dim blnA kui Boolean |
Seejärel kasutage muutujale väärtuse määramiseks lihtsalt võrdusmärki:
1 | blnA = Tõsi |
Kui panete selle protseduurile, võib see välja näha järgmine:
123456789101112 | AlamblnNäide ()'deklareerige boolean muutujaDim blnA kui Boolean'käivitage muutuja täitmiseks kood - tavaliselt on kood if või case lauseKui vahemik ("A1")> 0 siisblnA = tõsiMuidublnA = valeLõpp Kui'näidake sõnumikastMsgBox "Test, et näha, kas lahtri väärtus on suurem kui 0" & blnAEnd Sub |
Kui käivitate ülaltoodud koodi, kuvatakse järgmine sõnumikast.
Loogilise muutuja deklareerimine moodulil või globaalsel tasandil
Eelmises näites kuulutasime välja Boolean muutuja protseduuri piires. Protseduuriga deklareeritud muutujaid saab kasutada ainult selle protseduuri raames.
Selle asemel saate deklareerida loogilised muutujad mooduli või globaalsel tasandil.
Mooduli tase
Sina kuulutad Mooduli tase muutujad koodimoodulite ülaosas koos Dim avaldus.
Neid muutujaid saab selle koodimooduli mis tahes protseduuriga kasutada.
Globaalne tase
Te deklareerite ka Globaalne tase muutujad koodimoodulite ülaosas. Selle asemel, et kasutada Dim avaldust, kasutaksite Avalik avaldus, mis näitab, et Boolean muutuja on saadaval kasutamiseks kogu teie VBA projekti jooksul.
1 | Avalik blnA kui Boolean |
Kui peaksite kuulutama ,. Boolean muutuja mooduli tasemel ja seejärel proovige seda kasutada mõnes teises moodulis, saate vea.
Kui aga oleksite deklareerimiseks kasutanud märksõna Avalik Boolean muutuja, viga ei esine ja protseduur toimiks ideaalselt.
Loogilise muutuja kasutamine
Loogilises võrdluses kasutate Boole'i muutujat. Neid kasutatakse sageli If -lausetega, et kontrollida, kas tingimus on ülaltoodud näite kohaselt tõene või vale, või koodireal loogilise testi rakendamiseks - võib -olla selleks, et näha, kas üks väärtus on suurem kui teine.
12345678 | AlamblnNäide ()'deklareerige boolean muutujaDim blnA Nagu Booleantestida, kas üks number on suurem kui järgmineblnA = 45> 68'näidake sõnumikastMsgBox blnAEnd Sub |
Kui käivitate ülaltoodud koodi, kuvatakse järgmine sõnumikast.
sest muidugi pole 45 suurem kui 68!
Boole'i operaatorite kasutamine
Kuna loogilises võrdluses kasutatakse loogilisi muutujaid, saame loogiliste operaatorite AND ja OR abil testida, kas mitu tingimust on tõene või vale.
Operaatori AND kasutamine
Funktsiooni AND abil saame kontrollida, kas mõlemad tingimused on täidetud.
12345678 | AlamblnNäide ()'deklareerige boolean muutujaDim blnA Nagu Boolean"Kasutage operaatorit AND, et kontrollida, kas mõlemad tingimused on tõesedblnA = 10> 13 Ja 15> 12'näidake sõnumikastMsgBox blnAEnd Sub |
või võime sama testi käivitada If -avalduse abil:
123456789101112 | AlamblnNäide ()'deklareerige boolean muutujaDim blnA Nagu Boolean"Kasutage operaatorit AND, et kontrollida, kas mõlemad tingimused on tõesedKui 10> 13 Ja 15> 12 SiisblnA = TõsiMuidublnA = valeLõpp Kui'näidake sõnumikastMsgBox blnAEnd Sub |
Mõlemad ülaltoodud näited tuleksid tagasi VALE tingitud asjaolust, et 10 on MITTE suurem kui 13 - ja MÕLEMAD tingimused peavad olema tõesed, et tõeväärtus oleks tõene.
Operaatori OR kasutamine
Funktsiooni VÕI abil saame näha, kas ÜKS tingimustest on täidetud.
12345678 | AlamblnNäide ()'deklareerige boolean muutujaDim blnA Nagu Boolean"Kasutage operaatorit AND, et kontrollida, kas mõlemad tingimused on tõesedblnA = 10> 13 või 15> 12'näidake sõnumikastMsgBox blnAEnd Sub |
või võime sama testi käivitada If -avalduse abil:
123456789101112 | AlamblnNäide ()'deklareerige boolean muutujaDim blnA Nagu Boolean"Kasutage operaatorit AND, et kontrollida, kas mõlemad tingimused on tõesedKui 10> 13 VÕI 15> 12 SiisblnA = TõsiMuidublnA = valeLõpp Kui'näidake sõnumikastMsgBox blnAEnd Sub |
Need näited tuleks tagasi TÕSI tulenevalt asjaolust, et 10 EI OLE suurem kui 13 AGA 15 ON suurem kui 12 - jaAINULT ÜKS tingimus peab olema tõene, et tõeväärtus oleks tõene.
If -lausete kasutamine võimaldab meil kasutada loogilisemaid operaatoreid
Operaatori NOT kasutamine
Boolean -muutujaga saame kasutada ka NOT -operaatorit. Operaator NOT eitab tingimuse väärtuse - nii et kui tingimus on tõene, tagastab NOT -operaator vale.
12345678910111213141516 | Sub FindDifferences ()'deklareerige vahemiku muutujadDim rng1 As RangeDim rng2 As Range'aktiveerige leht 1Töölehed ("Sheet1"). Aktiveeri'asustada vahemikkeMäära rng1 = Vahemik ("A3")Määra rng2 = Vahemik ("B3")"kasutage NOT -operaatorit, et näha, kas väärtused on võrdsed või mitte.Kui ei, siis rng1.Value = rng2.Value SiisMsgBox "Lahtrite väärtused pole võrdsed"MuiduMsgBox "Lahtrite väärtused on võrdsed"Lõpp KuiEnd Sub |
Loogilise operaatori Xor kasutamine
TheXor loogilist operaatorit kasutatakse kahe või enama tingimuse võrdlemiseks. Kui üks tingimustest on tõene, tagastab see tõe. Kui on kaks tingimust ja MITTE KÕIK ei ole tõsi või MÕlemad on tõesed, tagastab see VÄÄR.
1234567891011121314151617 | AlamblnNäide ()"deklareerige täisarvudDim intA täisarvunaDim intB Nagu täisarv'deklareerige boolean muutujaDim blnTulemus Booleanina'täitke muutujadintA = 5intB = 10'kontrollige, kas üks on tõsiKui intA = 5 X või intB = 5 SiisblnResult = TõsiMuidublnResult = ValeLõpp KuiMsgBox blnTulemusEnd Sub |
Ülaltoodud näites, kuna ÜKS tingimustest on TÕENE, naaseb sõnumikast TÕSI.
1234567891011121314151617 | AlamblnNäide ()"deklareerige täisarvudDim intA täisarvunaDim intB Nagu täisarv'deklareerige boolean muutujaDim blnTulemus Booleanina'täitke muutujadintA = 5intB = 5'kontrollige, kas üks on tõsiKui intA = 5 X või intB = 5 SiisblnResult = TõsiMuidublnResult = ValeLõpp KuiMsgBox blnTulemusEnd Sub |
Kuid ülaltoodud näites, kuna mõlemad tingimused on tõesed, naaseb sõnumikast VALE.
1234567891011121314151617 | AlamblnNäide ()"deklareerige täisarvudDim intA täisarvunaDim intB Nagu täisarv'deklareerige boolean muutujaDim blnTulemus Booleanina'täitke muutujadintA = 6intB = 8'kontrollige, kas üks on tõsiKui intA = 5 X või intB = 5 SiisblnResult = TõsiMuidublnResult = ValeLõpp KuiMsgBox blnTulemusEnd Sub |
ja lõpuks, kuna mõlemad tingimused on FALSE, tagastab sõnumikast ka FALSE.