Loginis kintamasis tipas
VBA loginis duomenų tipas naudojamas teisingoms arba klaidingoms reikšmėms saugoti. Tiesa taip pat gali būti pavaizduota 1, o klaidinga - 0.
Norėdami deklaruoti loginį kintamąjį, naudokite Dim Statement (santrumpa Dimension):
1 | Dim blnA kaip loginis |
Tada, norėdami priskirti kintamojo vertę, tiesiog naudokite lygybės ženklą:
1 | blnA = tiesa |
Įvedus procedūrą, tai gali atrodyti taip:
123456789101112 | Sub blnPavyzdys ()“paskelbti loginį kintamąjįDim blnA kaip loginis„paleiskite kodą, kad užpildytumėte kintamąjį - dažniausiai kodas yra„ if “arba„ case “teiginysJei diapazonas ("A1")> 0 tadablnA = tiesaKitasblnA = klaidingaPabaiga Jei“parodyti pranešimų laukelį„MsgBox“ „Bandymas, siekiant išsiaiškinti, ar ląstelės vertė yra didesnė nei 0“ & blnAPabaiga Sub |
Jei paleisite aukščiau esantį kodą, bus parodytas šis pranešimų langas.
Būklės kintamojo paskelbimas modulyje arba pasauliniu lygiu
Ankstesniame pavyzdyje mes paskelbėme Būlinį kintamas procedūros metu. Kintamieji, deklaruojami naudojant procedūrą, gali būti naudojami tik tos procedūros metu.
Vietoj to, Boolean kintamuosius galite deklaruoti modulio ar visuotiniu lygiu.
Modulio lygis
Jūs deklaruojate Modulio lygis kintamuosius kodo modulių viršuje su Mat pareiškimas.
Šiuos kintamuosius galima naudoti atliekant bet kokias to kodo modulio procedūras.
Pasaulinis lygis
Jūs taip pat deklaruojate Pasaulinis lygis kintamuosius kodo modulių viršuje. Tačiau, užuot naudoję Mat pareiškimą, jūs naudosite Viešas pareiškimas, nurodantis, kad Būlinį kintamąjį galima naudoti visame VBA projekte.
1 | Viešas blnA kaip loginis |
Jei deklaruotumėte Būlinį kintamąjį modulio lygiu ir tada pabandykite jį naudoti kitame modulyje, gausite klaidą.
Tačiau, jei deklaracijai naudojote viešą raktinį žodį Būlinį kintamasis, klaida neįvyks ir procedūra veiks puikiai.
Naudojant loginį kintamąjį
Loginį palyginimą naudojate Boolean kintamuoju. Jie dažnai naudojami su „If“ teiginiais, norint patikrinti, ar sąlyga yra teisinga ar klaidinga, kaip nurodyta aukščiau pateiktame pavyzdyje, arba kodo eilutėje, kad būtų taikomas loginis testas - galbūt norėdami pamatyti, ar viena vertė yra didesnė už kitą.
12345678 | Sub blnPavyzdys ()“paskelbti loginį kintamąjįDim blnA Kaip loginis“išbandykite, ar vienas skaičius yra didesnis už kitąblnA = 45> 68“parodyti pranešimų laukelį„MsgBox blnA“Pabaiga Sub |
Jei paleisite aukščiau esantį kodą, gausite šį pranešimų laukelį.
Žinoma, 45 nėra didesnis nei 68!
Naudojant „Boolean“ operatorius
Kadangi loginis kintamasis naudojamas loginiam palyginimui, mes galime naudoti loginius operatorius AND ir OR, kad patikrintume, ar daugiau nei viena sąlyga yra teisinga ar klaidinga.
Naudojant operatorių AND
Mes galime naudoti funkciją AND, kad pamatytume, ar abi sąlygos yra įvykdytos.
12345678 | Sub blnPavyzdys ()“paskelbti loginį kintamąjįDim blnA Kaip loginis„naudokite AND operatorių, kad patikrintumėte, ar abi sąlygos yra teisingosblnA = 10> 13 Ir 15> 12“parodyti pranešimų laukelį„MsgBox blnA“Pabaiga Sub |
arba galėtume atlikti tą patį testą naudodami „If“ teiginį:
123456789101112 | Sub blnPavyzdys ()“paskelbti loginį kintamąjįDim blnA Kaip loginis„naudokite AND operatorių, kad patikrintumėte, ar abi sąlygos yra teisingosJei 10> 13 Ir 15> 12 TadablnA = tiesaKitasblnA = klaidingaPabaiga Jei“parodyti pranešimų laukelį„MsgBox blnA“Pabaiga Sub |
Abu aukščiau pateikti pavyzdžiai sugrįžtų NETIESA dėl to, kad 10 yra NE didesnis nei 13 - ir Abi Sąlygos turi būti teisingos, kad „Boolean“ būtų tiesa.
Naudojant OR operatorių
Mes galime naudoti funkciją ARBA, kad pamatytume, ar įvykdyta VIENA iš sąlygų.
12345678 | Sub blnPavyzdys ()“paskelbti loginį kintamąjįDim blnA Kaip loginis„naudokite AND operatorių, kad patikrintumėte, ar abi sąlygos yra teisingosblnA = 10> 13 arba 15> 12“parodyti pranešimų laukelį„MsgBox blnA“Pabaiga Sub |
arba galėtume atlikti tą patį testą naudodami „If“ teiginį:
123456789101112 | Sub blnPavyzdys ()“paskelbti loginį kintamąjįDim blnA Kaip loginis„naudokite AND operatorių, kad patikrintumėte, ar abi sąlygos yra teisingosJei 10> 13 ARBA 15> 12 TadablnA = tiesaKitasblnA = klaidingaPabaiga Jei“parodyti pranešimų laukelį„MsgBox blnA“Pabaiga Sub |
Šie pavyzdžiai sugrįžtų TIESA dėl to, kad 10 NĖRA didesnis nei 13 BET 15 yra didesnis nei 12 - irTIK VIENAS sąlyga turi būti teisinga, kad loginė vertė būtų tiesa.
„If“ teiginių naudojimas leidžia naudoti daugiau loginių operatorių
Naudojant NE operatorių
Taip pat galime naudoti NOT operatorių su Boolean kintamuoju. Operatorius NOT paneigia sąlygos vertę - taigi, jei sąlyga yra tiesa, NOT operatorius grąžins klaidingą.
12345678910111213141516 | Sub FindDifferences ()“deklaruoti diapazono kintamuosiusDim rng1 Kaip diapazonasDim rng2 kaip diapazonas'suaktyvinkite pirmą lapąDarbo lapai („Sheet1“). Aktyvinti'užpildykite diapazonusNustatyti rng1 = Diapazonas ("A3")Nustatyti rng2 = Diapazonas ("B3")„naudokite NOT operatorių, kad pamatytumėte, ar vertės lygios, ar ne.Jei ne rng1.Value = rng2.Value Tada„MsgBox“ Ląstelių vertės nėra lygiosKitasMsgBox „Ląstelių vertės yra lygios“Pabaiga JeiPabaiga Sub |
„Xor Logical Operator“ naudojimas
TheXor loginis operatorius naudojamas dviem ar daugiau sąlygų palyginti. Jei viena iš sąlygų yra teisinga, ji grąžins TIESA. Jei yra 2 sąlygos ir NIEKAS nėra teisingas arba Abi yra teisingos, tai grąžins klaidingą.
1234567891011121314151617 | Sub blnPavyzdys ()“deklaruoja sveikuosius skaičiusDim intA As IntegerDim intB As Integer“paskelbti loginį kintamąjįDim blnResult As Boolean“užpildykite kintamuosiusintA = 5intB = 10“patikrinkite, ar viena tiesaJei intA = 5 X arba intB = 5 TadablnResult = TiesaKitasblnResult = NetiesaPabaiga JeiMsgBox blnResultPabaiga Sub |
Anksčiau pateiktame pavyzdyje, kadangi VIENA iš sąlygų yra TIESA, pranešimų laukelis grįš TIESA.
1234567891011121314151617 | Sub blnPavyzdys ()“deklaruoja sveikuosius skaičiusDim intA As IntegerDim intB As Integer“paskelbti loginį kintamąjįDim blnResult As Boolean“užpildykite kintamuosiusintA = 5intB = 5“patikrinkite, ar vienas iš jų yra tiesaJei intA = 5 X arba intB = 5 TadablnResult = TiesaKitasblnResult = NetiesaPabaiga JeiMsgBox blnResultPabaiga Sub |
Tačiau aukščiau pateiktame pavyzdyje, kadangi abi sąlygos yra teisingos, pranešimų laukelis grįš NETIESA.
1234567891011121314151617 | Sub blnPavyzdys ()“deklaruoja sveikuosius skaičiusDim intA As IntegerDim intB As Integer“paskelbti loginį kintamąjįDim blnResult As Boolean“užpildykite kintamuosiusintA = 6intB = 8“patikrinkite, ar vienas iš jų yra tiesaJei intA = 5 X arba intB = 5 TadablnResult = TiesaKitasblnResult = NetiesaPabaiga JeiMsgBox blnResultPabaiga Sub |
ir galiausiai, kadangi abi sąlygos yra NETIESA, pranešimų laukelis taip pat grąžins FALSE.