Kuidas kasutada kui-siis Excel 2016 VBA-s

If-Then on VBA kõige olulisem juhtimisstruktuur. Tõenäoliselt kasutate seda käsku igapäevaselt. Kui soovite ühe või mitu lauset tingimuslikult täita, kasutage struktuuri If-Then. Valikuline klausel Else, kui see on kaasatud, võimaldab teil käivitada ühe või mitu avaldust, kui testitav tingimus ei vasta tõele. Siin on lihtne CheckUseri protseduur, mis on ümber kodeeritud, et kasutada struktuuri If-Then-Else:

Alamkontrollikasutaja2()
  Kasutajanimi = InputBox ("Sisestage oma nimi: ")
  Kui kasutajanimi = "Satya Nadella", siis
    MsgBox ("Tere tulemast, Satya…")
' …[Rohkem koodi siin] …
  Muidu
    MsgBox "Vabandust. Ainult Satya Nadella saab seda juhtida.
  Lõpeta Kui
Lõpeta alam

Kui-siis näited

Järgmine rutiin demonstreerib struktuuri If-Then ilma valikulise Else-klauslita:

Sub GreetMe()
  Kui aeg <0,5, siis MsgBox "Tere hommikust"
Lõpeta alam

GreetMe protseduur kasutab süsteemi aja hankimiseks VBA funktsiooni Time. Kui praegune kellaaeg on alla 0,5, kuvab rutiin sõbralikku tervitust. Kui aeg on suurem kui 0,5 või sellega võrdne, siis rutiin lõpeb ja midagi ei juhtu.

Kui Time on suurem kui 0,5 või sellega võrdne, võite kuvada teistsuguse tervituse, võite lisada esimese lause järele teise If-Then lause:

Sub GreetMe2()
  Kui aeg <0,5, siis MsgBox "Tere hommikust"
  Kui aeg >= 0,5, siis MsgBox "Tere pärastlõunat"
Lõpeta alam

Pange tähele, et >= (suurem või võrdne) kasutatakse teise If-Then-lause jaoks. See tagab, et kogu päev on kaetud. Kui > (suurem kui) oleks kasutatud, ei ilmuks teadet, kui seda protseduuri teostataks täpselt kell 12.00. See on üsna ebatõenäoline, kuid sellise olulise programmi puhul ei taha te riskida.

Kui-siis-muidu näide

Teine lähenemine eelnevale probleemile kasutab Else-klauslit. Siin on sama rutiin, mis on ümber kodeeritud, et kasutada struktuuri If-Then-Else:

Sub GreetMe3()
  Kui aeg < 0,5, siis MsgBox “Tere hommikust” muu _
    MsgBox "Tere pärastlõunat"
Lõpeta alam

Pange tähele, et eelmises näites kasutatakse rea jätkumärki (alajoont). Kui-siis-muidu avaldus on tegelikult üks väide. VBA pakub End If-lauset kasutavate If-Then-Else konstruktsioonide kodeerimiseks veidi teistmoodi. Seetõttu saab GreetMe protseduuri ümber kirjutada kui

Sub GreetMe4()
  Kui Aeg < 0,5 Siis
    MsgBox "Tere hommikust"
  Muidu
    MsgBox "Tere pärastlõunat"
  Lõpeta Kui
Lõpeta alam

Tegelikult saate If-osa alla lisada suvalise arvu avaldusi ja osa Else alla suvalise arvu avaldusi. Seda süntaksit on lihtsam lugeda ja see muudab laused lühemaks.

Mida teha, kui teil on vaja GreetMe rutiini laiendada, et tulla toime kolme tingimusega: hommikul, pärastlõunal ja õhtul? Teil on kaks võimalust: kasutage kolme If-Then-lauset või kasutage pesastatud struktuuri If-Then-Else. Pesastamine tähendab struktuuri Kui-Siis-muu paigutamist teise If-Siis-Else struktuuri sisse. Esimene lähenemisviis, mis kasutab kolme If-Then-lauset, on lihtsam:

Sub GreetMe5()
 Hämarda sõnum stringina
 Kui aeg < 0,5, siis sõnum = "hommik"
 Kui aeg >= 0,5 ja aeg < 0,75, siis sõnum = "pärastlõuna"
 Kui aeg >= 0,75, siis sõnum = "õhtu"
 MsgBox "Hea" & Msg
