VBA If, ElseIf, Else (galutinis If teiginių vadovas)

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ą:
1 Pranešimas „a“ = „b“
1 Msgbox "a" = "a"
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“.

Padėsite svetainės plėtrą, dalintis puslapį su draugais

wave wave wave wave wave