Excel VBA Function Tutorial: Paluu, Soita, Esimerkkejä

⚡ Älykäs yhteenveto

Excelin VBA-funktio on koodilohko, joka suorittaa tehtävän ja palauttaa tuloksen sille, mitä sitä kutsutaan. Tämä sivu käsittelee deklarointisyntaksia, arvon palauttamista, laskennallisen laskutoimituksen esimerkkiä ja funktion käyttöä laskentataulukon solussa.

  • 🎯 Määritelmä: Funktio suorittaa tietyn tehtävän ja palauttaa yhden tuloksen kutsuvalle koodille.
  • 🧾 Syntaksi: Funktion nimi(argumentit) As Type avaa lohkon ja End Function sulkee sen.
  • ↩️ Arvon palauttaminen: Sijoita tulos funktion nimeen, kuten muodossa addNumbers = ekaNumero + toisNumero.
  • 🔢 Palautustyyppi: Niin pitkän tai niin pitkän julistaminen Double välttää hitaampaa oletusvarianttia.
  • 🖱️ Kutsumus: Komentopainike välittää kaksi numeroa ja näyttää palautetun summan viestiruudussa.
  • 📊 Työarkin käyttö: Vakiomoduulin julkinen funktio muuttuu käyttäjän määrittämäksi kaavaksi missä tahansa solussa.

Excelin VBA-funktio

Mikä on funktio?

Funktio on koodinpätkä, joka suorittaa tietyn tehtävän ja palauttaa tuloksen. Toimintoja käytetään enimmäkseen toistuvien tehtävien suorittamiseen, kuten tietojen muotoiluun tulostusta varten, laskelmien suorittamiseen jne.

Oletetaan, että olet kehittynytping Ohjelma, joka laskee lainan korot. Voit luoda funktion, joka hyväksyy lainasumman ja takaisinmaksuajan. Funktio voi sitten käyttää lainasummaa ja takaisinmaksuaikaa koron laskemiseen ja arvon palauttamiseen.

Miksi käyttää toimintoja

Funktioiden käytön edut ovat samat kuin aliohjelmilla luetellut: ne jakavat pitkän ohjelman hallittaviin osiin, niitä voidaan käyttää uudelleen mistä tahansa projektin kohdassa ja kuvaava nimi dokumentoi, mitä koodi tekee. Excel VBA -aliohjelman opetusohjelma kattaa nuo edut kokonaisuudessaan.

Funktioiden nimeämissäännöt

Nimeämissäännöt ovat myös samat kuin aliohjelmilla. Funktion nimi ei voi sisältää välilyöntiä, sen on alettava kirjaimella tai alaviivalla, eikä se saa olla varattu. VBA avainsana, kuten Funktio, Yksityinen tai Loppu.

VBA-syntaksi funktion ilmoittamiseen

Private Function myFunction (ByVal arg1 As Integer, ByVal arg2 As Integer)
    myFunction = arg1 + arg2
End Function

TÄÄLLÄ syntaksissa,

Code Toiminta
  • "Yksityinen toiminto myFunction(…)"
  • Tässä avainsanaa "Function" käytetään ilmoittamaan "myFunction"-niminen funktio ja aloittamaan funktion runko.
  • Avainsanaa 'Private' käytetään määrittämään toiminnon laajuus
  • "ByVal arg1 kokonaislukuna, ByVal arg2 kokonaislukuna"
  • Se ilmoittaa kaksi kokonaislukutietotyypin parametria nimeltä "arg1" ja "arg2".
  • myFunction = arg1 + arg2
  • arvioi lausekkeen arg1 + arg2 ja liittää tuloksen funktion nimeen.
  • "Lopputoiminto"
  • ”Lopeta funktio” -komentoa käytetään funktion rungon lopettamiseen

Arvon palauttaminen ja funktion tietotyypin asettaminen

Funktiolla on yksi tehtävä, jota aliohjelmalla ei ole: se palauttaa arvon. Kaksi yksityiskohtaa ohjaa tätä arvoa, ja molemmat on helppo unohtaa.

Ensimmäinen on sijoitus. VBA:ssa ei ole Return-lausetta. Sen sijaan tulos sijoitetaan funktion omaan nimeen, minkä vuoksi rivillä lukee myFunction = arg1 + arg2Jos kyseinen sijoitus ei koskaan suoriteta, funktio palauttaa hiljaa tyhjän arvon virheen sijaan, joten jokaisen koodin haaran on asetettava se.

