Pripravimo lastne uporabniške funkcije v Excelu

Kako si lahko s pomočjo VBA funkcij poenostavimo kompleksne formule v Excelu

Excel je zelo uporabno orodje. V njem lahko pripravimo izračune za kredit, vodimo zalogo kumaric ali pripravljamo poslovne dokumente in vodimo poslovne evidence za manjše podjetje.

Vse to dosežemo z uporabo razpredelnic, vnešenih podatkov v posamezne celice, ter formul, ki nam iz obstoječih podatkov pripravljajo nove. Včasih lahko te formule postanejo zelo dolge in komplicirane, kar nam zelo oteži iskanje napak, kadar gre kaj narobe. Zelo bi nam pomagalo, če bi lahko formulo uredili v berljivo obliko ali jo celo natisnili na papir (lahko tudi v .pdf datoteko, le da je potem teže z markerjem označevati besedilo).

Tu nam lahko na pomoč priskoči funkcionalnost, ki je vgrajena v sam Excel, vendar je v osnovi namenjena programerjem, zato je nekoliko skrita. Kljub temu pa je ta funkcionalnost z nekaj pomoči dostopna tudi naprednejšim uporabnikom Excela. Pravzaprav, če ste kdaj posneli kak skript (Macro), potem ste nevede to funkcionalnost že uporabili.

Razlika med skripti in funkcijami je v tem, da skript izvede neko opravilo, funkcija pa nam vrne neko vrednost v celico, po možnosti gre za izračun, kjer za vhodne podatke uporabi parametre, ki smo jih vnesli v prostor za imenom funkcije znotraj oklepaja:

=SUM(B1:B4)

ali morda

=MAX(B1;B3;B5)

Da stvari ne bodo postale preveč abstraktne, bomo za začetek naredili preprosto funkcijo, ki bo parametru prištela 5 in vrnila vrednost v celico. Poimenovali jo bomo Plus5 in bo imela en parameter. Zaradi enostavnosti bomo domnevali, da je parameter število, zato bomo izpustili kodo, ki preverja, če je s parametrom vse v redu. Klic bo izgledal nekako takole:

=Plus5(7)

Ali

=Plus5(C1)

Za začetek se moramo prepričati, če imamo v Excelu omogočen jeziček za razvijalce. Kako ga omogočimo v Excelu 2007 je opisano v članku »Kako v Excelu sprogramirati spletni brskalnik«.

Zavihek Razvijalec

Za višje verzije (2010, 2013, 2016, 2019, 2021, 365), pa najprej izberemo zavihek »Datoteka« in na njem izbiro »Možnosti«.

Zavihek Datoteka

Odpre se nam okno za urejanje nastavitev. Ob strani izberemo izbiro »Prilagoditev traku« in v desnem okvirju odkljukamo oznako »Razvijalec«.

Okno nastavitev

Sedaj smo pripravljeni za svojo prvo funkcijo. Začeli bomo s klikom na jeziček "Razvijalec" in izbrali ikono pod katero piše Visual Basic:

Ikona VBA

Odpre se nam urejevalnik VBA programov. Izberemo podokno "Project". V oknu je vidna drevesna struktura našega projekta:

Drevo projekta

Postavimo se (s kazalcem miške) na postavko "Microsoft Excel Objects" in kliknemo desni gumb miške. Odpre se nam podmeni z ukazi. Postavimo se na postavko Insert in odpre se nam okno s podmenijem. Na tem podmeniju izberemo "Module". Drevo v podoknu Project se spremeni tako, da je viden novi modul, ki smo ga dodali projektu:

Drevo projekta

Excel nam je dodeli ime tega modula kar Module1, ki ga lahko, če želimo, spremenimo. Najbolj pripravno je, če ime modula odraža vrsto funkcij, ki se v njem nahajajo. Ker bo v tem modulu poskusna funkcija mu bomo ime spremenili v "Poskusi":

Drevo projekta

V sosednjem oknu začnemo z vnosom kode:

	
		Public Function Plus5(ByVal dblVnos As Double) As Double
		  Plus5 = dblVnos + 5
		End Function
	
	

Funkcijo še prevedemo tako, da v meniju izberemo "Debug-->Compile VBA Project" in naša funkcija je pripravljena za uporabo.

Sedaj izberemo Excelovo tabelo in vnesemo v stolpec nekaj številk. V sosednji stolpec vnesemo izraz: =Plus5(A1). Formulo še kopiramo v celoten stolpec:

Test funkcije

Pri shranjevanju delovnega zvezka moramo biti pozorni, da je potrebno izbrati tip "Excelov delovni zvezek z makri".