Lõpeta alam

Uus pööre lisati muutuja kasutamisega. Muutuja Msg saab olenevalt kellaajast erineva tekstiväärtuse. MsgBoxi avalduses kuvatakse tervitus: Tere hommikust, Tere pärastlõunast või Tere õhtust.

Järgmine rutiin teostab sama toimingu, kuid kasutab struktuuri If-Then-End If:

Sub GreetMe6()
  Hämarda sõnum stringina
  Kui Aeg < 0,5 Siis
    Sõnum = "Hommik"
  Lõpeta Kui
  Kui aeg >= 0,5 ja aeg < 0,75, siis
    Sõnum = "pärastlõuna"
  Lõpeta Kui
  Kui aeg >= 0,75 Siis
    Sõnum = "Õhtu"
  Lõpeta Kui
  MsgBox "Hea" & Msg
Lõpeta alam

ElseIfi kasutamine

Eelmistes näidetes täidetakse kõik rutiini laused. Veidi tõhusam struktuur väljuks rutiinist niipea, kui mõni tingimus leitakse tõeseks. Näiteks hommikul peaks protseduur näitama tere hommikust sõnumit ja seejärel väljuma – muid üleliigseid tingimusi hindamata.

Sellise pisikese rutiini puhul ei pea te täitmiskiiruse pärast muretsema. Kuid suuremate rakenduste puhul, kus kiirus on kriitiline, peaksite teadma struktuuri If-Then teist süntaksit.

Selle süntaksi abil saate GreetMe rutiini ümber kirjutada järgmiselt:

Sub GreetMe7()
 Hämarda sõnum stringina
 Kui Aeg < 0,5 Siis
   Sõnum = "Hommik"
 ElseIf Aeg >= 0,5 ja aeg < 0,75 Siis
   Sõnum = "pärastlõuna"
 Muidu
   Sõnum = "Õhtu"
 Lõpeta Kui
 MsgBox "Hea" & Msg
Lõpeta alam

Kui tingimus on tõene, käivitab VBA tingimuslaused ja If-struktuur lõpeb. Teisisõnu, see protseduur on pisut tõhusam kui eelnevad näited. Kompromiss seisneb selles, et koodi on raskem mõista.

Veel üks Kui-Siis näide

Siin on veel üks näide, mis kasutab If-Then struktuuri lihtsat vormi. See protseduur küsib kasutajalt kogust ja kuvab seejärel sobiva allahindluse, mis põhineb kasutaja sisestatud kogusel:

Sub ShowDiscount()
  Hämar kogus nii kaua
  Hämar allahindlus kahekordsena
  Kogus = Inputbox ("Sisesta kogus:")
  Kui kogus > 0, siis allahindlus = 0,1
  Kui kogus >= 25, siis allahindlus = 0,15
  Kui kogus >= 50, siis allahindlus = 0,2
  Kui kogus >= 75, siis allahindlus = 0,25
  MsgBox “Allahindlus: “ & Allahindlus
Lõpeta alam

Pange tähele, et selle rutiini iga If-Then-lause täidetakse ja suvandi Discount väärtus võib avalduste täitmisel muutuda. Kuid rutiin kuvab lõpuks õige allahindluse väärtuse, kuna kui-siis avaldused on allahindluse väärtuste kasvavas järjekorras.

Järgmine protseduur täidab samu toiminguid alternatiivse ElseIfi süntaksi abil. Sel juhul lõpeb rutiin kohe pärast tõese tingimuse avalduste täitmist:

Sub ShowDiscount2()
 Hämar kogus nii kaua
 Hämar allahindlus kahekordsena
 Kogus = InputBox ("Sisesta kogus: ")
 Kui kogus > 0 ja kogus < 25, siis
  Allahindlus = 0,1
 ElseIf Kogus >= 25 ja kogus < 50 Siis
  Allahindlus = 0,15
 ElseIf Kogus >= 50 ja kogus < 75 Siis
  Allahindlus = 0,2
 ElseIf Kogus >= 75 Siis
  Allahindlus = 0,25
 Lõpeta Kui
 MsgBox “Allahindlus: “ & Allahindlus
Lõpeta alam

