Vodič za Excel VBA funkcije: Povratak, poziv, primjeri
⚡ Pametni sažetak
Excel VBA funkcija je blok koda koji izvršava zadatak i vraća rezultat onome što ga je pozvalo. Ova stranica pokriva sintaksu deklaracije, vraćanje vrijednosti, primjer izračunatog zbrajanja i korištenje funkcije unutar ćelije radnog lista.

Što je funkcija?
Funkcija je dio koda koji izvršava određeni zadatak i vraća rezultat. Funkcije se uglavnom koriste za izvršavanje zadataka koji se ponavljaju kao što su formatiranje podataka za izlaz, izvođenje izračuna itd.
Pretpostavimo da ste razvijeniping program koji izračunava kamate na zajam. Možete stvoriti funkciju koja prihvaća iznos zajma i razdoblje otplate. Funkcija zatim može koristiti iznos zajma i razdoblje otplate za izračun kamate i vraćanje vrijednosti.
Zašto koristiti funkcije
Prednosti korištenja funkcija iste su kao i one navedene za potprograme: one dijele dugi program na upravljive dijelove, mogu se ponovno koristiti s bilo kojeg mjesta u projektu, a opisni naziv dokumentira što kod radi. Vodič za Excel VBA potprograme pokriva te pogodnosti u cijelosti.
Pravila imenovanja funkcija
Pravila imenovanja su također identična onima za potprograme. Naziv funkcije ne smije sadržavati razmak, mora započeti slovom ili podcrtom i ne smije biti rezervirana VBA ključna riječ kao što su Funkcija, Privatno ili Kraj.
VBA sintaksa za deklariranje funkcije
Private Function myFunction (ByVal arg1 As Integer, ByVal arg2 As Integer) myFunction = arg1 + arg2 End Function
OVDJE u sintaksi,
| Code | Akcijski |
|---|---|
|
|
|
|
|
|
|
|
Kako vratiti vrijednost i postaviti tip podataka funkcije
Funkcija ima jedan zadatak koji Podprogram nema: vraća vrijednost. Dva detalja kontroliraju tu vrijednost i oba je lako previdjeti.
Prvo je dodjeljivanje. VBA nema naredbu Return. Umjesto toga, rezultat dodjeljujete vlastitom nazivu funkcije, zbog čega redak glasi mojaFunkcija = arg1 + arg2Ako se ta dodjela nikada ne izvrši, funkcija tiho vraća praznu vrijednost umjesto da izazove grešku, pa je svaka grana koda mora postaviti.
Drugi je tip povrata. Gornja deklaracija završava zatvarajućom zagradom, pa funkcija vraća Variant. Dodavanje klauzule As nakon zagrada ispravlja tip, što je brže, koristi manje memorije i omogućuje kompajleru da uhvati neusklađenost.
| izjava | Povratak | Kada ga koristiti |
|---|---|---|
| Funkcija f(x sve do) | Varijanta | Samo kada se vrsta rezultata zaista razlikuje |
| Funkcija f(x sve dok) sve dok | Dug | Cijeli brojevi kao što su brojevi i brojevi redaka |
| Funkcija f(x sve dok) sve dok Double | Double | Bilo koji izračun koji daje decimale |
| Funkcija f(x dugačka) kao niz znakova | Niz | Formatirani tekst vraćen za prikaz |
| Funkcija f(x sve do) kao logička | Booleova | Provjera valjanosti odgovara na pitanje točno ili netočno |
💡 Savjet: Koristite funkciju Exit za prijevremeni izlaz nakon što je povratna vrijednost postavljena, na isti način na koji funkcija Exit Sub napušta podrutinu.
Funkcija prikazana primjerom:
Funkcije su vrlo slične potprogramu. Glavna razlika između potprograma i funkcije je u tome što funkcija vraća vrijednost kada se pozove. Dok potprogram ne vraća vrijednost kada se pozove. Recimo da želite zbrojiti dva broja. Možete stvoriti funkciju koja prihvaća dva broja i vraća zbroj brojeva.
- Izradite korisničko sučelje
- Dodajte funkciju
- Napišite kod za naredbeni gumb
- Testirajte kod
Korak 1) Korisničko sučelje
Dodajte naredbeni gumb na radni list kao što je prikazano u nastavku
Postavite sljedeća svojstva CommandButton1 na sljedeće.
| S / N | kontrola | Svojstvo | Još malo brojeva |
|---|---|---|---|
| 1 | CommandButton1 | Ime | btnDodajNumbers |
| 2 | Naslov | dodati Numbers funkcija |
Vaše sučelje sada bi trebalo izgledati na sljedeći način
Korak 2) Kod funkcije.
- Pritisnite Alt + F11 da biste otvorili prozor koda
- Dodajte sljedeći kod
Private Function addNumbers(ByVal firstNumber As Integer, ByVal secondNumber As Integer) addNumbers = firstNumber + secondNumber End Function
OVDJE u kodu,
| Code | Akcijski |
|---|---|
|
|
|
|
|
|
Korak 3) Pisanje Code koja poziva funkciju
- Desni klik na btnAddNumbers naredbeni gumb
- Odaberite prikaz Code
- Dodajte sljedeći kod
Private Sub btnAddNumbers_Click() MsgBox addNumbers(2, 3) End Sub
OVDJE u kodu,
| Code | Akcijski |
|---|---|
| “MsgBox dodateNumbers(jedan)" |
|
Korak 4) Pokrenite program i dobit ćete sljedeće rezultate
Preuzmite Excel koji sadrži gornji kod
Gornji gumb poziva funkciju iz VBA koda. Funkcija se također može pozvati iz samog radnog lista, bez ikakvog gumba.
Kako koristiti VBA funkciju u ćeliji radnog lista
Funkcija napisana u VBA-i može se upisati u ćeliju točno kao SUM ili VLOOKUP. Excel to naziva korisnički definirana funkcija ili UDF i to je razlog zašto mnogi ljudi uče funkcije prije potprograma. Moraju biti ispunjena tri uvjeta.
- Postavite ga u standardni modul: Umetni, Modul u editoru. Funkcija pohranjena iza radnog lista ili u ThisWorkbook nije vidljiva u traci formule.
- Proglasite to javnim: Gornji primjer koristi opciju Privatno, što je skriva od Excela. Javno je zadana postavka, pa je dovoljno jednostavno uklanjanje ključne riječi.
- Vrati vrijednost, ne mijenjaj ništa: UDF ne može formatirati ćelije, brisati retke ili pisati u drugu ćeliju. Excel blokira te radnje i ćelija prikazuje #VALUE!.
Funkcija u nastavku pretvara temperaturu i može se koristiti bilo gdje na listu.
Public Function CelsiusToF(ByVal Celsius As Double) As Double CelsiusToF = (Celsius * 9 / 5) + 32 End Function
Spremite radnu knjigu kao .xlsm datoteku s omogućenim makroima, a zatim upišite =CelzijusDoF(A1) u bilo koju ćeliju. Rezultat se ažurira svaki put kada se promijeni A1, a naziv se pojavljuje na popisu za automatsko dovršavanje formula u kategoriji Korisnički definirano. Budući da radna knjiga sada sadrži makroe, svatko tko je otvori mora omogućiti sadržaj prije nego što formula vrati vrijednost, a ne #NAME?.
Uobičajene pogreške VBA funkcija i kako ih ispraviti
Četiri problema objašnjavaju većinu funkcija koje se kompajliraju, ali vraćaju pogrešan odgovor.
- Funkcija vraća Prazno ili 0: Rezultat nikada nije dodijeljen nazivu funkcije ili jedna grana If naredbe preskače dodjelu. Postavite povratnu vrijednost na svaki put.
- #NAME? u ćeliji radnog lista: Funkcija je privatna, nalazi se u modulu lista umjesto u standardnom modulu ili je radna knjiga spremljena bez omogućenih makronaredbi.
- Prelijevanje s cjelobrojnim argumentima: Primjer koristi As Integer, koji se zaustavlja na 32 767. Promijenite oba parametra i tip povrata na Long za sve stvarne podatke.
- Promijenjeni argument iznenađuje pozivatelja: Izostavljanjem ByVal-a VBA prosljeđuje samu varijablu, tako da funkcija može promijeniti vrijednost pozivatelja. Napišite ByVal osim ako taj učinak nije potreban.



