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

VBA If avaldus

Kui siis

VBA Kui avaldused võimaldavad teil testida, kas avaldised on tõesed või valed, käivitades tulemuste põhjal erineva koodi.Vaatame lihtsat näidet:
1 Kui vahemik ("a2"). Väärtus> 0 Siis vahemik ("b2"). Väärtus = "positiivne"
See kontrollib, kas vahemiku A2 väärtus on suurem kui 0. Kui jah, siis määrake vahemik B2 võrdseks väärtusega „Positiivne”Märkus. Tingimuste testimisel kasutame võrdlusoperaatoreid =,>, <,, =. Me käsitleme neid üksikasjalikumalt hiljem artiklis.Siin on lihtsa üherealise If-lause süntaks:
1 Kui [test_expression], siis [action]
Lugemise hõlbustamiseks võite kasutada rea ​​jätkamise märki (alajoon), et laiendada If -laused kahele reale (nagu tegime ülaltoodud pildil):
12 Kui [test_expression], siis _[tegevus]
12 Kui vahemik ("a2"). Väärtus> 0 Siis _Vahemik ("b2"). Väärtus = "positiivne"

Lõpp Kui

Ülaltoodud „üherealine”, kui avaldus töötab hästi ühe tingimuse testimisel. Kuid kuna teie IF -avaldused muutuvad mitme tingimusega keerulisemaks, peate if -lause lõppu lisama sõna „End If”:
123 Kui vahemik ("a2"). Väärtus> 0 SiisVahemik ("b2"). Väärtus = "positiivne"Lõpp Kui

Siin on süntaks järgmine:

123 Kui [test_expression], siis[tegevus]Lõpp Kui

Lõpp If tähistab lause if lõppu.

Lisame nüüd ElseIF -i:

ElseIF - mitu tingimust

ElseIf lisatakse olemasolevale If -avaldusele. Muidu, kui testitakse, kas mõni tingimus on täidetud AINULT siis, kui eelmised tingimused ei ole täidetud.Eelmises näites testisime, kas lahtri väärtus on positiivne. Nüüd testime ka ElseIf -ga, kas lahtri väärtus on negatiivne:
12345 Kui vahemik ("a2"). Väärtus> 0 SiisVahemik ("b2"). Väärtus = "positiivne"Muu vahemik ("a2"). Väärtus <0 SiisVahemik ("b2"). Väärtus = "Negatiivne"Lõpp Kui

Mitme tingimuse testimiseks saate kasutada mitut ElseIf -i.

1234567891011 Alam If_Multiple_Conditions ()Kui vahemik ("a2"). Väärtus = "kass" SiisVahemik ("b2"). Väärtus = "Mjäu"ElseIf Vahemik ("a2"). Väärtus = "Koer" SiisVahemik ("b2"). Väärtus = "Woof"ElseIf Range ("a2"). Väärtus = "Duck" SiisVahemik ("b2"). Väärtus = "Quack"Lõpp KuiEnd Sub

Nüüd lisame Muidu:

Muidu

The Muidu jookseb, kui muid varasemaid tingimusi pole täidetud.

Lõpetame oma näite, kasutades teist, et näidata, et kui lahtri väärtus ei ole positiivne ega negatiivne, peab see olema null:

1234567 Kui vahemik ("a2"). Väärtus> 0 SiisVahemik ("b2"). Väärtus = "positiivne"Muu vahemik ("a2"). Väärtus <0 SiisVahemik ("b2"). Väärtus = "Negatiivne"MuiduVahemik ("b2"). Väärtus = "null"Lõpp Kui

Kui-muidu

Kõige tavalisem If-lause tüüp on lihtne If-Else:

1234567 Alam If_Else ()Kui vahemik ("a2"). Väärtus> 0 SiisVahemik ("b2"). Väärtus = "positiivne"MuiduVahemik ("b2"). Väärtus = "Mitte positiivne"Lõpp KuiEnd Sub

Pesastatud IF -d

Samuti saate „pesastada”, kui avaldused on üksteise sees.

1234567891011 Pesastatud_faile ()Kui vahemik ("a2"). Väärtus> 0 SiisVahemik ("b2"). Väärtus = "positiivne"MuiduKui vahemik ("a2"). Väärtus <0 SiisVahemik ("b2"). Väärtus = "Negatiivne"MuiduVahemik ("b2"). Väärtus = "null"Lõpp KuiLõpp KuiEnd Sub

KUI - Või, Ja, Xor, Mitte

Järgmisena käsitleme loogilisi operaatoreid: Või, Ja, Xor, Mitte.

Kui või

The Või operaator katsetab, kui vähemalt üks tingimus on täidetud.