Need mitmekordsed kui-siis-struktuurid on üsna tülikad. Võib-olla soovite kasutada If-Then struktuuri ainult lihtsate binaarsete otsuste tegemiseks.

Leave a Comment

10 näpunäidet paremateks Microsoft Teamsi koosolekuteks

10 näpunäidet paremateks Microsoft Teamsi koosolekuteks

Uurige kümmet nõuannet Microsoft Teamsiga parema koosolekukogemuse saamiseks, sealhulgas märkmete tegemine, tausta hägustamine, vaigistamine ja koosolekute salvestamine.

Kuidas Word 2013 dokumentides kommentaare üle vaadata ja kustutada

Kuidas Word 2013 dokumentides kommentaare üle vaadata ja kustutada

Lühikeses Word 2013 dokumendis saate kommentaare hõlpsalt sirvida ja uurida. Siit leiate samm-sammult, kuidas kommentaare lugeda ja eemaldada.

Kuidas parandada Word 2016 tavalist malli

Kuidas parandada Word 2016 tavalist malli

Mõnikord varitseb kurjus selles, mis peaks olema Word 2016 peamises mõistlikkuse hoidlas: tavalises mallifailis. Õpi, kuidas taastada normaalne mall ja eemaldada probleemid.

Kuidas lisada lõigu taane Word 2013-s

Kuidas lisada lõigu taane Word 2013-s

Kuidas lisada lõigu taane Word 2013-s, et luua selgem ja professionaalsem ilme. Meie juhend aitab sul lihtsasti navigeerida Wordi funktsioonide kaudu ja tutvustab esimeses reas taande ning rippuva taande lisamise viise.

Kuidas Outlook 2016-s uusi kiireid samme luua

Kuidas Outlook 2016-s uusi kiireid samme luua

Lisaks kuuele kiirtoimingule, mis kuvatakse Outlooki esmakordsel installimisel, on teil valida veelgi rohkemate Quick Step mallide hulgast.

Kustutage oma PowerPointi slaididelt pliiatsi ja esiletõstja joonised

Kustutage oma PowerPointi slaididelt pliiatsi ja esiletõstja joonised

Kui olete esitluse ajal PowerPointi slaididele joonistamiseks kasutanud pliiatsit või markerit, saate joonised järgmise esitluse jaoks salvestada või need kustutada, nii et järgmisel näitamisel alustate puhaste PowerPointi slaididega. Pliiatsi ja markeri jooniste kustutamiseks järgige neid juhiseid: joonte kustutamine […]

Stiili teegi sisu rakenduses SharePoint 2010

Stiili teegi sisu rakenduses SharePoint 2010

Style'i teek sisaldab CSS-faile, XSL-faile ja eelmääratletud mallilehtede, lehepaigutuste ja juhtelementide poolt kasutatavaid pilte rakenduses SharePoint 2010. CSS-failide leidmiseks avaldamissaidi stiiliteegist: valige saidi toimingud → vaade. Kogu saidi sisu. Ilmub saidi sisu. Style raamatukogu asub […]

Vormindage numbreid tuhandetes ja miljonites Exceli aruannetes

Vormindage numbreid tuhandetes ja miljonites Exceli aruannetes

Ärge uputage oma publikut tohutute numbritega. Microsoft Excelis saate parandada oma armatuurlaudade ja aruannete loetavust, vormindades numbrid tuhandetes või miljonites.

Kuidas SharePointi saite jagada ja jälgida

Kuidas SharePointi saite jagada ja jälgida

Siit saate teada, kuidas kasutada SharePointi suhtlusvõrgustiku tööriistu, mis võimaldavad üksikisikutel ja rühmadel suhelda, koostööd teha, jagada ja ühendada.

Kuidas teisendada kuupäevi Excelis Juliani vormingutesse

Kuidas teisendada kuupäevi Excelis Juliani vormingutesse

Julia kuupäevi kasutatakse tootmiskeskkondades sageli ajatemplina ja partiinumbri kiirviitena. Seda tüüpi kuupäevade kodeerimine võimaldab jaemüüjatel, tarbijatel ja teenindusagentidel tuvastada toote valmistamise aja ja seega toote vanuse. Juliuse kuupäevi kasutatakse ka programmeerimises, sõjaväes ja astronoomias. Erinevad […]