Toinen on paluutyyppi. Yllä oleva deklaraatio päättyy sulkevaan hakasulkeeseen, joten funktio palauttaa Variant-tyypin. As-lauseen lisääminen hakasulkeiden jälkeen korjaa tyypin, mikä on nopeampi, käyttää vähemmän muistia ja antaa kääntäjälle mahdollisuuden havaita epäsuhta.

Ilmoitus Palautukset Milloin sitä käytetään
Funktio f(x niin kauan kuin) variantti Vain silloin, kun tulostyyppi todella vaihtelee
Funktio f(x Niin kauan) Niin kauan Pitkät Kokonaisluvut, kuten lukumäärät ja rivinumerot
Funktio f(x Niin kauan kuin) Double Double Mikä tahansa desimaaleja tuottava laskutoimitus
Funktio f(x) merkkijonona jono Muotoiltu teksti palautettiin näytettäväksi
Funktio f(x As Long) As Boole-funktio boolean Vahvistustarkistus vastaa oikein tai väärin

💡 Vinkki: Käytä Exit-funktiota poistuaksesi aikaisemmin, kun paluuarvo on asetettu, samalla tavalla kuin Exit Sub poistuu aliohjelmasta.

Toiminto esitellään esimerkillä:

Toiminnot ovat hyvin samanlaisia ​​kuin aliohjelma. Suurin ero aliohjelman ja funktion välillä on, että funktio palauttaa arvon, kun sitä kutsutaan. Vaikka aliohjelma ei palauta arvoa, kun sitä kutsutaan. Oletetaan, että haluat lisätä kaksi numeroa. Voit luoda funktion, joka hyväksyy kaksi numeroa ja palauttaa lukujen summan.

  1. Luo käyttöliittymä
  2. Lisää funktio
  3. Kirjoita komentopainikkeen koodi
  4. Testaa koodi

Vaihe 1) Käyttöliittymä

Lisää komentopainike laskentataulukkoon alla olevan kuvan mukaisesti

VBA-funktiot ja aliohjelma

Aseta CommandButton1:n seuraavat ominaisuudet seuraaviin arvoihin.

S / N Valvonta: Omaisuus Arvo
1 Komentopainike1 Nimi btnAddNumbers
2 Kuvateksti Lisää Numbers Toiminto

Käyttöliittymäsi pitäisi nyt näyttää seuraavalta

VBA-funktiot ja aliohjelma

Vaihe 2) Toimintokoodi.

  1. Avaa koodiikkuna painamalla Alt + F11
  2. Lisää seuraava koodi
Private Function addNumbers(ByVal firstNumber As Integer, ByVal secondNumber As Integer)
    addNumbers = firstNumber + secondNumber
End Function

TÄÄLLÄ koodissa,

Code Toiminta
  • "Yksityinen toiminto lisäysNumbers(…)”
  • Se ilmoittaa yksityisen toiminnon "addNumbers", joka hyväksyy kaksi kokonaislukuparametria.
  • "ByVal firstNumber kokonaislukuna, ByVal secondNumber kokonaislukuna"
  • Se ilmoittaa kaksi parametrimuuttujaa firstNumber ja secondNumber
  • "lisätäNumbers = ensimmäinenNumber + toinenNumber"
  • Se lisää firstNumber- ja secondNumber-arvot ja määrittää lisättävän summanNumbers.

Vaihe 3) Kirjoita Code joka kutsuu funktiota

  1. Napsauta hiiren kakkospainikkeella Lisää-painikettaNumbers komentopainike
  2. Valitse näkymä Code
  3. Lisää seuraava koodi
Private Sub btnAddNumbers_Click()
    MsgBox addNumbers(2, 3)
End Sub

TÄÄLLÄ koodissa,

Code Toiminta
"ViestiBox lisätäNumbers(2,3)”
  • Se kutsuu funktiota addNumbers ja antaa parametreiksi 2 ja 3. Funktio palauttaa kahden luvun viisi (5) summan

Vaihe 4) Suorita ohjelma, saat seuraavat tulokset

VBA-funktiot ja aliohjelma

Lataa Excel, joka sisältää yllä olevan koodin

Lataa yllä oleva Excel-tiedosto Code

Yllä oleva painike kutsuu funktiota VBA-koodista. Funktiota voidaan kutsua myös itse laskentataulukosta ilman painiketta.

VBA-funktion käyttäminen laskentataulukon solussa

VBA:lla kirjoitettu funktio voidaan kirjoittaa soluun täsmälleen samalla tavalla kuin SUMMA tai PHAKU. Excel kutsuu tätä käyttäjän määrittämäksi funktioksi eli UDF:ksi, ja siksi monet ihmiset oppivat funktiot ennen aliohjelmia. Kolmen ehdon on täytyttävä.

  • Aseta se vakiomoduuliin: Lisää, Moduuli editorissa. Laskentataulukon taakse tai ThisWorkbook-kansioon tallennettu funktio ei näy kaavarivillä.
  • Julista se julkiseksi: Yllä olevassa esimerkissä käytetään Private-asetusta, joka piilottaa sen Excelistä. Julkinen on oletusarvo, joten pelkkä avainsanan poistaminen riittää.
  • Palauta arvo, älä muuta mitään: UDF ei voi muotoilla soluja, poistaa rivejä tai kirjoittaa toiseen soluun. Excel estää nämä toiminnot ja solussa näkyy #ARVO!.

Alla oleva funktio muuntaa lämpötilan ja sitä voidaan käyttää missä tahansa taulukon kohdassa.

Public Function CelsiusToF(ByVal Celsius As Double) As Double
    CelsiusToF = (Celsius * 9 / 5) + 32
End Function

Tallenna työkirja makroita tukevana .xlsm-tiedostona ja kirjoita sitten =CelsiusF(A1) mihin tahansa soluun. Tulos päivittyy aina, kun solu A1 muuttuu, ja nimi näkyy kaavan automaattisen täydennyksen luettelossa Käyttäjän määrittämät -luokassa. Koska työkirja sisältää nyt makroja, sen avaavan on otettava sisältö käyttöön ennen kuin kaava palauttaa arvon #NIMI?-virheen sijaan.

Yleisiä VBA-funktiovirheitä ja niiden korjaaminen

Neljä ongelmaa selittää useimmat funktiot, jotka kääntyvät, mutta palauttavat väärän vastauksen.

  • Funktio palauttaa arvon Tyhjä tai 0: Tulosta ei koskaan liitetty funktion nimeen, tai yksi If-lausekkeen haara ohittaa liittämisen. Aseta paluuarvo jokaiselle polulle.
  • #NIMI? laskentataulukon solussa: Funktio on yksityinen, sijaitsee taulukkomoduulissa vakiomoduulin sijaan tai työkirja tallennettiin ilman, että makrot ovat käytössä.
  • Ylivuoto kokonaislukuargumenteilla: Esimerkissä käytetään As Integer -muotoa, joka pysähtyy lukuun 32 767. Muuta molemmat parametrit ja paluutyyppi Long-arvoksi kaikille reaalilukutiedoille.
  • Muuttunut argumentti yllättää soittajan: ByVal-muuttujasta luopuminen pakottaa VBA:n välittämään muuttujan itse, joten funktio voi muuttaa kutsujan arvoa. Kirjoita ByVal, ellet halua tätä vaikutusta.

UKK

Ei suoraan. Palauttaa taulukon tai mukautetun tyypin useiden arvojen sisällyttämiseksi yhteen tulokseen tai määrittää ylimääräiset ByRef-parametrit, jotta funktio kirjoittaa takaisin kutsujan muuttujiin.

Lisää valinnainen avainsana oletusarvolla, kuten kohdassa Optional ByVal Rate As Double = 0.05. Jokaisen valinnaisen parametrin jälkeen olevan parametrin on myös oltava valinnainen, ja niiden on oltava luettelon viimeisiä.

Kyllä, Application.WorksheetFunction-funktion kautta, esimerkiksi Application.WorksheetFunction.Sum(Range(“A1:A10”)). VBA:ssa jo valmiiksi olevat funktiot, kuten Left tai Trim, kutsutaan suoraan ilman kyseistä etuliitettä.

Kyllä. Liitä laskentataulukon kaava, niin tekoälyavustaja palauttaa vastaavan julkisen funktion nimetyillä argumenteilla ja ilmoitetulla paluutyypillä. Vertaa molempia tuloksia esimerkkiriveillä ennen kaavan korvaamista.

Kyllä. Syötä funktio ja kaava, niin tekoälyavustaja osoittaa syihin, kuten argumenttityypin ristiriitaan, puuttuvaan paluuarvon määritysarvoon tai yritykseen muuttaa solua käyttäjän määrittämän funktion sisältä.

Tiivistä tämä viesti seuraavasti: