VBA If pareiškimas

Jei tada
VBA Jei teiginiai leidžia patikrinti, ar išraiškos yra TRUE arba FALSE, paleidžiamas skirtingas kodas pagal rezultatus.Pažvelkime į paprastą pavyzdį:
1 | Jei diapazonas ("a2"). Reikšmė> 0 Tada diapazonas ("b2"). Vertė = "teigiamas" |
Taip tikrinama, ar A2 diapazono vertė yra didesnė nei 0. Jei taip, nustatykite diapazoną B2 lygų „Teigiamas“

Pastaba: Bandydami sąlygas naudosime =,>, <,, = palyginimo operatorius. Apie juos išsamiau aptarsime vėliau straipsnyje.Štai paprasto vienos eilutės „If“ teiginio sintaksė:
1 | Jei [test_expression], tada [action] |
Kad būtų lengviau skaityti, galite naudoti eilutės tęsinio simbolį (pabraukimą), kad išskleistumėte If teiginius į dvi eilutes (kaip tai padarėme aukščiau esančiame paveikslėlyje):
12 | Jei [test_expression], tada _[veiksmas] |
12 | Jei diapazonas ("a2"). Reikšmė> 0 Tada _Diapazonas ("b2"). Vertė = "teigiamas" |
Pabaiga Jei
Aukščiau pateiktas „vienos eilutės“ teiginys gerai veikia, kai bandote vieną sąlygą. Tačiau kai jūsų IF teiginiai tampa sudėtingesni esant kelioms sąlygoms, prie teiginio pabaigos turėsite pridėti „End If“:
123 | Jei diapazonas ("a2"). Reikšmė> 0 TadaDiapazonas ("b2"). Vertė = "teigiamas"Pabaiga Jei |
Čia yra sintaksė:
123 | Jei [test_expression] tada[veiksmas]Pabaiga Jei |
Pabaiga If reiškia teiginio if pabaigą.
Dabar pridėkime „ElseIF“:
ElseIF - kelios sąlygos
„ElseIf“ pridedamas prie esamo „If“ teiginio. Kitu atveju, jei tikrinama, ar įvykdyta sąlyga
TIK, jei nebuvo įvykdytos ankstesnės sąlygos.Ankstesniame pavyzdyje mes išbandėme, ar ląstelės vertė yra teigiama. Dabar mes taip pat išbandysime, ar langelio vertė yra neigiama naudojant „ElseIf“:
12345 | Jei diapazonas ("a2"). Reikšmė> 0 TadaDiapazonas ("b2"). Vertė = "teigiamas"ElseIf Range ("a2"). Reikšmė <0 TadaDiapazonas („b2“). Vertė = „Neigiamas“Pabaiga Jei |

Norėdami išbandyti kelias sąlygas, galite naudoti kelis „ElseIfs“:
1234567891011 | Antrinis If_Multiple_Conditions ()Jei diapazonas ("a2"). Reikšmė = "Katė" TadaDiapazonas ("b2"). Vertė = "Miau"ElseIf Range ("a2"). Reikšmė = "Šuo" TadaDiapazonas ("b2"). Vertė = "Woof"ElseIf Range ("a2"). Reikšmė = "Antis" TadaDiapazonas ("b2"). Vertė = "Quack"Pabaiga JeiPabaiga Sub |

Dabar pridėsime Kitas:
Kitas
The Kitas važiuos, jei nebuvo įvykdytos kitos ankstesnės sąlygos.
Mes baigsime savo pavyzdį naudodami kitą, norėdami nurodyti, kad jei langelio vertė nėra teigiama ar neigiama, ji turi būti lygi nuliui:
1234567 | Jei diapazonas ("a2"). Reikšmė> 0 TadaDiapazonas ("b2"). Vertė = "teigiamas"ElseIf Range ("a2"). Reikšmė <0 TadaDiapazonas („b2“). Vertė = „Neigiamas“KitasDiapazonas ("b2"). Vertė = "nulis"Pabaiga Jei |
Jei-kitaip
Dažniausias „If“ teiginio tipas yra paprastas „If-Else“:
1234567 | Sub If_Else ()Jei diapazonas ("a2"). Reikšmė> 0 TadaDiapazonas ("b2"). Vertė = "teigiamas"KitasDiapazonas ("b2"). Vertė = "Ne teigiamas"Pabaiga JeiPabaiga Sub |

Įdėti IF
Taip pat galite „įdėti“ teiginius vienas į kitą.
1234567891011 | Antrasis įdėtas_failas ()Jei diapazonas ("a2"). Reikšmė> 0 TadaDiapazonas ("b2"). Vertė = "teigiamas"KitasJei diapazonas ("a2"). Reikšmė <0 TadaDiapazonas („b2“). Vertė = „Neigiamas“KitasDiapazonas ("b2"). Vertė = "nulis"Pabaiga JeiPabaiga JeiPabaiga Sub |

