VBA If, ElseIf, Else (Ultimate Guide to If Statements)

VBA If -lausunto

Jos sitten

VBA Jos lausuntojen avulla voit testata, ovatko lausekkeet TOSI vai EPÄTOSI, suorittavat eri koodin tulosten perusteella.Katsotaanpa yksinkertaista esimerkkiä:
1 Jos alue ("a2"). Arvo> 0 Sitten alue ("b2"). Arvo = "positiivinen"
Tämä testaa, onko alueen A2 arvo suurempi kuin 0. Jos on, aseta alue B2 yhtä suureksi kuin "positiivinen"Huomautus: Kun testaamme olosuhteita, käytämme =,>, <,, = vertailuoperaattoreita. Keskustelemme niistä tarkemmin myöhemmin artikkelissa.Tässä on yksinkertaisen yksirivisen If-lauseen syntaksi:
1 Jos [test_expression], niin [action]
Lukemisen helpottamiseksi voit laajentaa If -lauseet kahdelle riville rivin jatko -merkin (alaviiva) avulla (kuten teimme yllä olevassa kuvassa):
12 Jos [testi_lauseke], niin _[toiminta]
12 Jos alue ("a2"). Arvo> 0 Sitten _Alue ("b2"). Arvo = "Positiivinen"

Loppu Jos

Yllä oleva "yksirivinen" if-lause toimii hyvin, kun testaat yhtä ehtoa. Mutta koska IF -lauseesi muuttuvat monimutkaisemmiksi useiden ehtojen kanssa, sinun on lisättävä "Lopeta jos" if -lauseen loppuun:
123 Jos alue ("a2"). Arvo> 0 SittenAlue ("b2"). Arvo = "Positiivinen"Loppu Jos

Tässä syntaksi on:

123 Jos [testi_lauseke] niin[toiminta]Loppu Jos

Loppu If tarkoittaa if -lauseen loppua.

Lisätään nyt ElseIF:

ElseIF - Useita ehtoja

ElseIf lisätään olemassa olevaan If -lauseeseen. Muussa tapauksessa testataan, täyttyvätkö ehdot VAIN jos edelliset ehdot eivät täyty.Edellisessä esimerkissä testasimme, onko solun arvo positiivinen. Nyt testataan myös, onko solun arvo negatiivinen ElseIf: llä:
12345 Jos alue ("a2"). Arvo> 0 SittenAlue ("b2"). Arvo = "Positiivinen"ElseIf -alue ("a2"). Arvo <0 SittenAlue ("b2"). Arvo = "Negatiivinen"Loppu Jos

Voit käyttää useita ElseIf -tiedostoja useiden ehtojen testaamiseen:

1234567891011 Osa If_Multiple_Conditions ()If Range ("a2"). Arvo = "Cat" SittenAlue ("b2"). Arvo = "Miau"ElseIf -alue ("a2"). Arvo = "Koira" SittenAlue ("b2"). Arvo = "Woof"ElseIf -alue ("a2"). Arvo = "Ankka" SittenAlue ("b2"). Arvo = "Quack"Loppu JosEnd Sub

Nyt lisäämme Muu:

Muu

The Muu ajaa jos muita aiempia ehtoja ei ole täytetty.

Lopetamme esimerkkimme käyttämällä muuta merkkiä osoittamaan, että jos solun arvo ei ole positiivinen tai negatiivinen, sen on oltava nolla:

1234567 Jos alue ("a2"). Arvo> 0 SittenAlue ("b2"). Arvo = "Positiivinen"ElseIf -alue ("a2"). Arvo <0 SittenAlue ("b2"). Arvo = "Negatiivinen"MuuAlue ("b2"). Arvo = "nolla"Loppu Jos

Tai muuten

Yleisin If-lause on yksinkertainen If-Else:

1234567 Sub If_Else ()Jos alue ("a2"). Arvo> 0 SittenAlue ("b2"). Arvo = "Positiivinen"MuuAlue ("b2"). Arvo = "Ei positiivinen"Loppu JosEnd Sub

Sisäkkäiset IF: t

Voit myös "sijoittaa", jos lausunnot toisiinsa.

1234567891011 Sub Nested_Ifs ()Jos alue ("a2"). Arvo> 0 SittenAlue ("b2"). Arvo = "Positiivinen"MuuJos alue ("a2"). Arvo <0 SittenAlue ("b2"). Arvo = "Negatiivinen"MuuAlue ("b2"). Arvo = "nolla"Loppu JosLoppu JosEnd Sub

JOS - Tai, Ja, Xor, Ei

Seuraavaksi keskustelemme loogisista operaattoreista: Tai, Ja, Xor, Ei.

Jos tai

The Tai käyttäjä testaa, jos vähintään yksi ehto täyttyy.

