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.

  • 🎯 Definicija: Funkcija izvršava određeni zadatak i vraća jedan rezultat pozivnom kodu.
  • 🧾 Sintaksa: Naziv funkcije (argumenti) Kao što Type otvara blok, a End Function ga zatvara.
  • ↩️ Vraćanje vrijednosti: Dodijelite rezultat nazivu funkcije, kao u addNumbers = prviBroj + drugiBroj.
  • 🔢 Vrsta povrata: Deklarisanje Dokle ili Do Double izbjegava sporiju zadanu varijantu.
  • 🖱️ Pozivanje: Naredbeni gumb prosljeđuje dva broja i prikazuje vraćeni zbroj u okviru za poruku.
  • 📊 Upotreba radnog lista: Javna funkcija u standardnom modulu postaje korisnički definirana formula u bilo kojoj ćeliji.

Excel VBA funkcija

Š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
  • “Privatna funkcija myFunction(…)”
  • Ovdje se ključna riječ "Function" koristi za deklariranje funkcije pod nazivom "myFunction" i pokretanje tijela funkcije.
  • Ključna riječ 'Privatno' koristi se za određivanje opsega funkcije
  • “ByVal arg1 kao cijeli broj, ByVal arg2 kao cijeli broj”
  • Deklarira dva parametra tipa cjelobrojnih podataka pod nazivom 'arg1' i 'arg2.'
  • mojaFunkcija = arg1 + arg2
  • procjenjuje izraz arg1 + arg2 i pridružuje rezultat nazivu funkcije.
  • “Završna funkcija”
  • "Kraj funkcije" se koristi za završetak tijela funkcije

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.

  1. Izradite korisničko sučelje
  2. Dodajte funkciju
  3. Napišite kod za naredbeni gumb
  4. Testirajte kod

Korak 1) Korisničko sučelje

Dodajte naredbeni gumb na radni list kao što je prikazano u nastavku

VBA funkcije i potprogrami

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

VBA funkcije i potprogrami

Korak 2) Kod funkcije.

  1. Pritisnite Alt + F11 da biste otvorili prozor koda
  2. 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
  • “Dodavanje privatne funkcijeNumbers(...) "
  • Deklariše privatnu funkciju “addNumbers” koji prihvaća dva cjelobrojna parametra.
  • “ByVal firstNumber kao cijeli broj, ByVal secondNumber kao cijeli broj”
  • Deklarira dvije varijable parametra firstNumber i secondNumber
  • "dodatiNumbers = prviBroj + drugiBroj”
  • Zbraja vrijednosti firstNumber i secondNumber i dodjeljuje zbroj za zbrajanjeNumbers.

Korak 3) Pisanje Code koja poziva funkciju

  1. Desni klik na btnAddNumbers naredbeni gumb
  2. Odaberite prikaz Code
  3. Dodajte sljedeći kod
Private Sub btnAddNumbers_Click()
    MsgBox addNumbers(2, 3)
End Sub

OVDJE u kodu,

Code Akcijski
“MsgBox dodateNumbers(jedan)"
  • Poziva funkciju addNumbers i prelazi u 2 i 3 kao parametre. Funkcija vraća zbroj dva broja pet (5)

Korak 4) Pokrenite program i dobit ćete sljedeće rezultate

VBA funkcije i potprogrami

Preuzmite Excel koji sadrži gornji kod

Preuzmite gornji Excel Code

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.

Pitanja i odgovori

Ne izravno. Vratite niz ili prilagođeni tip za nošenje nekoliko vrijednosti u jednom rezultatu ili deklarirajte dodatne parametre ByRef kako bi funkcija zapisivala natrag u varijable pozivatelja.

Dodajte ključnu riječ Optional s zadanom vrijednošću, kao u Optional ByVal Rate As Double = 0.05. Svaki parametar nakon opcionalnog također mora biti opcionalan i mora biti posljednji na popisu.

Da, putem Application.WorksheetFunction, na primjer Application.WorksheetFunction.Sum(Range(“A1:A10”)). Funkcije koje VBA već pruža, kao što su Left ili Trim, pozivaju se izravno bez tog prefiksa.

Da. Zalijepite formulu radnog lista i AI asistent vraća ekvivalentnu javnu funkciju s imenovanim argumentima i deklariranim tipom povrata. Usporedite oba rezultata na primjerima redaka prije zamjene formule.

Da. Navedite funkciju i formulu, a AI asistent će ukazati na uzroke kao što su neusklađenost vrste argumenta, nedostajuća dodjela povrata ili pokušaj promjene ćelije unutar korisnički definirane funkcije.

Sažmite ovu objavu uz: