If-Thenin käyttäminen Excel 2016 VBA:ssa

If-Then on VBA:n tärkein ohjausrakenne. Käytät todennäköisesti tätä komentoa päivittäin. Käytä If-Then -rakennetta, kun haluat suorittaa yhden tai useamman lauseen ehdollisesti. Valinnainen Else-lause, jos se on mukana, antaa sinun suorittaa yhden tai useamman lauseen, jos testaamasi ehto ei ole tosi. Tässä on yksinkertainen CheckUser-menettely, joka on koodattu uudelleen käyttämään If-Then-Else -rakennetta:

Sub CheckUser2()
  UserName = InputBox("Anna nimesi: ")
  Jos UserName = "Satya Nadella" Sitten
    MsgBox ("Tervetuloa Satya…")
' …[Lisää koodia täällä] …
  Muu
    MsgBox "Anteeksi. Vain Satya Nadella voi johtaa tätä."
  Loppu Jos
Lopeta ala

Jos-niin esimerkkejä

Seuraava rutiini esittelee If-Then-rakenteen ilman valinnaista Else-lausetta:

Sub GreetMe()
  Jos aika < 0,5, niin MsgBox "Hyvää huomenta"
Lopeta ala

GreetMe-menettely käyttää VBA:n Time-funktiota järjestelmän ajan saamiseksi. Jos nykyinen aika on alle 0,5, rutiini näyttää ystävällisen tervehdyksen. Jos Aika on suurempi tai yhtä suuri kuin 0,5, rutiini päättyy eikä mitään tapahdu.

Jos haluat näyttää erilaisen tervehdyksen, jos Aika on suurempi tai yhtä suuri kuin 0,5, voit lisätä toisen If-Then-lausekkeen ensimmäisen jälkeen:

Sub GreetMe2()
  Jos aika < 0,5, niin MsgBox "Hyvää huomenta"
  Jos aika >= 0,5, niin MsgBox "Hyvää iltapäivää"
Lopeta ala

Huomaa, että >= (suurempi tai yhtä suuri kuin) käytetään toisessa If-Then-lauseessa. Tämä varmistaa, että koko päivä on peitetty. Jos > (suurempi kuin) olisi käytetty, viestiä ei tule näkyviin, jos tämä toimenpide suoritettaisiin tarkalleen klo 12.00. Se on melko epätodennäköistä, mutta tällaisen tärkeän ohjelman kanssa et halua ottaa riskejä.

Jos-niin-else esimerkki

Toinen lähestymistapa edelliseen ongelmaan käyttää Else-lausetta. Tässä on sama rutiini koodattu uudelleen käyttämään If-Then-Else -rakennetta:

Sub GreetMe3()
  Jos aika < 0,5, sitten MsgBox "Hyvää huomenta" Muu _
    MsgBox "Hyvää iltapäivää"
Lopeta ala

Huomaa, että edellisessä esimerkissä käytetään rivin jatkomerkkiä (alaviivaa). Jos-niin-else-lauseke on itse asiassa yksi lause. VBA tarjoaa hieman erilaisen tavan koodata End If -käskyä käyttäviä If-Then-Else -rakenteita. Siksi GreetMe-menettely voidaan kirjoittaa uudelleen muotoon

Sub GreetMe4()
  Jos aika < 0,5 Sitten
    MsgBox "Hyvää huomenta"
  Muu
    MsgBox "Hyvää iltapäivää"
  Loppu Jos
Lopeta ala

Itse asiassa voit lisätä kuinka monta lausetta If-osaan ja kuinka monta lausetta Else-osaan. Tämä syntaksi on helpompi lukea ja lyhentää lauseita.

Entä jos sinun on laajennettava GreetMe-rutiinia käsittelemään kolmea ehtoa: aamulla, iltapäivällä ja illalla? Sinulla on kaksi vaihtoehtoa: Käytä kolmea If-Then-lausetta tai käytä sisäkkäistä If-Then-Else -rakennetta. Sisäkkäisyys tarkoittaa If-Then-Else -rakenteen sijoittamista toiseen If-Then-Else -rakenteeseen. Ensimmäinen lähestymistapa, jossa käytetään kolmea If-Then -lausetta, on yksinkertaisempi:

Sub GreetMe5()
 Himmeä viesti merkkijonona
 Jos aika < 0,5, Viesti = "Aamu"
 Jos aika >= 0,5 ja aika < 0,75, viesti = "iltapäivä"
 Jos aika >= 0,75, niin Viesti = "Ilta"
 Viestilaatikko "Hyvä" & Msg
Lopeta ala

Uusi käänne lisättiin muuttujan käytöllä. Msg-muuttuja saa erilaisen tekstiarvon vuorokaudenajan mukaan. MsgBox-lauseessa näkyy tervehdys: Hyvää huomenta, Hyvää iltapäivää tai Hyvää iltaa.

Seuraava rutiini suorittaa saman toiminnon, mutta käyttää If-Then-End If -rakennetta:

Sub GreetMe6()
  Himmeä viesti merkkijonona
  Jos aika < 0,5 Sitten
    Viesti = "Huomenta"
  Loppu Jos
  Jos aika >= 0,5 ja aika < 0,75, niin
    Viesti = "Iltapäivä"
  Loppu Jos
  Jos aika >= 0,75 Sitten
    Viesti = "Ilta"
  Loppu Jos
  Viestilaatikko "Hyvä" & Msg
Lopeta ala

ElseIfin käyttö

Edellisissä esimerkeissä rutiinin jokainen käsky suoritetaan. Hieman tehokkaampi rakenne poistuisi rutiinista heti, kun ehto todetaan todeksi. Esimerkiksi aamulla toimenpiteen tulee näyttää Good Morning -viesti ja sitten poistua - arvioimatta muita tarpeettomia olosuhteita.

Tällaisella pienellä rutiinilla sinun ei tarvitse huolehtia suoritusnopeudesta. Mutta suuremmissa sovelluksissa, joissa nopeus on kriittinen, sinun pitäisi tietää toinen syntaksi If-Then -rakenteelle.

Näin voit kirjoittaa GreetMe-rutiinin uudelleen käyttämällä tätä syntaksia:

Sub GreetMe7()
 Himmeä viesti merkkijonona
 Jos aika < 0,5 Sitten
   Viesti = "Huomenta"
 ElseIf Aika >= 0,5 ja aika < 0,75 Sitten
   Viesti = "Iltapäivä"
 Muu
   Viesti = "Ilta"
 Loppu Jos
 Viestilaatikko "Hyvä" & Msg
Lopeta ala

Kun ehto on tosi, VBA suorittaa ehdolliset lauseet ja If-rakenne päättyy. Toisin sanoen tämä menettely on hieman tehokkaampi kuin edelliset esimerkit. Kompromissi on, että koodia on vaikeampi ymmärtää.

Toinen jos-niin esimerkki

Tässä on toinen esimerkki, joka käyttää yksinkertaista If-Then-rakenteen muotoa. Tämä toimenpide pyytää käyttäjää antamaan määrän ja näyttää sitten sopivan alennuksen käyttäjän syöttämän määrän perusteella:

Sub ShowDiscount()
  Himmeä Määrä yhtä pitkä
  Himmeä alennus Double
  Määrä = InputBox ("Anna määrä:")
  Jos määrä > 0, alennus = 0,1
  Jos määrä >= 25, niin alennus = 0,15
  Jos määrä >= 50, alennus = 0,2
  Jos määrä >= 75, alennus = 0,25
  MsgBox “Alennus: “ & Alennus
Lopeta ala

Huomaa, että tämän rutiinin jokainen If-Then-käsky suoritetaan ja Discount-arvon arvo voi muuttua lauseita suoritettaessa. Rutiini näyttää kuitenkin lopulta oikean arvon Alennukselle, koska If-Then -lausekkeet ovat nousevassa Alennusarvojen järjestyksessä.

Seuraava toimenpide suorittaa samat tehtävät käyttämällä vaihtoehtoista ElseIf-syntaksia. Tässä tapauksessa rutiini päättyy heti tosiehdon lauseiden suorittamisen jälkeen:

Sub ShowDiscount2()
 Himmeä Määrä yhtä pitkä
 Himmeä alennus Double
 Määrä = InputBox("Anna määrä:")
 Jos määrä > 0 ja määrä < 25, niin
  Alennus = 0,1
 ElseIf Määrä >= 25 ja määrä < 50 Sitten
  Alennus = 0,15
 ElseIf Määrä >= 50 ja määrä < 75 Sitten
  Alennus = 0,2
 ElseIf Määrä >= 75 Sitten
  Alennus = 0,25
 Loppu Jos
 MsgBox “Alennus: “ & Alennus
Lopeta ala

Nämä useat If-Then-rakenteet ovat melko hankalia. Voit halutessasi käyttää If-Then -rakennetta vain yksinkertaisiin binääripäätöksiin.


Kuinka estää Microsoft Wordia avaamasta tiedostoja vain luku -tilassa Windowsissa

Kuinka estää Microsoft Wordia avaamasta tiedostoja vain luku -tilassa Windowsissa

Kuinka estää Microsoft Wordia avaamasta tiedostoja vain luku -tilassa Windowsissa Microsoft Word avaa tiedostot vain luku -tilassa, jolloin niiden muokkaaminen on mahdotonta? Älä huoli, menetelmät ovat alla

Microsoft Word -asiakirjojen virheellisen tulostuksen korjaaminen

