Jei tada kitas teiginys „Excel VBA“ (paaiškinta pavyzdžiais)

„Excel VBA“ IF IF Else teiginys leidžia patikrinti būklę ir atitinkamai atlikti veiksmą.

Tai labai vertinga daugeliu atvejų, kaip pamatysime pavyzdžiuose vėliau šioje pamokoje.

Jei norite pateikti paprastą pavyzdį, tarkime, kad turite „Excel“ pažymių sąrašą ir norite paryškinti visus tuos studentus, kurie surinko A. an, jūs jį paryškinsite, o jei ne, paliksite jį tokį, koks yra.

Tą pačią logiką galima sukurti VBA naudojant Jei tada kitaip teiginį (ir, žinoma, nuveikti daug daugiau, nei tik pažymius pažymėti).

Šioje pamokoje aš jums parodysiu įvairius būdus, kaip „If then Else“ konstrukciją galima naudoti „Excel VBA“, ir keletą praktinių pavyzdžių.

Bet prieš pradėdamas gilintis į specifiką, leiskite man pateikti teiginio „IF then Elta“ sintaksę.

Jei jus domina lengvas VBA mokymasis, patikrinkite mano Internetinis „Excel VBA“ mokymas.

Sintaksė - JEI tada kita

Žemiau pateikiama bendra „If Then Else“ konstrukcijos sintaksė VBA

IF sąlyga Tada true_code [Else false_code]

Arba

IF sąlyga Tada true_code Kitu false_code End IF

Atminkite, kad kita šio teiginio dalis yra neprivaloma.

Dabar, jei jums įdomu, kuo skiriasi dvi sintaksės, leiskite man paaiškinti.

Pirmoji sintaksė yra paprastas vienos eilutės IF THEN ELSE sakinys, kuriame jums nereikia naudoti END IF sakinio.

Tačiau antroje sintaksėje true_code dalis yra antroje eilutėje. Tai naudinga, kai kodas, kurį turite paleisti, jei IF sąlyga yra teisinga, yra ilgas ir susideda iš kelių eilučių.

Padaliję IF sakinį į kelias eilutes, turite pasakyti VBA, kur baigiasi IF Tada konstrukcija.

Todėl turite naudoti End IF sakinį.

Jei prireikus nenaudosite „End IF“, VBA parodys klaidą - „Blokuoti IF be pabaigos“

IF IF teiginio naudojimo pavyzdžiai VBA

Kad suprastumėte, kaip IF-THEN teiginys veikia VBA, leiskite man pradėti nuo kelių pagrindinių pavyzdžių (kai kurie praktiniai ir naudingesni pavyzdžiai bus aptarti vėliau šiame vadove).

Tarkime, kad A1 langelyje yra studento balas ir norite patikrinti, ar mokinys išlaikė egzaminą, ar ne (išlaikius 35 balus).

Tada galite naudoti šį kodą:

Sub CheckScore () If Range ("A1"). Value> = 35 Tada MsgBox "Pass" End Sub

Aukščiau pateiktas kodas turi vieną IF sakinio eilutę, kuri tikrina A1 langelio vertę.

Jei daugiau nei 35, tai rodo pranešimą - „Pass“.

Jei mažiau nei 35, nieko neįvyksta.

Bet ką daryti, jei abiem atvejais norite parodyti pranešimą, nesvarbu, ar studentas išlaikė, ar neišlaikė egzamino.

Žemiau pateiktas kodas tai padarys:

Sub CheckScore () If Range ("A1"). Value> = 35 Tada MsgBox "Pass" Kita MsgBox "Fail" End If End Sub

Aukščiau pateiktas kodas naudoja IF ir ELSE sakinį dviem skirtingoms sąlygoms įvykdyti. Kai balas yra didesnis (arba lygus) 35, IF sąlyga yra teisinga, o kodas po juo bus įvykdytas (viskas prieš Else teiginį).

Bet kai IF sąlyga FALSE, kodas peršoka į kitą dalį ir vykdo joje kodo bloką.

