Lang L: none (table-of-contents)
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.
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:
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.