Järgmine kood kontrollib, kas vahemiku A2 väärtus on väiksem kui 5000 või suurem kui 10 000:

123 Kui vahemik ("a2"). Väärtus 10000 SiisVahemik ("b2"). Väärtus = "väljaspool vahemikku"Lõpp Kui

Ühele reale saate lisada mitu järgmist.

123 Kui vahemik ("a2"). Väärtus 10000 või vahemik ("a2"). Väärtus = 9999 SiisVahemik ("b2"). Väärtus = "väljaspool vahemikku"Lõpp Kui

Kui kavatsete kasutada mitut versiooni, on koodi lugemise hõlbustamiseks soovitatav kasutada rea ​​jätkumärki.

123456 Kui vahemik ("a2"). Väärtus <5000 või _Vahemik ("a2"). Väärtus> 10000 või _Vahemik ("a2"). Väärtus = 9999 SiisVahemik ("b2"). Väärtus = "vahemikust väljas"Lõpp Kui

Kui Ja

Operaator And võimaldab teil testida, kas KÕIK tingimused on täidetud.

123 Kui vahemik ("a2"). Väärtus> = 5000 Ja vahemik ("a2"). Väärtus <= 10000 SiisVahemik ("b2"). Väärtus = "vahemikus"Lõpp Kui

Kui Xor

Operaator Xor võimaldab teil testida, kas täpselt üks tingimus on täidetud. Kui null tingimused on täidetud, tagastab Xor väärtuse VÄÄR. Kui kaks või enam tingimust on täidetud, tagastab Xor ka väärtuse Väär.

Ma olen harva näinud Xorit VBA programmeerimises.

Kui ei

Operaatorit Not kasutatakse teisendamiseks FALSE väärtuseks TRUE või TRUE to FALSE:

123 Alam IF_Not ()MsgBox pole (tõsi)End Sub

Pange tähele, et operaator Not ei vaja lülitamiseks avaldise ümber sulge.

Operaatorit Not ei saa rakendada ka If -avaldustele:

123 Kui ei (Vahemik ("a2"). Väärtus> = 5000 Ja vahemik ("a2"). Väärtus <= 10000) SiisVahemik ("b2"). Väärtus = "vahemikust väljas"Lõpp Kui

Kui võrrelda

Võrdluste tegemisel kasutate tavaliselt ühte võrdlusoperaatorit:

Võrdlusoperaator Selgitus
= Võrdne
Mitte võrdne
> Suurem kui
>= Suurem või võrdne
< Vähem kui
<= Vähem või võrdne

Siiski võite kasutada ka mis tahes väljendeid või funktsiooni mille tulemuseks on tõsi või vale

Kui - Boole'i ​​funktsioon

If -avaldiste avaldiste koostamisel saate kasutada ka mis tahes funktsiooni, mis genereerib tõese või vale. VBA -l on mõned neist funktsioonidest:

Funktsioon Kirjeldus
IsDate Tagastab väärtuse TRUE, kui avaldis on kehtiv kuupäev
On tühi Otsige tühje lahtreid või määratlemata muutujaid
IsError Kontrollige veaväärtusi
IsNull Kontrollige NULL väärtust
IsNumeric Kontrollige numbrilist väärtust

Neid võib nimetada järgmiselt:

1 Kui IsEmpty (Vahemik ("A1"). Väärtus) Siis MsgBox "Lahtri tühi"

Excelil on ka palju lisafunktsioone, mida saab töölehe abil töölehele kutsuda. Siin on näide Exceli IsText funktsioonist:

12 Kui Application.WorksheetFunction.IsText (Vahemik ("a2"). Väärtus) Siis _MsgBox "Lahter on tekst"

Samuti saate luua oma kasutaja määratud funktsioone (UDF). Allpool loome lihtsa Boole'i ​​funktsiooni, mis tagastab tõese. Siis nimetame seda funktsiooni oma avalduses If:

1234567891011 Alamfunktsioon ()Kui TrueFunction siisSõnumikast "Tõsi"Lõpp KuiEnd SubFunktsioon TrueFunction () kui BooleanTrueFunction = TõsiLõppfunktsioon

Teksti võrdlemine

Samuti saate teksti võrrelda numbrite võrdlemisega.
1 Msgbox "a" = "b"
1 Msgbox "a" = "a"
Teksti võrdlemisel peate silmas pidama suurtähte (ülemine või alumine). Vaikimisi peab VBA erinevate tähtedega tähti mittevastavateks. Teisisõnu, "A" "a".Kui soovite, et VBA ignoreeriks väiketähti, peate lisama suvandi Võrdle teksti deklaratsiooni oma mooduli ülaossa:
1 Valik Võrdle teksti