Atminkite, kad kai naudojame vieną IF IF tada eilutės eilutę, mums nereikia naudoti End IF. Bet kai padalijame jį į daugiau nei vieną eilutę, turime naudoti teiginį „End If“.

Įdėtas IF tada (keli IF tada teiginiai)

Iki šiol mes naudojome vieną IF IF teiginį.

Jei turite patikrinti kelias sąlygas, galite naudoti:

  • Kelios IF sąlygos
  • Jei tada kitas teiginys
  • IF Tada ElseIf Else statyti

Leiskite parodyti, kuo jie skiriasi ir kaip tai naudoti „Excel VBA“.

Keli IF tada teiginiai

Paimkime tą patį studento balo panaudojimo pavyzdį.

Jei mokinio rezultatas yra mažesnis nei 35, rodomas pranešimas yra „Nepavyko“, o jei rezultatas yra didesnis arba lygus 35, rodomas pranešimas yra „Leidimas“.

Norėdami tai padaryti, galime naudoti žemiau esantį kodą:

Sub CheckScore () If Range ("A1"). Value = 35 Tada MsgBox "Pass" End Sub

Galite naudoti kelis teiginius IF Tada, kaip parodyta aukščiau. Nors tai veikia, tai nėra gero kodavimo pavyzdys (kaip pamatysite žemiau pateiktas alternatyvas).

Jei nuspręsite tai naudoti, atminkite, kad šie teiginiai turėtų būti nepriklausomi arba vienas kitą paneigiantys. Čia svarbu žinoti, kad aukščiau pateiktoje konstrukcijoje įvertinami visi IF teiginiai, o tie, kuriuose sąlyga yra teisinga, kodas yra vykdomas.

Taigi net jei pirmasis IF teiginys yra teisingas, antrasis vis tiek bus įvertintas.

Jei tada kitas pareiškimas

Tarkime, šį kartą vietoj to, kad būtų rodomas pranešimas „Pass/Fail“, turime dar vieną sąlygą.

Jei mokinio rezultatas yra mažesnis nei 35, rodomas pranešimas yra „Nepavyko“, jei rezultatas yra didesnis arba lygus 35, rodomas pranešimas yra „Leidžiamas“, o jei rezultatas didesnis nei 80, rodomas pranešimas yra „Pass, with Distinction“.

Norėdami tai padaryti, galime naudoti žemiau esantį kodą:

Sub CheckScore () If Range ("A1"). Reikšmė <35 Tada MsgBox "Fail" Else If Range ("A1"). Reikšmė <80 Tada MsgBox "Pass" Else MsgBox "Pass, su skirtumu" End if End if End " Sub

Pirmiau pateiktame kode naudojome kelis IF teiginius (įdėtus IF Tada), padedant Else.

Taigi konstrukte „IF Tada Else“ yra „IF Tada Else“ konstrukcija. Šio tipo lizdavimas leidžia patikrinti kelias sąlygas ir paleisti atitinkamą kodo bloką.

IF If ElseIf Else pareiškimas

Pirmiau pateiktą kodą (kurį matėme ankstesniame skyriuje) galima toliau optimizuoti naudojant „ElseIf“ teiginį.

Štai ką mes stengiamės padaryti - jei mokinio rezultatas yra mažesnis nei 35, rodomas pranešimas yra „Nepavyko“, jei rezultatas yra didesnis arba lygus 35, rodomas pranešimas yra „Išlaikyti“, o jei balas yra didesnis nei 80, rodomas pranešimas „Pass, with Distinction“.

Sub CheckScore () If Range ("A1"). Reikšmė <35 Tada MsgBox "Fail" ElseIf Range ("A1"). Reikšmė <80 Tada MsgBox "Pass" Else MsgBox "Pass, su skirtumu" End If End Sub

Aukščiau pateiktas kodas naudoja „ElseIf“, kuris leidžia mums išlaikyti visas sąlygas viename IF Tada teiginyje.

Naudojant IR ir ARBA, jei tada - kitaip

Iki šiol šioje pamokoje vienu metu patikrinome tik vieną sąlygą.