Microsoft Word -asiakirjojen virheellisen tulostuksen korjaaminen

Virheiden korjaaminen virheellisten Microsoft Word -asiakirjojen tulostuksessa. Virheet tulostettaessa Word-asiakirjoja, joissa on muuttuneet fontit, sotkuiset kappaleet, puuttuva teksti tai kadonnut sisältö ovat melko yleisiä. Älä kuitenkaan

Pyyhi kynä- ja korostuspiirrokset PowerPoint-dioistasi

Pyyhi kynä- ja korostuspiirrokset PowerPoint-dioistasi

Jos olet piirtänyt PowerPoint-dioihin esityksen aikana kynää tai korostuskynää, voit tallentaa piirustukset seuraavaa esitystä varten tai poistaa ne, jotta seuraavan kerran näytät ne. Aloitat puhtailla PowerPoint-dioilla. Pyyhi kynä- ja korostuskynäpiirrokset noudattamalla näitä ohjeita: Pyyhi rivit yksi kerrallaan […]

Tyylikirjaston sisältö SharePoint 2010:ssä

Tyylikirjaston sisältö SharePoint 2010:ssä

Tyylikirjasto sisältää CSS-tiedostoja, Extensible Stylesheet Language (XSL) -tiedostoja ja kuvia, joita käyttävät ennalta määritetyt sivupohjat, sivuasettelut ja säätimet SharePoint 2010:ssä. CSS-tiedostojen etsiminen julkaisusivuston tyylikirjastosta: Valitse Sivuston toiminnot→ Näytä Kaikki sivuston sisältö. Sivuston sisältö tulee näkyviin. Style-kirjasto sijaitsee […]

Muotoile numerot tuhansiksi ja miljooniksi Excel-raporteissa

Muotoile numerot tuhansiksi ja miljooniksi Excel-raporteissa

Älä hukuta yleisöäsi jättimäisillä numeroilla. Microsoft Excelissä voit parantaa koontinäyttöjesi ja raporttiesi luettavuutta muotoilemalla numerot näyttämään tuhansia tai miljoonia.

SharePoint-sivustojen jakaminen ja seuraaminen

SharePoint-sivustojen jakaminen ja seuraaminen

Opi käyttämään SharePointin sosiaalisen verkostoitumisen työkaluja, joiden avulla yksilöt ja ryhmät voivat kommunikoida, tehdä yhteistyötä, jakaa ja pitää yhteyttä.

Kuinka muuntaa päivämäärät Julian-muotoihin Excelissä

Kuinka muuntaa päivämäärät Julian-muotoihin Excelissä

Juliaanisia päivämääriä käytetään usein valmistusympäristöissä aikaleimana ja pikaviitteenä eränumerolle. Tämän tyyppisen päivämääräkoodauksen avulla jälleenmyyjät, kuluttajat ja huoltoedustajat voivat tunnistaa tuotteen valmistusajankohdan ja siten tuotteen iän. Julian-päivämääriä käytetään myös ohjelmoinnissa, armeijassa ja tähtitiedessä. Erilainen […]

Access-verkkosovelluksen luominen

Access-verkkosovelluksen luominen

Voit luoda verkkosovelluksen Access 2016:ssa. Mikä verkkosovellus sitten on? No, verkko tarkoittaa, että se on verkossa, ja sovellus on vain lyhenne sanoista "sovellus". Mukautettu verkkosovellus on online-tietokantasovellus, jota käytetään pilvestä selaimen avulla. Rakennat ja ylläpidät verkkosovellusta työpöytäversiossa […]

Pikakäynnistyspalkki SharePoint 2010:ssä

Pikakäynnistyspalkki SharePoint 2010:ssä

Useimmat SharePoint 2010:n sivut näyttävät navigointilinkkien luettelon pikakäynnistyspalkissa sivun vasemmassa reunassa. Pikakäynnistyspalkki näyttää linkit esitellyn sivuston sisältöön, kuten luetteloihin, kirjastoihin, sivustoihin ja julkaisusivuihin. Pikakäynnistyspalkki sisältää kaksi erittäin tärkeää linkkiä: Koko sivuston sisältö -linkki: […]

Mitä Ratkaisijan virheilmoitukset Excelissä tarkoittavat?

Mitä Ratkaisijan virheilmoitukset Excelissä tarkoittavat?

Yksinkertaisille ongelmille Excelin Ratkaisija löytää yleensä nopeasti optimaaliset Ratkaisijamuuttujien arvot tavoitefunktiolle. Mutta joissakin tapauksissa Ratkaisijalla on vaikeuksia löytää Solver-muuttujan arvoja, jotka optimoivat tavoitefunktion. Näissä tapauksissa Ratkaisija näyttää yleensä viestin tai virheilmoituksen, joka kuvaa tai käsittelee ongelmaa, jonka […]