Jos sitten muu ilmoitus Excel VBA: ssa (selitetty esimerkeillä)

Excel VBA: ssa IF IF Else -lausekkeen avulla voit tarkistaa ehdon ja suorittaa toiminnon sen mukaisesti.

Tämä on erittäin arvokasta monissa tilanteissa, kuten näemme esimerkeissä myöhemmin tässä opetusohjelmassa.

Jos haluat antaa sinulle yksinkertaisen esimerkin, olettaa, että sinulla on Excelin arvosanaluettelo ja haluat korostaa kaikki ne opiskelijat, jotka ovat saaneet pisteen A. Nyt, jos pyydän sinua tekemään tämän manuaalisesti, tarkistat jokaisen oppilaan arvosanan ja A, korostat sen, ja jos ei ole, jätät sen sellaisenaan.

Sama logiikka voidaan rakentaa VBA: han käyttämällä Jos sitten Muu myös lausunto (ja tietysti paljon enemmän kuin vain arvosanojen korostaminen).

Tässä opetusohjelmassa näytän sinulle erilaisia ​​tapoja käyttää "Jos sitten muuta" -rakennetta Excel VBA: ssa ja joitakin käytännön esimerkkejä toiminnassa.

Mutta ennen kuin ryhdyn yksityiskohtiin, annan teille "JOS sitten muut" -lausekkeen syntaksin.

Jos olet kiinnostunut VBA: n oppimisesta helpolla tavalla, tutustu minun Online Excel VBA -koulutus.

Syntaksi - JOS sitten muuta

Alla on VBA: n If Then Else -konstruktin yleinen syntaksi

IF -ehto Sitten true_code [Else false_code]

Tai

IF -ehto Sitten true_code Muu false_code End IF

Huomaa, että tämän lausunnon muu osa on valinnainen.

Jos nyt mietit, mikä on näiden kahden syntaksin ero, anna minun selventää.

Ensimmäinen syntaksi on yksinkertainen yksirivinen IF THEN ELSE -lauseke, jossa sinun ei tarvitse käyttää END IF -lausetta.

Kuitenkin toisessa syntaksissa tosi_koodi -osa on toisella rivillä. Tästä on hyötyä, jos koodi, joka on suoritettava, jos IF -ehto on tosi, on pitkä ja koostuu useista riveistä.

Kun jaat IF -käskyn useille riveille, sinun on kerrottava VBA: lle, missä IF Sitten -rakenne päättyy.

Siksi sinun on käytettävä End IF -lausetta.

Jos et käytä End IF: tä tarvittaessa, VBA näyttää virheen - "Estä IF ilman END IF"

Esimerkkejä IF ​​Sitten -lausekkeen käytöstä VBA: ssa

Antaakseni sinulle käsityksen siitä, miten IF-THEN-lause toimii VBA: ssa, aloitan muutamalla perusesimerkillä (joitain käytännöllisiä ja hyödyllisempiä esimerkkejä käsitellään myöhemmin tässä opetusohjelmassa).

Oletetaan, että sinulla on oppilaan pisteet solussa A1 ja haluat tarkistaa, onko opiskelija läpäissyt kokeen vai ei (hyväksyttyjen arvojen kynnys on 35).

Sitten voit käyttää seuraavaa koodia:

Sub CheckScore () If Range ("A1"). Arvo> = 35 Sitten MsgBox "Pass" End Sub

Yllä olevassa koodissa on yksi IF -lauseen rivi, joka tarkistaa arvon solussa A1.

Jos se on yli 35, se näyttää viestin "Pass".

Jos se on alle 35, mitään ei tapahdu.

Mutta entä jos haluat näyttää viestin molemmissa tapauksissa, onko opiskelija läpäissyt kokeen vai epäonnistunut siinä.

Alla oleva koodi toimisi näin:

Sub CheckScore () If Range ("A1"). Arvo> = 35 Sitten MsgBox "Pass" Muu MsgBox "Fail" End If End Sub