Tačiau, kai turite kelias priklausomas sąlygas, galite naudoti teiginį AND arba OR su IF sąlygomis.

Žemiau pateikiama sąlyga AND/OR naudojant IF IF teiginį.

IF Sąlyga1 IR Sąlyga2 Tada true_code Kitu false_code End IF

Pirmiau pateiktame kode tik tada, kai įvykdomos tiek 1 sąlyga, tiek 2 sąlyga, vykdomas true_code. Net jei viena iš sąlygų yra klaidinga, ji vykdys klaidingą kodą.

Naudojant OR, net jei viena iš sąlygų yra teisinga, ji vykdys true_code. Tik tada, kai visos sąlygos yra klaidingos, ji vykdo klaidingą kodą.

Dabar pažiūrėkime, kaip teiginys IR ir ARBA veikia su IF IF Else konstrukcija.

Tarkime, kad turite ne vieno, o dviejų dalykų balus ir norite patikrinti, ar nėra šių sąlygų:

  • Nepavyko - Kai bet kurio dalyko rezultatas yra mažesnis nei 35.
  • Praeiti - Kai rezultatas yra didesnis arba lygus 35, bet mažesnis nei 80 abiejų tiriamųjų.
  • Praeiti, su išskirtinumu - Kai abiejų tiriamųjų balas yra didesnis nei 35 ir viename ar abiejuose dalykuose yra didesnis arba lygus 80.

Čia yra kodas, kuris tai padarys:

Sub CheckScore () Jei diapazonas ("A1"). Reikšmė <35 arba Diapazonas ("B1"). Reikšmė <35 Tada "MsgBox" Fail "ElseIf Range (" A1 "). Reikšmė <80 Ir diapazonas (" B1 "). Reikšmė <80 Tada „MsgBox“ „Pass“ Kitas „MsgBox“ leidimas su išskirtiniu „End If End“

Aukščiau pateiktame kode naudojami ir OR, ir AND teiginiai.

Tą patį kodą taip pat galite parašyti šiek tiek pakeisdami (vietoj AND naudokite OR).

Antrasis patikrinimo rezultatas () Jei diapazonas („A1“). Reikšmė <35 arba diapazonas („B1“). Reikšmė 80 arba diapazonas („B1“). Reikšmė> 80 Tada „MsgBox“ leidimas, pasižymintis skirtumu „Kitas„ MsgBox “leidimas“ Jei pabaiga Sub

Abu aukščiau nurodyti VBA kodai duos tą patį rezultatą. Asmeniškai man labiau patinka pirmasis, nes jame logiškai tikrinami balai (bet tai tik aš).

Naudojant „Nelygu“ naudojant „Jei tada“

Visuose aukščiau pateiktuose pavyzdžiuose mes naudojome sąlygas, kurios patikrina, ar reikšmė yra lygi nurodytai vertei, ar ne.

Panašius kodus taip pat galite naudoti tikrindami, kai reikšmė nėra lygi nurodytai VBA kodo reikšmei. Nelygu Excel VBA.

Norėdami pamatyti praktinį naudojimo pavyzdį, pažvelkite į 1 pavyzdį.

„If If Else“ naudojimas su kilpomis VBA

Iki šiol mes peržiūrėjome keletą pavyzdžių, kurie yra naudingi norint suprasti, kaip teiginiai „IF-THEN“ veikia VBA, tačiau nėra naudingi praktiniame pasaulyje.

Jei man reikia klasifikuoti mokinius, tai galiu lengvai padaryti naudodamas „Excel“ funkcijas.

Taigi, pažvelkime į keletą naudingų ir praktinių pavyzdžių, kurie gali padėti automatizuoti kai kuriuos dalykus ir būti efektyvesni.

1 pavyzdys. Išsaugokite ir uždarykite visas darbaknyges, išskyrus aktyviąją

Jei atidarote daug darbaknygių ir norite greitai uždaryti visas, išskyrus aktyviąją, galite naudoti žemiau esantį kodą,