Seuraava koodi testaa, onko alueen A2 arvo alle 5000 tai suurempi kuin 10000:

123 Jos alue ("a2"). Arvo 10000 SilloinAlue ("b2"). Arvo = "Alueen ulkopuolella"Loppu Jos

Voit sisällyttää useita rivejä yhdelle riville:

123 Jos alue ("a2"). Arvo 10000 tai alue ("a2"). Arvo = 9999 SittenAlue ("b2"). Arvo = "Alueen ulkopuolella"Loppu Jos

Jos aiot käyttää useita vaihtoehtoja, on suositeltavaa käyttää rivin jatko -merkkiä koodin lukemisen helpottamiseksi:

123456 Jos alue ("a2"). Arvo <5000 tai _Alue ("a2"). Arvo> 10000 tai _Alue ("a2"). Arvo = 9999 SittenAlue ("b2"). Arvo = "Alueen ulkopuolella"Loppu Jos

Jos ja

Ja -operaattorin avulla voit testata, onko KAIKKI ehdot täyttyvät.

123 Jos alue ("a2"). Arvo> = 5000 Ja alue ("a2"). Arvo <= 10000 SittenAlue ("b2"). Arvo = "Alueella"Loppu Jos

Jos Xor

Xor -operaattorin avulla voit testata, onko yksi ehto täyttyy. Jos nollaehto täyttyy, Xor palauttaa EPÄTOSI. Jos kaksi tai useampi ehto täyttyy, Xor palauttaa myös epätosi.

Olen harvoin nähnyt Xoria käytettävän VBA -ohjelmoinnissa.

Jos ei

Ei -operaattoria käytetään muuntamaan EPÄTOSI arvoksi TOSI tai TOSI EPÄTOSI:

123 Osa IF_Not ()MsgBox ei (totta)End Sub

Huomaa, että Not -operaattori vaatii lausetta ympäröivän sulun vaihtaakseen.

Ei -operaattoria voidaan soveltaa myös If -lauseisiin:

123 Jos ei (Alue ("a2"). Arvo> = 5000 Ja alue ("a2"). Arvo <= 10000) SittenAlue ("b2"). Arvo = "Alueen ulkopuolella"Loppu Jos

Jos vertailut

Vertailussa käytät yleensä yhtä vertailuoperaattoreista:

Vertailuoperaattori Selitys
= Yhtä kuin
Ei yhtä kuin
> Suurempi kuin
>= Suurempi tai yhtä suuri kuin
< Vähemmän kuin
<= Pienempi kuin tai yhtä suuri kuin

Voit kuitenkin käyttää myös mitä tahansa ilmaisua tai toiminto tuloksena on TOSI tai EPÄTOSI

Jos - Boolen funktio

Kun rakennat lausekkeita If -lausekkeille, voit käyttää myös mitä tahansa funktiota, joka luo TOSI- tai FALSE -arvon. VBA: lla on muutamia näistä toiminnoista:

Toiminto Kuvaus
IsDate Palauttaa TOSI, jos lauseke on kelvollinen päivämäärä
On tyhjä Tarkista tyhjät solut tai määrittelemättömät muuttujat
IsError Tarkista virhearvot
IsNull Tarkista NULL -arvo
IsNumeric Tarkista numeerinen arvo

Niitä voidaan kutsua näin:

1 Jos IsEmpty (alue ("A1"). Arvo) Sitten MsgBox "Cell Empty"

Excelissä on myös monia lisätoimintoja, jotka voidaan kutsua WorksheetFunction -toiminnolla. Tässä on esimerkki Excelin IsText -toiminnosta:

12 Jos Application.WorksheetFunction.IsText (alue ("a2"). Arvo) Sitten _MsgBox "Solu on teksti"

Voit myös luoda omia käyttäjän määrittämiä toimintoja (UDF). Alla luomme yksinkertaisen Boolen funktion, joka palauttaa TOSI. Sitten kutsumme tätä toimintoa If -lauseessamme:

1234567891011 Osa If_Function ()Jos TrueFunction sittenMsgBox "Totta"Loppu JosEnd SubToiminto TrueFunction () Boolen funktionaTrueFunction = TottaLopeta toiminto

Tekstin vertailu

Voit myös verrata tekstiä samanlaiseen kuin numeroiden vertailuun:
1 Viesti "a" = "b"
1 Msgbox "a" = "a"
Kun vertaat tekstiä, sinun on otettava huomioon "tapaus" (ylempi tai alempi). Oletuksena VBA pitää kirjaimia, joissa on eri tapauksia, ei täsmää. Toisin sanoen "A" "a".Jos haluat VBA: n jättävän huomiotta kirjaimet, sinun on lisättävä vaihtoehto Vertaa tekstiä -ilmoitus moduulin yläosaan:
1 Vaihtoehto Vertaa tekstiä

Ilmoituksen "A" = "a" jälkeen:
12345 Vaihtoehto Vertaa tekstiäSub If_Text ()MsgBox "a" = "A"End Sub

VBA jos tykkää

VBA Like Operatorin avulla voit vertailla tekstiä epätarkasti. Napsauta "Tykkää operaattorista" -linkkiä saadaksesi lisätietoja, mutta näytämme alla olevan perusesimerkin:

12345678 Dim strName kuin merkkijonostrName = "Herra Charles"Jos strName Kuten "Mr*" niinMsgBox "Totta"MuuMsgBox "Väärä"Loppu Jos

Tässä käytetään tähtimerkkiä ”*”. * Tarkoittaa mitä tahansa määrää merkkejä. Joten yllä oleva If -lause palauttaa TOSI. Tykkääjä-operaattori on erittäin tehokas, mutta usein liian vähän käytetty työkalu tekstin käsittelyyn.

Jos silmukat

VBA -silmukoiden avulla voit toistaa toimintoja. IF-ELSE: n yhdistäminen silmukoihin on loistava tapa käsitellä nopeasti monia laskelmia.

Jatkamalla positiivista / negatiivista esimerkkiämme lisäämme jokaiselle silmukalle silmukan eri solualueiden läpi:

1234567891011121314 Sub If_Loop ()Dim -solu alueenaJokaiselle alueen solulle ("A2: A6")Jos solun arvo> 0 SittenSolu.Siirto (0, 1) .Value = "Positiivinen"ElseIf Solun arvo <0 SittenSolu.Poikkeama (0, 1) .Value = "Negatiivinen"MuuCell.Offset (0, 1) .Value = "Nolla"Loppu JosSeuraava soluEnd Sub

Jos muita esimerkkejä

Käymme nyt tarkempia esimerkkejä.

Tarkista, onko solu tyhjä

Tämä koodi tarkistaa, onko solu tyhjä. Jos se on tyhjä, se jättää solun huomiotta. Jos se ei ole tyhjä, se antaa solun arvon oikealla olevaan soluun:
1234567 Osa If_Cell_Empty ()Jos alue ("a2"). Arvo "" SittenAlue ("b2"). Arvo = Alue ("a2"). ArvoLoppu JosEnd Sub

Tarkista, sisältääkö solu tiettyä tekstiä

Instr -funktio testaa, löytyykö merkkijono toisesta merkkijonosta. Käytä sitä If -lauseen kanssa tarkistaaksesi, sisältääkö solu tiettyä tekstiä:
123 Jos Instr (Alue ("A2"). Arvo, "teksti")> 0 SittenMsgbox "Teksti löytyi"Loppu Jos

Tarkista, sisältääkö solu tekstiä

Tämä koodi testaa, onko solu teksti:
1234567 Sub If_Cell_Is_Text ()Jos Application.WorksheetFunction.IsText (Alue ("a2"). Arvo) SittenMsgBox "Solu on teksti"Loppu JosEnd Sub

Jos Goto

Voit käyttää If -lauseen tulosta "Siirry" koodin toiseen osaan.
12345678910 Sub IfGoTo ()Jos IsError (Cell.value) SittenSiirry ohittamaanLoppu Jos'Joku koodiOhita:End Sub

Poista rivi, jos solu on tyhjä

If- ja silmukoiden avulla voit testata, onko solu tyhjä, ja jos näin on, poista koko rivi.
123456789 Sub DeleteRowIfCellBlank ()Dim -solun alueJokaiselle alueen solulle ("A2: A10")Jos Cell.Value = "" Sitten Cell.EntireRow.DeleteSeuraava soluEnd Sub

Jos MessageBox Kyllä / Ei

VBA -viestilaatikoiden avulla voit pyytää käyttäjää valitsemaan useista vaihtoehdoista. Kyllä / ei -viestiruutu pyytää käyttäjää valitsemaan Kyllä tai Ei. Voit lisätä Kyllä / Ei -viestiruudun menettelyyn ja kysyä käyttäjältä, haluavatko he jatkaa menettelyä vai eivät. Käsittelet käyttäjän syötettä If -lauseella.Tässä on kyllä/ei -viestiruutu käytännössä:
123456789101112 Sub MsgBoxVariable ()Hämärä vastaus kokonaislukunaanswer = MsgBox ("Haluatko jatkaa?", vbQuestion + vbYesNo)Jos vastaus = vbKylläMsgBox "Kyllä"MuuMsgBox "Ei"Loppu JosEnd Sub

VBA If, ElseIf, Muu Access VBA: ssa

If-, ElseIf- ja Else -toiminnot toimivat täsmälleen samalla tavalla Access VBA: ssa kuin Excel VBA: ssa.

Voit tarkistaa If -lausekkeen avulla, onko tietueita tietueissa.

wave wave wave wave wave