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.

  • 🎯 Määratlus: Funktsioon täidab kindla ülesande ja tagastab kutsuvale koodile ühe tulemuse.
  • 🧾 süntaksit: Funktsiooni nimi(argumendid) Type-tüüpi plokk avatakse ja End-funktsioon sulgeb selle.
  • ↩️ Väärtuse tagastamine: Määrake tulemus funktsiooni nimele, näiteks lisaNumbers = esimearv + teinearv.
  • 🔢 Tagastustüüp: Nii pikaks või nii pikaks deklareerimine Double väldib aeglasemat vaikevarianti.
  • 🖱️ Helistamine: Käsunupp edastab kaks numbrit ja kuvab tagastatud summa teateaknas.
  • 📊 Töölehe kasutamine: Standardmooduli avalik funktsioon muutub mis tahes lahtris kasutaja määratletud valemiks.

Exceli VBA funktsioon

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
  • "Privaatne funktsioon myFunction(…)"
  • Siin kasutatakse märksõna "Function" funktsiooni "myFunction" deklareerimiseks ja funktsiooni põhiosa käivitamiseks.
  • Funktsiooni ulatuse täpsustamiseks kasutatakse märksõna 'Privaatne'
  • "ByVal arg1 täisarvuna, ByVal arg2 täisarvuna"
  • See deklareerib kaks täisarvulise andmetüübi parameetrit nimega 'arg1' ja 'arg2'.
  • myFunction = arg1 + arg2
  • hindab avaldist arg1 + arg2 ja määrab tulemuse funktsiooni nimele.
  • "Lõpetamisfunktsioon"
  • Funktsiooni põhiosa lõpetamiseks kasutatakse käsku „Lõppfunktsioon”.

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.

  1. Loo kasutajaliides
  2. Lisage funktsioon
  3. Kirjutage käsunupu kood
  4. Testige koodi

Step 1) Kasutajaliides

Lisage töölehel käsunupp, nagu allpool näidatud

VBA funktsioonid ja alamprogramm

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

VBA funktsioonid ja alamprogramm

Step 2) Funktsiooni kood.

  1. Koodiakna avamiseks vajutage Alt + F11
  2. Lisage järgmine kood
Private Function addNumbers(ByVal firstNumber As Integer, ByVal secondNumber As Integer)
    addNumbers = firstNumber + secondNumber
End Function

SIIN koodis,

Code tegevus
  • "Privaatfunktsiooni lisamineNumbers(…) ”
  • See deklareerib privaatfunktsiooni "addNumbers”, mis aktsepteerib kahte täisarvu parameetrit.
  • “ByVal firstNumber täisarvuna, ByVal secondNumber täisarvuna”
  • See deklareerib kaks parameetrimuutujat firstNumber ja secondNumber
  • "lisamaNumbers = esimeneNumber + teineNumber"
  • See lisab väärtused firstNumber ja secondNumber ning määrab liidetava summaNumbers.

3. samm) Kirjutage Code mis kutsub funktsiooni

  1. Paremklõpsake nuppu LisaNumbers käsunupp
  2. Valige vaade Code
  3. Lisage järgmine kood
Private Sub btnAddNumbers_Click()
    MsgBox addNumbers(2, 3)
End Sub

SIIN koodis,

Code tegevus
"SõnumBox lisamaNumbers(üks) "
  • See kutsub esile funktsiooni addNumbers ja annab parameetritena sisse 2 ja 3. Funktsioon tagastab kahe arvu viie (5) summa

Step 4) Käivitage programm, saate järgmised tulemused

VBA funktsioonid ja alamprogramm

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.

KKK

Mitte otse. Tagasta massiiv või kohandatud tüüp, et kanda ühes tulemuses mitu väärtust, või deklareeri lisaparameetrid ByRef, et funktsioon kirjutaks tagasi kutsuja muutujatesse.

Lisa valikuline märksõna vaikeväärtusega, näiteks valikulise ByVal Rate As abil. Double = 0.05. Iga parameeter pärast valikulist parameetrit peab samuti olema valikuline ja need peavad olema loendis viimased.

Jah, Application.WorksheetFunctioni kaudu, näiteks Application.WorksheetFunction.Sum(Range(“A1:A10”)). Funktsioonid, mida VBA juba pakub, näiteks Left või Trim, kutsutakse otse välja ilma selle eesliiteta.

Jah. Kleepige töölehe valem ja tehisintellekti assistent tagastab samaväärse avaliku funktsiooni nimega argumentide ja deklareeritud tagastustüübiga. Enne valemi asendamist võrrelge mõlemat tulemust näidisridadel.

Jah. Sisestage funktsioon ja valem ning tehisintellekti assistent osutab põhjustele, näiteks argumendi tüübi mittevastavusele, puuduvale tagastusväärtuse määramisele või katsele muuta lahtrit kasutaja määratletud funktsiooni seest.

Võta see postitus kokku järgmiselt: