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:
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.
