VBA-ohjelmoinnissa funktio palauttaa arvon. Voit suorittaa funktioproseduureja ja kutsua funktiota Excel 2016:ssa. Funktiot, toisin kuin aliproseduurit, voidaan suorittaa vain kahdella tavalla:
Kokeile tätä yksinkertaista toimintoa. Kirjoita se VBA-moduuliin:
Funktio CubeRoot(numero)
CubeRoot = numero ^ (1/3)
Lopeta toiminto
Tämä toiminto on melko tylsä; se vain laskee sille argumentiksi välitetyn luvun kuutiojuuren. Se tarjoaa kuitenkin lähtökohdan toimintojen ymmärtämiselle. Se havainnollistaa myös tärkeää funktioiden käsitettä: kuinka arvo palautetaan. (Muistatko, että funktio palauttaa arvon, eikö niin?)
Huomaa, että yksi koodirivi, joka muodostaa tämän funktioproseduurin, suorittaa laskutoimituksen. Matematiikan tulos (luku potenssilla 1/3) määrätään muuttujalle CubeRoot. Ei sattumalta, CubeRoot on myös funktion nimi. Voit määrittää funktiolle palautettavan arvon määrittämällä sen funktion nimeen.
Toiminnon kutsuminen alimenettelystä
Koska et voi suorittaa funktiota suoraan, sinun on kutsuttava se toisesta toimintosarjasta. Kirjoita seuraava yksinkertainen toimenpide samaan VBA-moduuliin, joka sisältää CubeRoot-toiminnon:
Sub CallerSub()
Ans = CubeRoot(125)
MsgBox Ans
Lopeta ala
Kun suoritat CallerSub-toimenpiteen, Excel näyttää viestiruudun, joka sisältää Ans-muuttujan arvon, joka on 5.
Näin tapahtuu: CubeRoot-funktio suoritetaan ja se saa argumentin 125. Laskenta suoritetaan funktion koodilla (käyttäen argumenttina välitettyä arvoa), ja funktion palauttama arvo määritetään Ans-muuttujalle. MsgBox-funktio näyttää sitten Ans-muuttujan arvon.
Yritä muuttaa CubeRoot-funktiolle välitettyä argumenttia ja suorita CallerSub-makro uudelleen. Se toimii aivan kuten sen pitäisi - olettaen, että annat funktiolle kelvollisen argumentin (positiivisen luvun).
Muuten, CallerSub-menettelyä voitaisiin yksinkertaistaa hieman. Ans-muuttujaa ei todellakaan tarvita, ellei koodisi käytä kyseistä muuttujaa myöhemmin. Voit käyttää tätä yhtä lausetta saadaksesi saman tuloksen:
MsgBox CubeRoot (125)
Funktion kutsuminen laskentataulukon kaavasta
Nyt on aika kutsua tämä VBA-funktiomenettely laskentataulukkokaavasta. Aktivoi laskentataulukko samassa työkirjassa, jossa on CubeRoot-funktion määritelmä. Kirjoita sitten seuraava kaava mihin tahansa soluun:
=Kuutiojuuri(1728)
Solussa näkyy 12, joka on todellakin luvun 1 728 kuutiojuuri.
Kuten saatat odottaa, voit käyttää soluviittausta CubeRoot-funktion argumenttina. Jos esimerkiksi solu A1 sisältää arvon, voit kirjoittaa =CubeRoot(A1) . Tässä tapauksessa funktio palauttaa luvun, joka on saatu laskemalla A1:n arvon kuutiojuuri.
Voit käyttää tätä toimintoa kuinka monta kertaa tahansa laskentataulukossa. Kuten Excelin sisäänrakennetut funktiot, mukautetut funktiosi näkyvät Lisää funktio -valintaikkunassa. Napsauta Työkalupalkin Lisää funktio -painiketta ja valitse Käyttäjän määrittämä luokka. Lisää funktio -valintaikkunassa luetellaan oma funktiosi.
CubeRoot-funktio näkyy Lisää funktio -valintaikkunan User Defined -luokassa.
Jos haluat Lisää funktio -valintaikkunan näyttävän funktion kuvauksen, toimi seuraavasti:
Valitse Kehittäjä → Koodi → Makrot.
Excel näyttää Makro-valintaikkunan, mutta CubeRoot ei näy luettelossa. (CubeRoot on funktiomenettely, ja tämä luettelo näyttää vain alitoimenpiteet.) Älä huoli.
Kirjoita sana CubeRoot makron nimi -ruutuun.
Napsauta Asetukset-painiketta.
Kirjoita toiminnon kuvaus Kuvaus-ruutuun.
Napsauta OK sulkeaksesi Makroasetukset-valintaikkunan.
Sulje Makro-valintaikkuna napsauttamalla Peruuta-painiketta.
Tämä kuvaava teksti näkyy nyt Lisää funktio -valintaikkunassa.
Tarkista laskentataulukoiden kaavoissa käytettävä CubeRoot-funktio.
CubeRoot-funktion käyttö kaavoissa.