IF - Arba, ir, Xor, ne
Toliau aptarsime loginius operatorius: Arba, ir, Xor, ne.
Aš už
The Arba operatoriaus bandymai, jei įvykdyta bent viena sąlyga.
Šis kodas patikrins, ar A2 diapazono vertė yra mažesnė nei 5000 ar didesnė nei 10 000:
123 | Jei diapazonas ("a2"). Reikšmė 10000 TadaDiapazonas ("b2"). Reikšmė = "Už diapazono ribų"Pabaiga Jei |

Į vieną eilutę galite įtraukti kelis Ors:
123 | Jei diapazonas („a2“). Reikšmė 10000 arba diapazonas („a2“). Vertė = 9999 TadaDiapazonas ("b2"). Vertė = "Už diapazono ribų"Pabaiga Jei |
Jei ketinate naudoti kelis Ors, kad būtų lengviau skaityti kodą, rekomenduojama naudoti eilutės tęsinio simbolį:
123456 | Jei diapazonas („a2“). Reikšmė <5000 arba _Diapazonas („a2“). Vertė> 10000 arba _Diapazonas („a2“). Vertė = 9999 TadaDiapazonas ("b2"). Vertė = "Už diapazono ribų"Pabaiga Jei |

Jei ir
Operatorius „And“ leidžia patikrinti, ar VISOS sąlygos įvykdytos.
123 | Jei diapazonas ("a2"). Vertė> = 5000 Ir diapazonas ("a2"). Reikšmė <= 10000 TadaDiapazonas ("b2"). Vertė = "diapazone"Pabaiga Jei |

Jei Xor
„Xor“ operatorius leidžia patikrinti, ar įvykdyta tiksliai viena sąlyga. Jei įvykdomos nulinės sąlygos, Xor grąžins FALSE, jei bus įvykdytos dvi ar daugiau sąlygų, Xor taip pat pateiks klaidingą.
Aš retai mačiau „Xor“, naudojamą programuojant VBA.
Jei ne
Ne operatorius naudojamas konvertuoti FALSE į TRUE arba TRUE į FALSE:
123 | IF_Ne ()„MsgBox“ ne (tiesa)Pabaiga Sub |
Atkreipkite dėmesį, kad operatorius „Not“, norėdamas perjungti, reikalauja skliaustelių, esančių aplink išraišką.
Ne operatorius taip pat gali būti taikomas teiginiams:
123 | Jei ne (Diapazonas („a2“). Vertė> = 5000 Ir diapazonas („a2“). Reikšmė <= 10000) TadaDiapazonas ("b2"). Vertė = "Už diapazono ribų"Pabaiga Jei |

Jei palyginimai
Lygindami paprastai naudosite vieną iš palyginimo operatorių:
Palyginimo operatorius | Paaiškinimas |
= | Lygus |
| Nelygu |
> | Geresnis negu |
>= | Didesnis ar lygus |
< | Mažiau nei |
<= | Mažiau arba lygu |
Tačiau taip pat galite naudoti bet kokią išraišką arba funkcija todėl rezultatas yra TIKRA arba NETIESA
Jei - loginė funkcija
Kurdami „If Statements“ išraiškas, taip pat galite naudoti bet kokią funkciją, kuri generuoja TRUE arba False. VBA turi keletą šių funkcijų:
Funkcija | apibūdinimas |
IsDate | Pateikia TRUE, jei išraiška yra tinkama data |
Yra tuščias | Patikrinkite, ar nėra tuščių langelių ar neapibrėžtų kintamųjų |
IsError | Patikrinkite klaidų vertes |
IsNull | Patikrinkite NULL reikšmę |
IsNumeric | Patikrinkite skaitinę vertę |
Juos galima pavadinti taip:
1 | Jei „IsEmpty“ (diapazonas („A1“). Reikšmė), tada „MsgBox“ langelis tuščias |
„Excel“ taip pat turi daug papildomų funkcijų, kurias galima iškviesti naudojant „WorksheetFunction“. Štai „Excel IsText“ funkcijos pavyzdys:
12 | Jei Application.WorksheetFunction.IsText (Diapazonas ("a2"). Reikšmė) Tada _„MsgBox“ „Langelis yra tekstas“ |
Taip pat galite sukurti savo vartotojo nustatytas funkcijas (UDF). Žemiau sukursime paprastą loginę funkciją, kuri grąžins TRUE. Tada šią funkciją vadinsime savo teiginyje:
1234567891011 | Antrinė If_Function ()Jei „TrueFunction“ tada„MsgBox“ tiesaPabaiga JeiPabaiga SubFunkcija TrueFunction () Kaip loginisTrueFunction = tiesaPabaigos funkcija |

