Exceli VBA funktsioonide õpetus: tagastamine, helistamine, näited
⚡ Nutikas kokkuvõte
Exceli VBA funktsioon on koodiplokk, mis täidab ülesande ja tagastab tulemuse sellele, millele seda kutsuti. See leht käsitleb deklaratsiooni süntaksit, väärtuse tagastamist, liitmise näidet ja funktsiooni kasutamist töölehe lahtris.

Mis on funktsioon?
Funktsioon on kooditükk, mis täidab konkreetset ülesannet ja tagastab tulemuse. Funktsioone kasutatakse enamasti korduvate toimingute tegemiseks, nagu andmete vormindamine väljundi jaoks, arvutuste tegemine jne.
Oletame, et sa oled arendajaping Programm, mis arvutab laenu intressi. Saate luua funktsiooni, mis aktsepteerib laenusummat ja tagasimakseperioodi. Seejärel saab funktsioon laenusummat ja tagasimakseperioodi kasutada intressi arvutamiseks ja väärtuse tagastamiseks.
Miks kasutada funktsioone
Funktsioonide kasutamise eelised on samad, mis alamprogrammide puhul loetletud: need jagavad pika programmi hallatavateks osadeks, neid saab projektis kõikjal uuesti kasutada ja kirjeldav nimi dokumenteerib koodi tegevust. Exceli VBA alamprogrammi õpetus katab need hüvitised täielikult.
Funktsioonide nimetamise reeglid
Nimereeglid on samuti identsed alamprogrammide omadega. Funktsiooni nimi ei tohi sisaldada tühikut, peab algama tähe või alakriipsuga ja ei tohi olla reserveeritud. VBA märksõna, näiteks Funktsioon, Privaatne või Lõpp.
VBA süntaks funktsiooni deklareerimiseks
Private Function myFunction (ByVal arg1 As Integer, ByVal arg2 As Integer) myFunction = arg1 + arg2 End Function
SIIN süntaksis,
| Code | tegevus |
|---|---|
|
|
|
|
|
|
|
|
Väärtuse tagastamine ja funktsiooni andmetüübi määramine
Funktsioonil on üks ülesanne, mida alamprogrammil pole: see annab väärtuse tagasi. Seda väärtust kontrollivad kaks detaili ja mõlemat on lihtne märkamata jätta.
Esimene on omistamine. VBA-l puudub Return-lause. Selle asemel omistatakse tulemus funktsiooni enda nimele, mistõttu rida on järgmine myFunction = arg1 + arg2Kui see omistamine kunagi ei käivitu, tagastab funktsioon vea tekitamise asemel märkamatult tühja väärtuse, seega peab iga koodiharu selle määrama.
Teine on tagastustüüp. Ülaltoodud deklaratsioon lõpeb sulgeva nurksuluga, seega tagastab funktsioon variandi. As-klausli lisamine nurksulgude järele fikseerib tüübi, mis on kiirem, kasutab vähem mälu ja võimaldab kompilaatoril mittevastavust tuvastada.
| deklaratsioon | Tagastamine | Millal seda kasutada |
|---|---|---|
| Funktsioon f(x nii kaua kui võimalik) | variant | Ainult siis, kui tulemuse tüüp on tõeliselt erinev. |
| Funktsioon f(x nii kaua kui pikk) nii kaua kui pikk | Pikk | Täisarvud, näiteks loendused ja reanumbrid |
| Funktsioon f(x nii kaua kui) Double | Double | Igasugune kümnendmurdudega arvutus |
| Funktsioon f(x) nii pikk kui string | nöör | Kuvamiseks tagastatud vormindatud tekst |
| Funktsioon f(x nii kaua kui Boole'i väärtus | Boolean | Valideerimiskontroll, mis vastab tõele või väärale |
💡 Näpunäide: Kui tagastusväärtus on määratud, kasutage funktsiooni Exit, et varem lahkuda, samamoodi nagu funktsioon Exit Sub lahkub alamprogrammist.
Funktsiooni demonstreeritud näitega:
Funktsioonid on väga sarnased alamprogrammiga. Peamine erinevus alamprogrammi ja funktsiooni vahel on see, et funktsioon tagastab kutsumisel väärtuse. Kui alamprogramm ei tagasta väärtust, siis selle kutsumisel. Oletame, et soovite lisada kaks numbrit. Saate luua funktsiooni, mis aktsepteerib kahte arvu ja tagastab arvude summa.
- Loo kasutajaliides
- Lisage funktsioon
- Kirjutage käsunupu kood
- Testige koodi
Step 1) Kasutajaliides
Lisage töölehel käsunupp, nagu allpool näidatud
Määrake nupu CommandButton1 järgmised omadused järgmisele väärtusele.
| S / N | Kontroll | vara | Väärtus |
|---|---|---|---|
| 1 | CommandButton1 | Eesnimi | btnAddNumbers |
| 2 | Pealkiri | lisama Numbers funktsioon |
Teie liides peaks nüüd välja nägema järgmine
Step 2) Funktsiooni kood.
- Koodiakna avamiseks vajutage Alt + F11
- Lisage järgmine kood
Private Function addNumbers(ByVal firstNumber As Integer, ByVal secondNumber As Integer) addNumbers = firstNumber + secondNumber End Function
SIIN koodis,
| Code | tegevus |
|---|---|
|
|
|
|
|
|
3. samm) Kirjutage Code mis kutsub funktsiooni
- Paremklõpsake nuppu LisaNumbers käsunupp
- Valige vaade Code
- Lisage järgmine kood
Private Sub btnAddNumbers_Click() MsgBox addNumbers(2, 3) End Sub
SIIN koodis,
| Code | tegevus |
|---|---|
| "SõnumBox lisamaNumbers(üks) " |
|
Step 4) Käivitage programm, saate järgmised tulemused
Laadige alla ülaltoodud koodi sisaldav Excel
Laadige alla ülaltoodud Exceli fail Code
Ülaltoodud nupp kutsub funktsiooni välja VBA-koodist. Funktsiooni saab kutsuda ka töölehelt endalt, ilma nuputa.
Kuidas kasutada VBA funktsiooni töölehe lahtris
VBA-s kirjutatud funktsiooni saab lahtrisse tippida täpselt nagu funktsiooni SUM või VLOOKUP. Excel nimetab seda kasutaja määratletud funktsiooniks ehk UDF-iks ja see on põhjus, miks paljud inimesed õpivad funktsioone enne alamprogramme. Täidetud peab olema kolm tingimust.
- Asetage see standardmoodulisse: Redaktoris käsk „Insert”, „Moodul”. Töölehe taha või sellesse töövihikusse salvestatud funktsioon pole valemiribal nähtav.
- Kuuluta see avalikuks: Ülaltoodud näites kasutatakse märksõna Private, mis peidab selle Exceli eest. Vaikimisi on see avalik, seega piisab lihtsalt märksõna eemaldamisest.
- Tagasta väärtus, midagi ei muuda: UDF ei saa lahtreid vormindada, ridu kustutada ega teise lahtrisse kirjutada. Excel blokeerib need toimingud ja lahter kuvab veateate #VALUE!.
Allolev funktsioon teisendab temperatuuri ja seda saab kasutada kõikjal lehel.
Public Function CelsiusToF(ByVal Celsius As Double) As Double CelsiusToF = (Celsius * 9 / 5) + 32 End Function
Salvestage töövihik makrotoega .xlsm-failina ja tippige seejärel =Celsiuse järgiF(A1) suvalisse lahtrisse. Tulemus värskendatakse iga kord, kui lahter A1 muutub, ja nimi kuvatakse valemi automaatse täitmise loendis kategoorias Kasutaja määratletud. Kuna töövihik sisaldab nüüd makrosid, peab igaüks, kes selle avab, lubama sisu enne, kui valem tagastab väärtuse, mitte #NIMI?.
Levinumad VBA funktsioonide vead ja kuidas neid parandada
Neli probleemi selgitavad enamiku funktsioone, mis kompileeruvad, aga tagastavad vale vastuse.
- Funktsioon tagastab väärtuse Tühi või 0: Tulemust ei määratud kunagi funktsiooni nimele või üks If-lause haru jätab määramise vahele. Määrake tagastusväärtus igale teele.
- #NIMI? töölehe lahtris: Funktsioon on privaatne, asub tavalise mooduli asemel lehemoodulis või töövihik salvestati ilma makrodeta.
- Ületäitumine täisarvuliste argumentidega: Näites kasutatakse As Integer funktsiooni, mis peatub arvul 32 767. Muutke mõlemad parameetrid ja tagastustüübiks Long kõigi reaalandmete korral.
- Muutunud argument üllatab helistajat: ByVali väljajätmine paneb VBA muutuja ise edastama, seega saab funktsioon kutsuja väärtust muuta. Kirjuta ByVal, kui seda efekti pole vaja.



