VBA leidžia naudoti loginius operatorius Ir, Arba, Ne, Xor lyginti vertybes. Operatoriai laikomi „loginiais“, o tai reiškia, kad jie grąžina „True“ arba „false“.
Jei norite sužinoti, kaip palyginti stygas, spustelėkite čia: VBA Palyginti stygas - StrComp
Jei norite sužinoti, kaip naudoti palyginimo operatorius, spustelėkite čia: VBA palyginimo operatoriai - nelygu ir daugiau
Naudojant ir loginį operatorių
The Ir loginis operatorius lygina dvi ar daugiau sąlygų. Jei visos sąlygos yra teisingos, operatorius grąžins „True“. Jei bent viena iš sąlygų nėra teisinga, operatorius grąžins klaidingą. Štai pavyzdys:
123456789101112 | Dim intA As IntegerDim intB As IntegerDim blnResult As BooleanintA = 5intB = 5Jei intA = 5 Ir intB = 5 TadablnResult = TiesaKitasblnResult = NetiesaPabaiga Jei |
Šiame pavyzdyje norime patikrinti, ar abu intA ir intB yra lygios 5. Jei tai tiesa, Boolean reikšmė blnResult bus tiesa, kitu atveju tai bus melas.
Pirmiausia nustatome reikšmes intA ir intB iki 5:
12 | intA = 5intB = 5 |
Po to mes naudojame Ir operatorius If sakinyje, kad patikrintų, ar reikšmės yra lygios 5:
12345 | Jei intA = 5 Ir intB = 5 TadablnResult = TiesaKitasblnResult = NetiesaPabaiga Jei |
Kadangi abu kintamieji yra lygūs 5, blnResult grąžina tiesa:
Vaizdas 1. Naudojant loginį operatorių VBA
Arba loginio operatoriaus naudojimas
The Arba loginis operatorius lygina dvi ar daugiau sąlygų. Jei bent viena iš sąlygų yra teisinga, ji grįš tiesa. Jei nė viena iš sąlygų nėra teisinga, operatorius grąžins klaidingą. Štai pavyzdžio kodas:
123456789101112 | Dim intA As IntegerDim intB As IntegerDim blnResult As BooleanintA = 5intB = 10Jei intA = 5 arba intB = 5 TadablnResult = TiesaKitasblnResult = NetiesaPabaiga Jei |
Šiame pavyzdyje norime patikrinti, ar abu intA yra lygus 5. arba intB yra lygus 10. Jei kuri nors iš šių sąlygų yra teisinga, Boolean reikšmė blnResult bus tiesa, kitu atveju tai bus melas.
Pirmiausia nustatome reikšmę intA iki 5 ir intB iki 10:
12 | intA = 5intB = 10 |
Po to mes naudojame Arba operatorius If sakinyje, kad patikrintų, ar kuri nors iš reikšmių yra lygi 5:
12345 | Jei intA = 5 arba intB = 5 TadablnResult = TiesaKitasblnResult = NetiesaPabaiga Jei |
Kaip intA vertė yra 5, blnResult grąžina tiesa:
2 paveikslas. Naudojant loginį operatorių VBA
Ne loginio operatoriaus naudojimas
The Ne loginis operatorius patikrina vieną ar daugiau sąlygų. Jei sąlygos yra teisingos, operatorius pateikia klaidingą. Priešingu atveju grąžinama tiesa. Štai pavyzdžio kodas:
12345678910 | Dim intA As IntegerDim blnResult As BooleanintA = 5Jei ne (intA = 6) TadablnResult = TiesaKitasblnResult = NetiesaPabaiga Jei |
Šiame pavyzdyje norime patikrinti, ar reikšmė intA nėra lygus 6. Jei intA yra kitoks nei 6, loginė vertė blnResult bus tiesa, kitu atveju tai bus melas.
Pirmiausia nustatome reikšmę intA iki 5:
1 | intA = 5 |
Po to sakinyje „If“ naudojame operatorių „Not“, kad patikrintume, ar intA vertė skiriasi nuo 6:
12345 | Jei ne (intA = 6) TadablnResult = TiesaKitasblnResult = NetiesaPabaiga Jei |
Kaip intA vertė yra 5, blnResult grąžina tiesa:
3 paveikslas. Naudojant ne loginį operatorių VBA
„Xor Logical Operator“ naudojimas
The Xor loginis operatorius lygina dvi ar daugiau sąlygų. Jei tiksliai viena iš sąlygų yra teisinga, ji grįš tiesa. Jei nė viena iš sąlygų nėra teisinga arba daugiau nei viena yra teisinga, ji grąžins klaidingą. Štai pavyzdžio kodas:
123456789101112 | Dim intA As IntegerDim intB As IntegerDim blnResult As BooleanintA = 5intB = 10Jei intA = 5 X arba intB = 5 TadablnResult = TiesaKitasblnResult = NetiesaPabaiga Jei |
Šiame pavyzdyje norime patikrinti, ar tiksliai viena iš reikšmių (intA arba IntB) yra lygi 5. Jei teisinga tik viena sąlyga, loginės vertės blnResult bus tiesa, kitu atveju tai bus melas.
Pirmiausia nustatome reikšmę intA iki 5 ir intB iki 10:
12 | intA = 5intB = 10 |
Po to mes naudojame Arba operatorius If sakinyje, kad patikrintų, ar kuri nors iš reikšmių yra lygi 5:
12345 | Jei intA = 5 X arba intB = 5 TadablnResult = TiesaKitasblnResult = NetiesaPabaiga Jei |
Kaip intA vertė yra 5 ir intB yra 10, blnResult grąžina tiesa:
4 paveikslas. Naudojant Xor loginį operatorių VBA
Yra Operatorius
„Is Operator“ patikrina, ar du objekto kintamieji saugo tą patį objektą.
Pažvelkime į pavyzdį. Čia darbalapio objektams rng1 ir rng2 priskirsime du darbalapius, patikrindami, ar abu darbalapio objektai saugo tą patį darbalapį:
12345678910111213 | Sub CompareObjects ()Dim ws1 kaip darbalapis, ws2 kaip darbalapisNustatyti ws1 = Lakštai („Lapas1“)Nustatyti ws2 = Lakštai („Lapas2“)Jei ws1 Ar ws2 Tada„MsgBox“ „Tas pats WS“Kitas„MsgBox“ skirtingi WSPabaiga JeiPabaiga Sub |
Žinoma, darbalapio objektai nėra vienodi, todėl grąžinamas „Skirtingi WS“.
Kaip Operatorė
„Like“ operatorius gali palyginti dvi eilutes, kad gautų netikslias atitiktis. Šis pavyzdys patikrins, ar eilutė prasideda „Mr.“
1234567891011121314 | Sub LikeDemo ()Dim strName As StringDim blnResult As BooleanstrName = "Ponas Michaelas Jamesas"Jei strName Kaip „Ponas*“, tadablnResult = TiesaKitasblnResult = NetiesaPabaiga JeiPabaiga Sub |