Yllä oleva koodi käyttää IF: tä ja ELSE -lauseketta kahden eri ehdon suorittamiseen. Kun pisteet ovat yli (tai yhtä suuret) 35, IF -ehto on tosi ja sen alapuolella oleva koodi suoritetaan (kaikki ennen Else -lauseketta).

Mutta jos IF -ehto on EPÄTOSI, koodi hyppää Else -osaan ja suorittaa koodilohkon siinä.

Huomaa, että kun käytämme yhtä IF Sitten -lausekkeen riviä, meidän ei tarvitse käyttää End IF: tä. Mutta kun jaamme sen useammalle riville, meidän on käytettävä End If -lausetta.

Sisällytetty IF sitten (Useita IF sitten -lausekkeita)

Tähän mennessä olemme käyttäneet yhtä IF Then -lausetta.

Jos sinulla on useita tarkistettavia ehtoja, voit käyttää:

  • Useita IF -ehtoja
  • Jos sitten muu lausunto
  • JOS Sitten ElseIf Else rakentaa

Haluan näyttää, miten nämä eroavat toisistaan ​​ja miten sitä käytetään Excel VBA: ssa.

Useita IF sitten lausuntoja

Otetaan sama esimerkki opiskelijan pisteiden käytöstä.

Jos oppilas saa alle 35 pistettä, näytettävä viesti on "Epäonnistunut", jos pisteet ovat yli tai yhtä suuret kuin 35, näytettävä viesti on "Hyväksytty".

Voimme käyttää alla olevaa koodia tämän tekemiseen:

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

Voit käyttää useita IF Sitten -lausekkeita yllä kuvatulla tavalla. Vaikka tämä toimii, se ei ole esimerkki hyvästä koodauksesta (kuten näet vaihtoehdot alla).

Jos päätät käyttää tätä, muista, että näiden lausuntojen on oltava joko riippumattomia tai toisiaan poissulkevia. Tässä on tärkeä tietää, että yllä olevassa rakenteessa kaikki IF -käskyt arvioidaan ja ne, joissa ehto on tosi, koodi suoritetaan.

Joten vaikka ensimmäinen IF -lause olisi oikea, toista arvioitiin silti.

JOS sitten muu ilmoitus

Oletetaan, että tällä kertaa sen sijaan, että näyttäisimme vain viestin Pass/Fail, meillä on yksi ehto.

Jos oppilas saa alle 35 pistettä, näytettävä viesti on 'Epäonnistunut', jos pisteet ovat yli tai yhtä suuret kuin 35, näytettävä viesti on 'Hyväksytty' ja jos tulos on yli 80, näytettävä viesti on 'Pass, with Distinction'.

Voimme käyttää alla olevaa koodia tämän tekemiseen:

Sub CheckScore () If Range ("A1"). Arvo <35 Sitten MsgBox "Fail" Else If Range ("A1"). Value <80 Sitten MsgBox "Pass" Else MsgBox "Pass, with erotus" End If End if End Sub

Yllä olevassa koodissa olemme käyttäneet useita IF -lausekkeita (sisäkkäisiä IF sitten) Elsen avulla.

Joten "IF sitten muu" -rakenne sisältää "IF sitten muu" -rakenteen. Tämän tyyppisen sisäkkäisyyden avulla voit tarkistaa useita ehtoja ja suorittaa asianmukaisen koodilohkon.

JOS sitten muu ilmoitus

Yllä olevaa koodia (jonka näimme edellisessä osassa) voidaan edelleen optimoida käyttämällä ElseIf -lauseketta.

Tässä on se, mitä yritämme tehdä - Jos oppilas saa alle 35 pistettä, näytettävä viesti on 'Epäonnistunut', jos pisteet ovat yli tai yhtä suuret kuin 35, näytettävä viesti on 'Hyväksytty' ja jos pisteet ovat yli 80, näytettävä viesti on 'Pass, with Distinction'.

Sub CheckScore () If Range ("A1"). Arvo <35 Sitten MsgBox "Fail" ElseIf Range ("A1"). Arvo <80 Sitten MsgBox "Pass" Else MsgBox "Pass, erottamalla" End If End Sub

Yllä oleva koodi käyttää ElseIf -järjestelmää, jonka avulla voimme pitää kaikki ehdot yhdessä IF Then -lausekkeessa.