Teksto palyginimas
Taip pat galite palyginti tekstą, panašų į skaičių palyginimą:
Lygindami tekstą, turite atkreipti dėmesį į „bylą“ (viršutinę arba apatinę). Pagal numatytuosius nustatymus VBA raides su skirtingomis raidėmis laiko neatitinkančiomis. Kitaip tariant, „A“ „a“.Jei norite, kad VBA nekreiptų dėmesio į didžiąsias ir mažąsias raides, modulio viršuje turite pridėti parinktį Palyginti tekstą:
1 | Parinktis Lyginti tekstą |
Padarę tą deklaraciją „A“ = „a“:
12345 | Parinktis Lyginti tekstąAntrinis If_Text ()MsgBox "a" = "A"Pabaiga Sub |
VBA jei patinka
„VBA Like Operator“ leidžia netiksliai palyginti tekstą. Jei norite sužinoti daugiau, spustelėkite nuorodą „Patinka operatoriui“, tačiau žemiau parodysime pagrindinį pavyzdį:
12345678 | Pritemdyti pavadinimą kaip eilutėstrName = "Ponas Čarlzas"Jei strName Kaip „Ponas*“, tada„MsgBox“ tiesaKitas„MsgBox“ „Netiesa“Pabaiga Jei |
Čia mes naudojame žvaigždutę „*“. * Reiškia bet kokį simbolių skaičių. Taigi aukščiau pateiktas If teiginys grąžins TIESA. „Like“ operatorius yra nepaprastai galingas, tačiau dažnai nepakankamai naudojamas įrankis tekstui tvarkyti.
Jei kilpos
„VBA Loops“ leidžia kartoti veiksmus. IF-ELSE derinimas su kilpomis yra puikus būdas greitai apdoroti daugelį skaičiavimų.
Tęsdami teigiamą / neigiamą pavyzdį, pridėsime už kiekvieną kilpą, kad pervestume įvairius langelius:
1234567891011121314 | Antrinis If_Loop ()„Dim Cell“ kaip diapazonasKiekvienai diapazono langeliui ("A2: A6")Jei langelis.Vertė> 0 TadaLangelis.Poilsis (0, 1) .Vertybė = "Teigiamas"ElseIf Cell.Value <0 TadaLangelis.Poilsis (0, 1) .Vertybė = "Neigiamas"KitasLangelis.Poilsis (0, 1) .Vertybė = "Nulis"Pabaiga JeiKitas langelisPabaiga Sub |
Jei kiti pavyzdžiai
Dabar apžvelgsime keletą konkretesnių pavyzdžių.
Patikrinkite, ar langelis tuščias
Šis kodas patikrins, ar langelis tuščias. Jei jis tuščias, langelis bus ignoruojamas. Jei jis nėra tuščias, jis išves ląstelės vertę į dešinę:
1234567 | Antrinis If_Cell_Empty ()Jei diapazonas ("a2"). Reikšmė "" TadaDiapazonas („b2“). Vertė = diapazonas („a2“). VertėPabaiga JeiPabaiga Sub |
Patikrinkite, ar langelyje yra konkretaus teksto
Instr funkcija patikrina, ar teksto eilutė randama kitoje eilutėje. Naudokite jį su teiginiu If, kad patikrintumėte, ar langelyje yra konkretaus teksto:
123 | Jei Instr (Diapazonas ("A2"). Vertė, "tekstas")> 0 Tada„Msgbox“ rastas tekstasPabaiga Jei |
Patikrinkite, ar langelyje yra teksto
Šis kodas patikrins, ar langelis yra tekstas:
1234567 | Antrinis If_Cell_Is_Text ()Jei Application.WorksheetFunction.IsText (Diapazonas ("a2"). Reikšmė) Tada„MsgBox“ „Langelis yra tekstas“Pabaiga JeiPabaiga Sub |
Jei eisi
„If“ teiginio rezultatą galite naudoti kitam kodo skyriui „Eiti“.
12345678910 | Sub IfGoTo ()Jei IsError (Cell.value) TadaEik SkipPabaiga Jei'Kažkoks kodasPraleisti:Pabaiga Sub |
Ištrinkite eilutę, jei langelis tuščias
Naudodami „Ifs“ ir „loop“ galite patikrinti, ar langelis tuščias, ir jei taip, ištrinkite visą eilutę.
123456789 | Sub DeleteRowIfCellBlank ()„Dim Cell“ kaip diapazonasKiekvienai diapazono langeliui ("A2: A10")Jei Cell.Value = "" Tada Cell.EntireRow.DeleteKitas langelisPabaiga Sub |
Jei „MessageBox“ Taip / Ne
Naudodami VBA pranešimų dėžutes galite paprašyti vartotojo pasirinkti iš kelių parinkčių. Pranešimų laukelyje Taip / Ne prašoma vartotojo pasirinkti Taip arba Ne. Prie procedūros galite pridėti Taip / Ne pranešimų laukelį ir paklausti vartotojo, ar jis nori tęsti procedūrą, ar ne. Naudotojo įvestį tvarkote naudodami teiginį „If“.Praktikoje yra „Taip/Ne“ pranešimų laukelis:
123456789101112 | Sub MsgBoxVariable ()Neryškus atsakymas kaip sveikasis skaičiusanswer = MsgBox ("Ar norite tęsti?", vbQuestion + vbYesNe)Jei atsakymas = vbTaip tada„MsgBox“ „Taip“Kitas„MsgBox“ „Ne“Pabaiga JeiPabaiga Sub |
VBA „If“, „ElseIf“, „Access VBA“
„If“, „ElseIf“ ir „Else“ funkcijos „Access VBA“ veikia lygiai taip pat, kaip „Excel VBA“.
Jei norite patikrinti, ar įrašų rinkinyje yra įrašų, galite naudoti teiginį „If“.
