VBA vam omogoča uporabo logičnih operaterjev In, Or, Ne, Xor primerjati vrednosti. Operaterji veljajo za "Boolean", kar pomeni, da kot rezultat vrnejo vrednost True ali False.
Če se želite naučiti primerjati strune, kliknite tukaj: VBA Primerjaj strune - StrComp
Če se želite naučiti uporabljati primerjalne operaterje, kliknite tukaj: Primerjalni operaterji VBA - ni enako & več
Uporaba operaterja And Logical Operator
The In logični operater primerja dva ali več pogojev. Če so vsi pogoji resnični, bo operater vrnil True. Če vsaj eden od pogojev ne drži, bo operater vrnil False. Tukaj je primer:
123456789101112 | Zatemni into kot celo številoZatemni intB kot celo številoDim blnResult Kot BooleanintA = 5intB = 5Če je intA = 5 In intB = 5 PotemblnResult = ResSicer pablnResult = FalseKonec Če |
V tem primeru želimo preveriti, ali sta oba intA in intB so enaki 5. Če je to res, je vrednost logične vrednosti blnResult bo res, sicer bo napačno.
Najprej določimo vrednosti intA in intB do 5:
12 | intA = 5intB = 5 |
Po tem uporabljamo In operator v stavku If preveri, ali so vrednosti enake 5:
12345 | Če je intA = 5 In intB = 5 PotemblnResult = ResSicer pablnResult = FalseKonec Če |
Ker sta obe spremenljivki enaki 5, je blnResult vrne True:
Slika 1. Uporaba logičnega operaterja And v VBA
Z uporabo logičnega operaterja
The Or logični operater primerja dva ali več pogojev. Če je vsaj eden od pogojev resničen, se vrne res. Če noben od pogojev ne drži, bo operater vrnil False. Tu je koda za primer:
123456789101112 | Zatemni into kot celo številoZatemni intB kot celo številoDim blnResult Kot BooleanintA = 5intB = 10Če je intA = 5 Ali intB = 5 PotemblnResult = ResSicer pablnResult = FalseKonec Če |
V tem primeru želimo preveriti, ali sta oba intA je enako 5. oz intB je enaka 10. Če je kateri od teh pogojev resničen, je vrednost Boolean blnResult bo res, sicer bo napačno.
Najprej določimo vrednost intA do 5 in intB do 10:
12 | intA = 5intB = 10 |
Po tem uporabljamo Or operator v stavku If preveri, ali je katera od vrednosti enaka 5:
12345 | Če je intA = 5 Ali intB = 5 PotemblnResult = ResSicer pablnResult = FalseKonec Če |
As intA vrednost je 5, blnResult vrne True:
Slika 2. Uporaba logičnega operaterja Or v VBA
Uporaba nelogičnega operaterja
The Ne logični operater preveri enega ali več pogojev. Če so pogoji resnični, operater vrne False. V nasprotnem primeru vrne True. Tu je koda za primer:
12345678910 | Zatemni into kot celo številoDim blnResult Kot BooleanintA = 5Če ne (intA = 6), potemblnResult = ResSicer pablnResult = FalseKonec Če |
V tem primeru želimo preveriti, ali je vrednost intA ni enako 6. Če intA je drugačna od 6, vrednost Boolean blnResult bo res, sicer bo napačno.
Najprej določimo vrednost intA do 5:
1 | intA = 5 |
Po tem uporabimo operator Not v stavku If, da preverimo, ali je vrednost intA drugačna od 6:
12345 | Če ne (intA = 6), potemblnResult = ResSicer pablnResult = FalseKonec Če |
As intA vrednost je 5, blnResult vrne True:
Slika 3. Uporaba operaterja Not logic v VBA
Uporaba logičnega operaterja Xor
The Xor logični operater primerja dva ali več pogojev. Če je natančno eden od pogojev resničen, se vrne res. Če nobeden od pogojev ni resničen ali pa je več kot en, bo vrnil False. Tu je koda za primer:
123456789101112 | Zatemni into kot celo številoZatemni intB kot celo številoDim blnResult Kot BooleanintA = 5intB = 10Če je intA = 5 Xor intB = 5 PotemblnResult = ResSicer pablnResult = FalseKonec Če |
V tem primeru želimo preveriti, ali je ena od vrednosti (intA ali IntB) enaka 5. Če je izpolnjen le en pogoj, je vrednost Boolean blnResult bo res, sicer bo napačno.
Najprej določimo vrednost intA do 5 in intB do 10:
12 | intA = 5intB = 10 |
Po tem uporabljamo Or operator v stavku If preveri, ali je katera od vrednosti enaka 5:
12345 | Če je intA = 5 Xor intB = 5 PotemblnResult = ResSicer pablnResult = FalseKonec Če |
As intA vrednost je 5 in intB je 10, blnResult vrne True:
Slika 4. Uporaba logičnega operaterja Xor v VBA
Je Operater
Operater Is preizkusi, ali dve spremenljivki objektov shranita isti predmet.
Poglejmo primer. Tu bomo objektom delovnega lista rng1 in rng2 dodelili dva delovna lista, pri čemer bomo preizkusili, ali dva predmeta delovnega lista shranita isti delovni list:
12345678910111213 | Sub CompareObjects ()Zatemni ws1 kot delovni list, ws2 kot delovni listSet ws1 = Listi ("List1")Set ws2 = Listi ("List2")Če je ws1 Is ws2 PotemMsgBox "Isti WS"Sicer paMsgBox "Različni WS -ji"Konec ČeEnd Sub |
Seveda predmeti delovnega lista niso enaki, zato se vrne »Različni WS«.
Tako kot operater
Operater Like lahko primerja dva niza za netočna ujemanja. Ta primer bo preizkusil, ali se niz začne z "Mr."
1234567891011121314 | Sub LikeDemo ()Dim strName As StringDim blnResult Kot BooleanstrName = "Gospod Michael James"Če strName kot "gospod*", potemblnResult = ResSicer pablnResult = FalseKonec ČeEnd Sub |