Sub SaveCloseAllWorkbooks () Dim wb kaip darbaknygė kiekvienai wb darbaknygėms Įvyko klaida atnaujinti toliau Jei wb.Name ActiveWorkbook.Name Tada wb.Save wb. Uždaryti pabaigą, jei kitas wb End Sub

Aukščiau pateiktas kodas išsaugotų ir uždarytų visas darbaknyges (išskyrus aktyviąją).

Ji naudoja ciklą „Kitas“, kad peržiūrėtų visų atidarytų darbaknygių rinkinį ir patikrintų pavadinimą naudodami IF sąlygą.

Jei pavadinimas nesutampa su aktyvios darbaknygės pavadinimu, jis išsaugomas ir uždaromas.

Jei bet kurioje darbaknygėje yra VBA kodas ir neišsaugojote jo kaip .xls arba .xlsm, pamatysite įspėjimą (nes vba kodai prarandami jį išsaugojus .xlsx formatu).

2 pavyzdys - paryškinkite langelius su neigiamomis vertėmis

Tarkime, kad turite stulpelį, pilną skaičių ir norite greitai paryškinti visas ląsteles su neigiamomis reikšmėmis raudonai, tai galite padaryti naudodami žemiau esantį kodą.

Sub HighlightNegativeCells () Dim Cll kaip diapazonas kiekvienam pasirinktam Cll, jei Cll.Value <0 Tada Cll.Interior.Color = vbRed Cll.Font.Color = vbWhite End if Next Cll End Sub

Aukščiau pateiktas kodas naudoja ciklą „Už kiekvieną“ ir patikrina kiekvieną pasirinkto langelį. Jei langelio reikšmė yra neigiama, ji paryškinta raudonai su balta šrifto spalva.

3 pavyzdys - Slėpti visus darbalapius, išskyrus esamą darbalapį

Jei norite greitai paslėpti visus darbalapius, išskyrus aktyvųjį, galite naudoti žemiau esantį kodą:

Sub HideAllExceptActiveSheet () Dim ws kaip darbalapis kiekvienam šio darbo knygos ws. Darbo lapai Jei ws.Name ActiveSheet.Name Tada ws.Visible = xlSheetHidden Next ws End Sub

Aukščiau pateiktas kodas naudoja už kiekvieną kilpą, kad peržiūrėtų darbalapių rinkinį. Jis patikrina kiekvieno darbalapio pavadinimą ir jį paslepia, jei tai nėra aktyvus darbalapis.

4 pavyzdys. Ištraukite skaitinę dalį iš raidinės ir skaitmeninės eilutės

Jei ląstelėse yra raidžių ir skaitmenų eilutės ir norite iš jų išgauti skaitinę dalį, galite tai padaryti naudodami žemiau esantį kodą:

Funkcija „GetNumeric“ („CellRef“ kaip eilutė) „Dim String“ GetNumeric = Rezultato pabaigos funkcija

Šis kodas sukurs pasirinktinę „Excel“ funkciją, kurią galima naudoti darbalapyje (kaip ir įprastą funkciją).

Kur įdėti VBA kodą?

Įdomu, kur „Excel“ darbaknygėje patenka VBA kodas?

„Excel“ turi VBA vidinę programą, vadinamą VB redaktoriumi. Turite nukopijuoti ir įklijuoti kodą „VB Editor“ modulio kodo lange.

Štai žingsniai, kaip tai padaryti:

  1. Eikite į skirtuką Kūrėjas.
  2. Spustelėkite „Visual Basic“ parinktį. Tai atidarys VB redaktorių užpakalinėje sistemoje.
  3. VB redaktoriaus „Project Explorer“ srityje dešiniuoju pelės mygtuku spustelėkite bet kurį darbaknygės objektą, į kurį norite įterpti kodą. Jei nematote „Project Explorer“, eikite į skirtuką „View“ ir spustelėkite „Project Explorer“.
  4. Eikite į „Įterpti“ ir spustelėkite „Modulis“. Tai įterps jūsų darbo knygos modulio objektą.
  5. Nukopijuokite ir įklijuokite kodą modulio lange.

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

wave wave wave wave wave