AND- ja OR -toimintojen käyttö, jos sitten muu

Toistaiseksi tässä opetusohjelmassa olemme tarkistaneet vain yhden ehdon kerrallaan.

Jos sinulla on kuitenkin useita riippuvaisia ​​ehtoja, voit käyttää AND- tai OR -lauseketta IF -ehtojen kanssa.

Alla on syntaksi AND/OR -ehdon käyttämisestä IF Then -lausekkeen kanssa.

IF Ehto 1 JA Ehto 2 Sitten true_code Muu false_code End IF

Yllä olevassa koodissa true_code suoritetaan vain, kun sekä ehto 1 että ehto 2 täyttyvät. Vaikka jokin ehdoista olisi epätosi, se suorittaa false_code.

TAI -toiminnolla, vaikka jokin ehdoista täyttyisi, se suorittaa true_code -koodin. Vain kun kaikki ehdot ovat vääriä, se suorittaa false_code -koodin.

Katsotaan nyt, kuinka AND- ja OR -lause toimivat IF then Else -rakenteen kanssa.

Oletetaan, että sinulla on kahden kohteen tulokset yhden sijasta ja haluat tarkistaa seuraavat ehdot:

  • Epäonnistua - Jos pisteet ovat alle 35 missä tahansa tutkimuksessa.
  • Kulkea - Kun pisteet ovat yli tai yhtä suuret kuin 35, mutta alle 80 molemmissa aiheissa.
  • Pass, erottelukykyinen - Jos pisteet ovat yli 35 molemmissa aiheissa ja yli tai yhtä suuret 80 yhdessä tai molemmissa aiheissa.

Tässä on koodi, joka tekee tämän:

Sub CheckScore () If Range ("A1"). Value <35 or Range ("B1"). Value <35 Sitten MsgBox "Fail" ElseIf Range ("A1"). Value <80 And Range ("B1"). Arvo <80 Sitten MsgBox "Pass" Muu MsgBox "Pass, erottuva" End If End Sub

Yllä oleva koodi käyttää sekä OR- että AND -lauseita.

Voit myös kirjoittaa saman koodin pienellä muutoksella (käyttämällä TAI AND: n sijaan).

Sub CheckScore () If Range ("A1"). Arvo <35 Or Range ("B1"). Value 80 Or Range ("B1"). Value> 80 Sitten MsgBox "Pass, with differenting" Else MsgBox "Pass" End Jos Lopeta Sub

Molemmat yllä olevat VBA -koodit antavat sinulle saman tuloksen. Henkilökohtaisesti pidän parempana ensimmäistä, koska siinä on looginen pisteiden tarkistaminen (mutta se on vain minä).

Käyttämällä Ei yhtä kuin kohdassa Jos sitten

Kaikissa yllä olevissa esimerkeissä olemme käyttäneet ehtoja, jotka tarkistavat, onko arvo sama kuin tietty arvo.

Voit myös käyttää samanlaisia ​​koodeja tarkistettaessa, kun arvo ei ole sama kuin VBA -koodin määritetty arvo. Ei sama kuin Excel VBA.

Jos haluat nähdä käytännön esimerkin käytöstä, katso alla olevaa esimerkkiä 1.

Jos sitten muu, käyttäminen silmukoiden kanssa VBA: ssa

Toistaiseksi olemme käyneet läpi esimerkkejä, joista on hyvä ymmärtää, miten IF-THEN-lausunnot toimivat VBA: ssa, mutta niistä ei ole hyötyä käytännön maailmassa.

Jos minun on arvioitava oppilaita, voin tehdä sen helposti Excel -toimintojen avulla.

Katsotaanpa siis joitain hyödyllisiä ja käytännöllisiä esimerkkejä, joiden avulla voit automatisoida joitakin asioita ja olla tehokkaampia.

Esimerkki 1 - Tallenna ja sulje kaikki työkirjat paitsi aktiivinen työkirja

Jos sinulla on paljon työkirjoja auki ja haluat nopeasti sulkea kaikki, paitsi aktiivisen työkirjan, voit käyttää alla olevaa koodia,