Pärast selle deklaratsiooni "A" = "a" tegemist:
12345 Valik Võrdle tekstiAlam If_Text ()MsgBox "a" = "A"End Sub

VBA kui meeldib

VBA Like Operaator võimaldab teil teksti ebatäpselt võrrelda. Lisateabe saamiseks klõpsake linki „Meeldib operaator”, kuid näitame allpool põhinäidet:

12345678 Hämarda strName kui stringstrName = "Härra Charles"Kui strName Nagu "Mr*" SiisSõnumikast "Tõsi"MuiduSõnumikast "Vale"Lõpp Kui

Siin kasutame tärniga "*" metamärki. * Tähistab mis tahes arvu tähemärke. Nii et ülaltoodud If -lause tagastab tõese. Like operaator on äärmiselt võimas, kuid sageli alakasutatud tööriist tekstiga tegelemiseks.

Kui Loops

VBA silmused võimaldavad toiminguid korrata. IF-ELSE-ide kombineerimine silmustega on suurepärane viis paljude arvutuste kiireks töötlemiseks.

Jätkates meie positiivse / negatiivse näitega, lisame iga silmuse jaoks silmuse, mis läbib lahtrite vahemiku:

1234567891011121314 Alam If_Loop ()Dim Cell kui vahemikIga vahemiku lahtri kohta ("A2: A6")Kui Cell.Value> 0 SiisLahter.Nihke (0, 1) .Väärtus = "Positiivne"Muul juhul, kui Cell.Value <0 SiisLahter.Nihke (0, 1) .Väärtus = "Negatiivne"MuiduLahter.Nihke (0, 1) .Väärtus = "Null"Lõpp KuiJärgmine lahterEnd Sub

Kui veel näiteid

Nüüd käsitleme mõnda konkreetsemat näidet.

Kontrollige, kas lahter on tühi

See kood kontrollib, kas lahter on tühi. Kui see on tühi, ignoreerib see lahtrit. Kui see pole tühi, väljastab see lahtri väärtuse paremale:
1234567 Alam If_Cell_Empty ()Kui vahemik ("a2"). Väärtus "" SiisVahemik ("b2"). Väärtus = vahemik ("a2"). VäärtusLõpp KuiEnd Sub

Kontrollige, kas lahter sisaldab konkreetset teksti

Funktsioon Instr kontrollib, kas teises stringis on tekstistring. Kasutage seda koos lausega If, et kontrollida, kas lahter sisaldab konkreetset teksti:
123 Kui Instr (Vahemik ("A2"). Väärtus, "tekst")> 0 SiisSõnumikast "Leitud tekst"Lõpp Kui

Kontrollige, kas lahtris on teksti

See kood kontrollib, kas lahter on tekst:
1234567 Alam If_Cell_Is_Text ()Kui Application.WorksheetFunction.IsText (Vahemik ("a2"). Väärtus) SiisMsgBox "Lahter on tekst"Lõpp KuiEnd Sub

Kui minna

If -lause tulemust saate kasutada teise koodi jao „Ava” jaoks.
12345678910 Alam IfGoTo ()Kui IsError (Cell.value) SiisMine vaheleLõpp Kui"Mingi koodVahele jätma:End Sub

Kustuta rida, kui lahter on tühi

Ifi ja silmuste abil saate testida, kas lahter on tühi, ja kustutada kogu rida.
123456789 Sub DeleteRowIfCellBlank ()Dim Cell kui vahemikIga vahemiku lahtri kohta ("A2: A10")Kui Cell.Value = "" Siis Cell.EntireRow.DeleteJärgmine lahterEnd Sub

Kui MessageBox Jah / Ei

VBA sõnumikastidega saate paluda kasutajal valida mitme valiku hulgast. Jah / Ei sõnumikast palub kasutajal valida Jah või Ei. Protseduurile saate lisada Jah / Ei sõnumikasti, et küsida kasutajalt, kas nad soovivad jätkata protseduuri või mitte. Käsitlete kasutaja sisendit If -lausega.Praktikas on jah/ei sõnumikast:
123456789101112 Sub MsgBoxVariable ()Hämar vastus täisarvunaanswer = MsgBox ("Kas soovite jätkata?", vbQuestion + vbYesNo)Kui vastus = vbJah siisMsgBox "Jah"MuiduMsgBox "Ei"Lõpp KuiEnd Sub

VBA If, ElseIf, Muu juurdepääs VBA -s

Funktsioonid If, ElseIf ja Else töötavad Access VBA -s täpselt samamoodi nagu Excel VBA -s.

Lause If abil saate kontrollida, kas kirjete kogumis on kirjeid.

wave wave wave wave wave