Sub SaveCloseAllWorkbooks () Dim wb kuin työkirja jokaiselle wb: lle työkirjoissa Virhe jatkuu seuraavaksi Jos wb.nimi ActiveWorkbook.Name Sitten wb.Save wb.Sulje loppu, jos seuraava wb End Sub

Yllä oleva koodi tallentaa ja sulkee kaikki työkirjat (paitsi aktiivisen).

Se käyttää For Next -silmukkaa käydäkseen läpi kaikki avoimet työkirjat ja tarkistaa nimen IF -ehdon avulla.

Jos nimi ei ole sama kuin aktiivisen työkirjan nimi, se tallentaa ja sulkee sen.

Jos jossakin työkirjassa on VBA -koodi etkä ole tallentanut sitä .xls- tai .xlsm -muodossa, näet varoituksen (koska vba -koodit menetetään, kun tallennat sen .xlsx -muodossa).

Esimerkki 2 - Korosta solut negatiivisilla arvoilla

Oletetaan, että sinulla on sarake täynnä numeroita ja haluat nopeasti korostaa kaikki solut negatiivisilla arvoilla punaisella, voit tehdä sen käyttämällä alla olevaa koodia.

Sub HighlightNegativeCells () Dim Cll as Range for each Cll in Selection If Cll.Value <0 then Cll.Interior.Color = vbRed Cll.Font.Color = vbWhite End If Next Cll End Sub

Yllä oleva koodi käyttää jokaiselle silmukalle ja tarkistaa jokaisen tekemäsi valinnan solun. Jos solun arvo on negatiivinen, se on korostettu punaisella ja valkoisella fontin värillä.

Esimerkki 3 - Piilota kaikki laskentataulukot paitsi nykyinen laskentataulukko

Jos haluat piilottaa nopeasti kaikki laskentataulukot paitsi aktiivisen, voit käyttää alla olevaa koodia:

Sub HideAllExceptActiveSheet () Dim ws kuin laskentataulukko jokaiselle tämän työkirjan ws: lle.

Yllä oleva koodi käyttää jokaiselle silmukalle laskentataulukkojen kokoelman läpikäymistä. Se tarkistaa jokaisen laskentataulukon nimen ja piilottaa sen, jos se ei ole aktiivinen laskentataulukko.

Esimerkki 4 - Pura numeerinen osa aakkosnumeerisesta merkkijonosta

Jos soluissa on aakkosnumeerisia merkkijonoja ja haluat poimia niistä numeerisen osan, voit tehdä sen käyttämällä alla olevaa koodia:

Funktio GetNumeric (CellRef As String) Dim StringLength As Integer StringLength = Len (CellRef) For i = 1 to StringLength If IsNumeric (Mid (CellRef, i, 1)) Sitten Result = Result & Mid (CellRef, i, 1) Seuraava i GetNumeric = Tuloksen lopetusfunktio

Tämä koodi luo Exceliin mukautetun funktion, jota voidaan käyttää laskentataulukossa (aivan kuten tavallinen toiminto).

Minne laittaa VBA -koodi?

Mietitkö, mihin VBA -koodi menee Excel -työkirjassa?

Excelissä on VBA -taustaohjelma, jota kutsutaan VB -editoriksi. Sinun on kopioitava ja liitettävä koodi VB Editor -moduulin koodi -ikkunaan.

Tässä on seuraavat vaiheet:

  1. Siirry Kehittäjä -välilehdelle.
  2. Napsauta Visual Basic -vaihtoehtoa. Tämä avaa VB -editorin taustaohjelmaan.
  3. Napsauta hiiren kakkospainikkeella mitä tahansa työkirjan objektia VB Editorin Project Explorer -ruudussa, johon haluat lisätä koodin. Jos et näe Project Exploreria, siirry Näytä -välilehteen ja napsauta Project Explorer.
  4. Siirry Lisää -kohtaan ja napsauta Moduuli. Tämä lisää moduuliobjektin työkirjaasi.
  5. Kopioi ja liitä koodi moduuli -ikkunaan.
wave wave wave wave wave