Ugrađene vizualne matematičke funkcije. Ugrađene značajke vizualnog osnovnog. Funkcije provjere

Postupak funkcije - Ovo je posebna vrsta VBA procedura koja vraća rezultat. Prilagođene funkcije postupke, kao što su ugrađene VBA funkcije, mogu imati opcionalne i pod nazivom argumente. Za pisanje funkcijskih postupaka ne možete koristiti makrorecorener, iako možete urediti makronaredbu zabilježiti rekorderom i pretvoriti ga u funkciju postupka.

Glavna razlika između postupka funkcije i drugih postupaka, osim povrata funkcija i postupaka - ne, je da se ključne riječi koriste u funkciji postupka Funkcija. i Završna funkcija..

Sintaksa:

Naziv funkcije ()
"VBA izjave
Završna funkcija.

Funkcija je ključna riječ koja najavljuje početak funkcije.

Ime je ime funkcije. Nazivi funkcija slijede ista pravila kao i imena drugih VBA identifikatora.

Arglist - popis argumenata ove funkcije, izborni predmet.

Vrsta - bilo koju vrstu vrijednosti povratka. Ako tip nije definiran, rezultat koji vraća postupak funkcije ima vrstu varijante.

Ime \u003d izraz - dodjeljivanje funkcije koja označava VBA, koja vrijednost treba vratiti funkciju, opcionalnu stavku. Međutim, uvijek biste trebali uključiti operatera zadatka u postupak funkcije.

Kraj funkcija - Ključne riječi završavaju funkciju.


Čak i ako funkcija nema argumente (na primjer, sada, datum) u deklaraciji funkcije koju trebate koristiti za ugradnju.

Obično funkcija je namijenjena za izračun i povratak rezultata. Prilikom proglašenja postupka funkcije navedeno je naziv svakog prenošenja argumenta. Imena argumenata na popisu su odvojeni jedan od drugog od zareza i moraju slijediti pravila koja se primjenjuju na bilo koji VBA identifikator.


U nastavku je uvrštenje korištenja najjednostavnijeg postupka funkcije, koji uklanja početne i konačne praznine i izračunava broj znakova u izrazu.



Bez korištenja funkcije, popis bi izgledao ovako:



Iz ovog jednostavnog primjera, mislim da je osnovna ideja korištenja funkcija funkcioniranja funkcije je jasna - poboljšanje čitljivosti programskog koda i njezina kratica (drugim riječima, postupak funkcije je napisan kada je isti "komad" kod " je više od 2-3 puta u programu). Doista, ako se naša funkcija postupka sastojala ne iz jedne linije, ali recimo, od 10 redaka; A programski kôd bi koristio ovu funkcijsku proceduru 5 puta, ukupni popis programa bio bi manji od 38 linija.


Kao što je već već spomenuto, VBA prenosi sve argumente u funkciji postupka kao varijantne vrste. Možete proglasiti određene vrste podataka za svaki argument na popisu argumenata.

Prije nego što počnete stvarati vlastite VBA funkcije, korisno je znati da Excel VBA ima opsežnu zbirku gotovih ugrađenih funkcija koje se mogu koristiti prilikom pisanja koda.

Popis ovih funkcija može se vidjeti u VBA Editor:

  • Otvorite Excel radnu knjigu i pokrenite VBA urednik (kliknite na ovo Alt + f11), a zatim kliknite F2..
  • Na padajućem popisu na gornjoj lijevoj strani zaslona odaberite knjižnicu VBA..
  • Pojavit će se popis ugrađenih klasa i VBA funkcija. Kliknite na naziv funkcije tako da se njegov kratki opis prikazuje na dnu prozora. Prešanje F1 Otvorite stranicu za pomoć na mreži za ovu značajku.

Osim toga, kompletan popis ugrađenih VBA funkcija s primjerima možete pronaći na web stranici Visual Basic Developer.

Korisnički postupci "Funkcija" i "Sub" u VBA

U Excel Visual Basic, u postupku se nalazi skup naredbi koje obavljaju određeni zadatak Funkcija. (Funkcija) ili Pod. (Potprogram). Glavna razlika između postupaka Funkcija. i Pod. je to postupak Funkcija. Vraća rezultat, postupak Pod. - Ne.

Stoga, ako želite obaviti radnje i dobiti neki rezultat (na primjer, sažeti nekoliko brojeva), tada se postupak obično koristi Funkcija., i kako biste jednostavno izvršili neke radnje (na primjer, promijenite oblikovanje grupe stanica), morate odabrati postupak Pod..

Argumenti

Uz pomoć argumenata, različiti podaci mogu se prenijeti na VBA postupke. Popis argumenata je naveden prilikom proglašenja postupka. Na primjer, postupak Pod. U VBA dodaje određeni cijeli broj (cijeli broj) na svaku ćeliju u posvećenom rasponu. Za prijenos postupka Ovaj broj je moguć uz pomoć argumenta, ovako:

Sub addtocells (i kao cijeli broj) ... kraj

Imajte na umu da prisutnost argumenata za postupke Funkcija. i Pod. VBA je opcionalno. Za neke postupke, argumenti nisu potrebni.

Izborni argumenti

VBA postupci mogu imati dodatne argumente. To su argumenti koje korisnik može odrediti želi li, a ako su preskočeni, postupak koristi zadane vrijednosti za njih.

Vrativši se na prethodni primjer kako bi se napravio cijeli argument funkcije opcionalno, mora biti najavljeno ovako:

Sub addtocells (opcionalno i integer \u003d 0)

U ovom slučaju, cijeli broj argument i. Zadana će biti 0.

Dodatni argumenti u postupku mogu biti nekoliko, svi su navedeni na kraju popisa argumenata.

Prijenos argumenata po vrijednosti i referenca

Argumenti u VBA mogu se prenijeti na postupak na dva načina:

  • Bywal. - Prijenos argumenta po vrijednosti. To znači da se postupak prenosi samo na vrijednost (to jest, kopija argumenta), a time i sve promjene s argumentom u postupku bit će izgubljene nakon izlaza iz nje.
  • Byref. - prijenos argumenta prema referenci. To jest, postupak se prenosi stvarna adresa stavljanja argumenta u memoriju. Sve promjene s argumentom unutar postupka bit će spremljene prilikom napuštanja postupka.

S ključnim riječima Bywal. ili Byref. U izjavi o postupku možete pitati kako se argument prenosi na postupak. To je prikazano ispod primjera:

Zapamtite da se argumenti u VBA prenose prema zadanim postavkama. Drugim riječima, ako se ne koriste ključne riječi Bywal. ili Byref.Argument će se prenijeti referencom.

Prije nastavka proučavanja postupaka Funkcija. i Pod. Detaljnije, bit će korisno pogledati značajke ove dvije vrste postupaka. Sljedeće su kratke rasprave VBA procedure. Funkcija. i Pod. I prikazani su jednostavni primjeri.

VBA procedura "funkcija"

VBA urednik prepoznaje postupak Funkcija.

Funkcija ... kraj funkcije

Kao što je ranije spomenuto, postupak Funkcija. u VBA (za razliku od Pod.) Vraća vrijednost. Za vraćene vrijednosti primjenjuju se sljedeća pravila:

  • Vrsta podataka vraćene vrijednosti mora se proglasiti u zaglavlju postupka Funkcija..
  • Varijabla koja sadrži povratnu vrijednost mora biti imenovana kao i postupak Funkcija., Ova varijabla ne mora biti najavljena odvojeno, jer uvijek postoji kao sastavni dio postupka Funkcija..

Ovo je izvrsno ilustrirano u sljedećem primjeru.

Primjer VBA procedura "Funkcija": Provodimo matematički rad s 3 broja

Ispod je primjer VBA procedura koda. Funkcija.koji prima tri argumenta Dvostruko. (Brojevi s plutajućom točnosti dvojne točnosti). Kao rezultat toga, postupak vraća još jedan broj Dvostruko.jednak zbroju prvih dvaju argumenata minus treći argument:

Funkcija Summus (DNUM1 kao dvostruki, Dnum2 kao dvostruki, Dnum3 kao dvostruki) kao dvostruki Summus \u003d Dnum1 + Dnum2 - Dnum3 kraj funkcije

Ovaj vrlo jednostavan VBA postupak Funkcija. ilustrira kako se podaci prenose na postupak kroz argumente. Možete vidjeti da se vrsta podataka vraćena postupkom definira kao Dvostruko. (riječi kažu o tome Kao dvostruko. Nakon popisa argumenata). Također, ovaj primjer pokazuje kako je rezultat postupka Funkcija. Spremljena u varijabilu s imenom koje se podudara s nazivom postupka.

Pozivanje VBA procedura "Funkcija"

Ako je gore spomenuta jednostavna procedura Funkcija. Umetnut u modul u vizualnom osnovnom uređivaču, može se pozvati iz drugih VBA postupaka ili se koristi na popisu radnog posla u knjizi Excel.

Pozivanje VBA procedura "Funkcija" iz drugog postupka

Postupak Funkcija. Možete nazvati iz drugog VBA procedura koristeći jednostavan zadatak ovog postupka varijable. Sljedeći primjer prikazuje žalbu postupku. Summus.koji je bio definiran gore.

Sub main () Dim Ukupno kao dvostruko ukupno \u003d Summus (5, 4, 3) kraj

Pozivanje VBA procedura "Funkcija" iz radnog lista

VBA postupak Funkcija. Možete nazvati iz Excel radni list na isti način kao i svaka druga ugrađena funkcija Excel. Prema tome, postupak izrađen u prethodnom primjeru Funkcija.Summus. Možete nazvati, unositi radni list u ćeliju koja je ovdje:

Summus (10, 5, 2)

VBA postupak "pod"

VBA urednik razumije da prije postupka. Pod.Kada se susreće s grupom timova, zaključio je između takvih otvaranja i zatvaranja operatora:

Sub ... kraj sub

VBA postupak "Sub": Primjer 1. Usklađivanje u sredini i mijenja veličinu fonta u namjenskom rasponu stanica

Razmotrite primjer jednostavnog VBA procedura. Pod.čiji je zadatak promijeniti oblikovanje posvećenog raspona stanica. Stanice su ugrađene u središte (i okomito, i horizontalno) i veličina fonta se mijenja u korisničkoj definiranoj:

Sub format_centered_and_sized_siziran (opcionalno ifontsize kao integer \u003d 10) selekcija.Horizontalignment \u003d XLCENTER selekcija.rtrtment \u003d XLCenter Selection.font.size \u003d Ifntsize End Sub

Ovaj postupak Pod. Obavlja radnje, ali ne vraća rezultat.

U ovom primjeru koristi se i opcionalni (izborni) argument. ifntsize, Ako je argument ifntsize Nije preneseno u postupak Pod., njegova zadana vrijednost je jednaka 10. Međutim, ako je argument ifntsize Prenesena procedura Pod.Namjenski raspon stanica će biti postavljen veličina fonta koju je odredio korisnik.

VBA Postupak "Sub": Primjer 2. Usklađivanje u središtu i nanošenje podebljano font na font u posvećenom rasponu stanica

Sljedeći postupak je sličan novo uzeti u obzir, ali ovaj put, umjesto miješanja, font se primjenjuje u odabranom rasponu stanica. Ovo je primjer postupka Pod.koji se ne prenose argumente:

Sub format_centered_and_bold () selekcija.Horizontalignacija \u003d XLCENTER selekcija.rtriticment \u003d XLCenter selekcija.Font.bold \u003d pravi kraj

Pozivanje postupka "Sub" u Excel VBA

Nazovite VBA postupak "Sub" iz drugog postupka

Za pozivanje VBA procedura Pod. Od drugog VBA procedura, morate napisati ključnu riječ Poziv, Naziv postupka Pod. I zatim u zagradi argumenti postupka. Ovo je prikazano u primjeru u nastavku:

Sub main () format poziva_centered_and_sized (20) kraj

Ako je postupak Format_centered_and_sized_sized Ima više od jednog argumenta, moraju biti odvojeni zarezima. Kao ovo:

Sub main () format poziva_centered_and_sized (arg1, arg2, ...) kraj

Nazovite VBA postupak "Sub" iz radnog lista

Postupak Pod. ne može se unijeti izravno u ćeliju lista Excela, jer se može obaviti s postupkom Funkcija.jer je postupak Pod. Ne vraća vrijednost. Međutim, postupci Pod.nemaju argumente i proglašene kao Javnost (Kao što će biti prikazano u nastavku), bit će dostupan korisnicima radničkog lista. Dakle, ako su gore opisani jednostavni postupci Pod. Umetnut u modul u vizualnom osnovnom uređivaču, zatim postupak Format_centered_and_bold. bit će dostupna za uporabu na radnom listu Excelove knjige i postupku Format_centered_and_sized_sized - neće biti dostupna, jer ima argumente.

Ovdje je jednostavan način za pokretanje (ili izvršavanje) postupka Pod.Dostupno od radnog lista:

  • Klik Alt + f8. (Pritisnite tipku Alt. i držeći ga pritisnutom, pritisnite tipku F8.).
  • U makronaredbi koji se pojavljuje, odaberite onu koju želite pokrenuti.
  • Klik Izvesti (TRČANJE)

Za obavljanje postupka Pod. Brzo i jednostavno, možete dodijeliti kombinaciju tipki za to. Za ovo:

  • Klik Alt + f8..
  • U makronaredbi koji se pojavljuje, odaberite onu na koju želite dodijeliti kombinaciju tipki.
  • Klik Parametri (Opcije) i u dijaloškom okviru koji se pojavljuje, unesite kombinaciju tipki.
  • Klik u redu I zatvorite dijaloški okvir Makro (Makro).

Pažnja: Dodjeljivanje prečaca za tipkovnicu za makro, pobrinite se da se ne koristi kao standard u Excelu (na primjer, Ctrl + C.). Ako odaberete postojeću kombinaciju tipki, bit će dodijeljena od strane makronaredbe, a kao rezultat toga korisnik može pokrenuti izvršenje makronaredbe slučajno.

VBA procedura opseg

U dijelu 2. ovog tutorial, raspravljana je tema područja djelovanja varijabli i konstanta te ulogu ključnih riječi Javnost i Privatni, Te ključne riječi mogu se koristiti iu odnosu na postupke VBA:

Zapamtite da ako prije objavljivanja VBA procedura Funkcija. ili Pod. Ključna riječ nije umetnuta, a zadani objekt je postavljen na postupak. Javnost (To jest, bit će dostupan svugdje u ovom VBA projektu). To je razlika od deklaracije varijabli koje su prema zadanim postavkama Privatni.

Rani izlaz iz VBA procedura "Funkcija" i "Sub"

Ako trebate dovršiti izvršenje VBA postupaka Funkcija. ili Pod.bez čekanja na njezine prirodne finale, onda postoje operateri za ovo Funkcija izlaza i Exit Sub., Upotreba tih operatora prikazana je u nastavku na primjeru jednostavnog postupka. Funkcija.za koje se očekuje da će dobiti pozitivan argument za daljnje poslovanje. Ako se postupak ne prenosi ne pozitivna vrijednost, tada se daljnje operacije ne mogu izvršiti, tako da korisnik mora biti prikazan poruka o pogrešci i postupak mora biti odmah dovršen:

Funkcija Vat_amount (svat_rate kao pojedinačno) kao jedan vat_amount \u003d 0 ako je svat_rati<= 0 Then MsgBox "Expected a Positive value of sVAT_Rate but Received " & sVAT_Rate Exit Function End If ... End Function

Imajte na umu da prije završetka postupka Funkcija.Vat_amount., u kodu ugrađenu ugrađenu VBA funkciju Msgbox.koji prikazuje korisničke pop-up s upozorenjem.

Tablica 6.1. Ugrađene matematičke funkcije
Funkcija Opis
Abs Apsolutna vrijednost
Atn Arktana
Cos. Brojevi kosinusa
Exp Vraća broj E (2.718282), podignut u stupanj funkcije argumenta.
Popraviti Vraća frakcijski dio broja i vraća cjelinu. Kao rezultat toga, za pozitivne brojeve, broj je manji od ulaza (popravak (2.5) povrat 2), za negativan - veći (popravak (-2,5) povrat -2)
Int. Vraća frakcijski dio broja i vraća cjelinu. Za pozitivno, broj je manje unesen (int (2.5) će se vratiti 2), za negativan - jednako manji (int (-2.5) povrat -3).
Dnevnik. Povratak prirodni logaritam brojevi
Rd. Vraća slučajni broj pojedinačnih, a taj broj je između 0 i 1. Za inicijalizaciju generatora slučajnih brojeva, koristite Direktivu o randomiziranju - mora se pozvati prije poziva Rd..
SGN. Funkcija je dizajnirana za određivanje znaka broja. Ako je broj pozitivan - vraća 1. za nulu, funkcija će se vratiti 0 za negativan broj -1.
Grijeh. Sinus
Sqr. Korijen
Tan. Tangens

Razmotrimo primjer. Dodaj u Microsoft Word dokument, nazovite ga cmd_calc, pišemo ga kao izračune i dodajte sljedeći kod (unos 6.1.) Ilustrirajući rad razmatranih funkcija.

Dim DLLNumber kao dvostruka "varijabla koja se koristi u dim varresultiračunala" varijabilna varijanta tipa dLLnumber \u003d Val (ulazni okvir ("Unesite broj")) "Izračunajte apsolutnu vrijednost unesenog broja" Prvo dodijelite rezultat varresulti varijable "Next - povući Potpisani rezultat u "porukama" koristit ćemo znak "+" za "Red concatentation, u drugim slučajevima" mi ćemo izravno nazvati funkcije "u msgboxu" e ", imajte na umu da pretvaramo" numeričke vrijednosti na nizove koristeći " String Funkcija VARREUSULT \u003d ABS (dLnumber) MsgBox ("Apsolutna vrijednost" + _ STR (DLANNumber) + "jednak" + Str (Varresult) "Arctangent MSGBB (" ARCTHANGENCE "+ _ STR (DLANNUMBER) +" Jednak "+ _ str ( ATN (DLLNumber))) "MsgBox Cosine (" Cosine "+ _ STR (DLANNumber) +" jednak "+ _ str (cos (dbLnumber)))" E u stupanj unesenog MSGBox broja ("broj E do stupnja "+ _ Str (dLnumber) +" jednak "+ _ str (exp (dLunnumber)))" Fix MsgBox ("Zabava") Gradovi fihe za "+ _ Str (dLnumber) +" jednak "+ _ STR (Fix (dLnumber)))" INT MSGBox ("Rezultat int funkcije za" + _ str (dLUNNumber) + "jednak" + _ Str (int (dbLnumber))) "Prirodni logaritMum MsgBox (" Prirodni logaritMum "+ _ STR (dLUNNumber) +" jednaka "+ _ str (log (DLANNumber)))" Dobivamo nekoliko slučajnih brojeva "prvi broj - od 0 na 1 "sekunde - od 0 do 10." treće - od 25 do 100 "četvrti - cjelina od 0 do 34 randomizira MsgBox (" skupina slučajnih brojeva: "+ _ str (rnd ()) +", "+ _ Str (rnd () * 10) + "," + _ str (RND () * 75 + 25) + "," + _ str (int () * 34))) "SGN Msgbox funkcija (" SGN " Rezultat za "+ _ str (dLnumber) +" jednak "+ _ str (sgn (DLANNumber))" MsgBox ("sinus" + _ str (dLnumber) + "+" + _ str (sin (dLnumber)) "Square Msgbox korijen ("kvadratni korijen" + _ str (dblnumber) + "jednak" + _ str (SQR (dLRNumber))) "Tangent MsgBox (" tangent "+ _ str (dblnumber) +" jednak "+ _ s Tr (tan (dLnumber)))) Popis 6.1. Kliknite Event Processer cmd_calc gumbi

Zabilježite algoritam za dobivanje slučajnog broja koji se nalazi u određenom rasponu pomoću funkcije Rd., Pretpostavimo da trebamo dobiti slučajni broj od 15 do 40. Počinjemo s brojem od 0 do 40. Očito, trebat će nam takav izazov za ovo: Rnd () * 40.

"Podignite" razinu najmanji slučajni broj koji se vraća izrazom, na 15, učinit ćemo sljedeće.

Prvo, izračunavamo razliku 40 i 15 - uspjet ćemo 25. To znači dobiti slučajni broj od 0 do 25, možete koristiti poziv Rnd () * 25.

Drugo, dodajte na rezultirajući slučajni broj 15. Sada izraz za dobivanje slučajnog broja od 15 do 40 izgleda ovako: Rnd () * 25 + 15.

Provjerite ovu izjavu na ispravnost. Funkcija Rd., Kao što znate, vraća slučajne brojeve od 0 do 1. Ako se funkcija vraća 0 - rezultat izračuna izraza bit će jednak 15 (0 * 25 + 15). Ako se funkcija vraća 1 - rezultat će biti jednak 40 (25 * 1 + 15). Srednje vrijednosti Rd. Oni će dati željene slučajne brojeve između 15 i 40.

Pritiskom na gumb CMD_LEN (unos 6.2.) Sastavit će se rješenje sljedećeg zadatka: obavijestiti korisnika duljine unesenog teksta. Očito, da bismo riješili ovaj zadatak, trebat ćemo LEN funkciju.

"Dim str_inpstr kao string ulazni niz liniju" varijabla za spremanje duljine duljine DIM LNG_STLLEN kao Long str_inpstr \u003d ulazni okvir ("Unesite niz") "Izračunajte duljinu duljine LNG_STRLEN \u003d LEN (STR_INPST) MsgBox (" Duljina unesenog) Linija: _ "+ _ str_inpstr +" _ jednaka "+ str (lng_strlen) + _" simboli ") Popis 6.2. Primjer korištenja funkcije LEN

Na sl. 6.2. Možete vidjeti rezultat izračunavanja duljine niza.


Sl. 6.2.

Sada ćemo se baviti konverzijom simbola - lcase i ucas funkcije (uvrštenje 6. 3. 3.).

"Promjena pohrane Dim Str_inpstr kao string ulazni redak" varijabla za pohranjivanje promijenjenog niza Dim Str_Newstr As string str_inpstr \u003d ulazni okvir ("unesite tekst") "u st_newordu će se unijeti niz" u kojem su sva velika slova zamijenjena linijom str_newstr. \u003d Lca (str_inpstr) msgbox ("promijenjeni niz:" + str_newstr) "sada u str_newordu bit će isti niz" u kojem su sva slova postala uštitvoh od strane st_newstr \u003d uses (str_inpstr) MsgBox ("Promijenjena linija:" + str_newstr) Popis 6.3. Primjer korištenja funkcija lca i Ucase

Na redu čekanja - rezanje znakova - srednji, LTRIM, LIM, lijevo, desne značajke (unos 6.4.) Među tim funkcijama je najsnažnija srednja vrijednost, možete učiniti mnogo stvari.

"Pohrana varijabla Dim str_inpstr kao string" varijabla za pohranjivanje izrezanih znakova Dim str_News as kao niz "Postavite niz s koji će biti zgodan za rad str_inpstr \u003d" Pozdrav, Alexander "" "Funkcije uklanjanja" "Prilikom povlačenja niza prije njega počeo "i kraj simbola" _ "u redu" na "bolji vidljivi" ili ne nedostaju MSGBox praznine ("Radimo s takvim nizom:" + _ "_" + str_inpstr + "_") "LTRIM - dodijeliti Rezultati rada "Varijabilni i podaci o prikazu u MsgBox str_newstrststr \u003d LTRIM (RT_INPSR) MsgBox (" LTRIM's Result: "+ _" _ "+ str_News +" _ ")" RTRIM MSGBox ("RTRiM):" + _ " + RTRIM (str_inpstr) + "_") "Trim MsgBox (" Rezultat Trim's: "+ _" + "+ trim (str_inpstr) +" _ ")" lijevo - izrezati od st_inpstr 12 "znakova prethodno čišćenja" Od početnih prostora st_newstr \u003d lijevo (Ltrim (str_inpstr), 12) MsgBox ("prvih 12 znakova na lijevoj strani:" + _ str_newstr) "Desno - slično, rezati 9 znakova na desno st_newstr \u003d desno (RTRIM (str_inpstr), 9) MsgBox (" prvih 9 znakova udesno: "+ _ str_newstr)" srednja funkcija - za početak povlačenja jednog lika "iz Drugi i petnaesti redak položaj "prevladavo pročišćen od viška prostora" na početku i na kraju st_newstr \u003d srednji (trim (str_inpstr), 2, 1) MsgBox ("drugi znak unesenog niza:" + _ st_newstr) str_newstr \u003d Srednja (trim (str_inpstr), 15, 1) msgbox ("petnaesti redak unesen simbol:" + _ st_newstr) "povući 5 znakova, počevši od 15 st_newstr \u003d srednji simbol (Trim (str_inpstr), 15, 5) MsgBox (" Pet niskih znakova iz 15. mjesta: "+ _ str_newstr) Popis 6.4. Primjer uporabe značajki za rezanje znakova

Sada razmislite o primjerima funkcija

Funkcija. ime ([popis_ argumenti])
[upute]
[ime = izraz]
[upute]
[ime = izraz]
Završna funkcija.

Vrijednost je uvijek dodijeljena nazivu funkcije barem jednom i, u pravilu, kada je funkcija dovršila izvršenje. Stvaranje korisničke funkcije početak stvaranjem VBA modula (možete koristiti i postojeći modul). Unesite funkcijsku ključnu riječ, nakon čega odredite naziv funkcije i popis njegovih argumenata (ako ih ima) u zagradama. Također možete proglasiti vrijednost tipa podataka koja vraća funkciju pomoću ključne riječi (nije potrebno to učiniti, već preporučeno). Umetnite VBA kod koji obavlja potrebne radnje i provjerite je li potrebna vrijednost dodijeljena varijabilni postupak koji odgovara nazivu funkcije barem jednom u tijelu funkcije. Funkcija završava operatorom krajnje funkcije.

Imena funkcija podliježu ista pravila kao. Ako planirate koristiti funkciju u obrambenoj formuli, provjerite da li naziv nema oblik staničnog oblika. Također, nemojte dodijeliti imena koja odgovaraju nazivima ugrađenih funkcija Excel. Ako područje funkcije nije navedeno, zadana je javnost. Funkcije su prijavljene kao privatne nisu prikazane u dijaloškom okviru. Majstor funkcija.

Funkcija može biti uzrokovana jednom od sljedećih načina:

  • nazovite ga iz drugog postupka;
  • uključiti ga u formulu za radni list;
  • uključiti u oblikovan format oblikovanja;
  • nazovite ga u prozor za debug ( Odmah.). Ova se metoda obično primjenjuje na ispitnoj fazi (slika 3).

Sl. 3. Pozivanje funkcije u prozoru za ispravljanje pogrešaka

Za razliku od postupaka, funkcije se ne prikazuju u dijaloškom okviru. Makro (izbornik Developer –> Kod –> Makronaredbe; ili alt + f8).

Argumenti funkcija

Argumenti mogu biti varijabilni (uključujući nizove), konstante, simboličke podatke ili izraze. Neke funkcije nemaju argumente. Funkcije imaju oba obvezna i izborne argumente.

Funkcije bez argumenata

Excel ima nekoliko ugrađenih funkcija koje nemaju argumente, na primjer, Adhesis, danas, TDAT. Lako je stvoriti slične korisničke funkcije. Na primjer:

Korisnik funkcije ()
"Vraća korisničko ime
Korisnik \u003d aplikacija.USERNAME.
Završna funkcija.

Prilikom ulaska u formulu \u003d korisnik () stanica vraća naziv trenutnog korisnika (sl. 4). Napomena: Kada koristite funkciju bez argumenta u formuli za radni list, morate odrediti prazne zagrade.

Sl. 4. Formula \u003d korisnik () vraća ime trenutnog korisnika

Prilagođene funkcije se ponašaju kao ugrađene značajke Excel. Obično se korisnička funkcija ponovno izračunava kada je potrebno, tj. U slučaju promjena u jednom od funkcija argumenata. Međutim, češće možete izvesti rekalkulaciju funkcija. Funkcija se preračunava kada se bilo koji stanični promijeni, ako je postupak dodan od strane operatera

Aplikacija.Volatile istinito.

Voltalna metoda objekta aplikacije ima jedan argument (TRUE ili FALSE). Ako je funkcija istaknuta kao nestabilan. (Promjenjiva), ponovno se izračunava kad god se bilo staničnih stanica. Kada se koristi lažni argument, voltalna metoda se prevodi samo kada jedan od njegovih argumenata varira kao rezultat ponovnog izračuna.

Excel ima ugrađenu funkciju ljepila. Ali nije mi se to svidjelo da se slučajni brojevi mijenjaju svaki put kad se radni list ponovno izračuna. Stoga sam razvio funkciju koja vraća slučajne brojeve koji se ne mijenjaju pri izračunavanju formula. Da biste to učinili, korištena je ugrađena značajka VBA RND:

Funkcija Staticrand ()
"Vraća slučajni broj, a ne promjenjiv pri izračunavanju formula
Statička \u003d rnd ()
Završna funkcija.

Vrijednosti dobivene pomoću ove formule nikada se ne mijenjaju. Ali korisnik ostaje mogućnost prisilne preračunavanja formule pomoću kombinacije ključa .

Jedna funkcija argumenta

Sl. 5. Tablica provizije

Postoji nekoliko načina za izračun provizija. Na primjer, koristeći sljedeću formulu (ako je volumen prodaje postavljen u D1 ćeliju):

Ako (i (d1\u003e \u003d 0; D1<=9999,99);D1*0,08;ЕСЛИ(И(D1>\u003d 10.000; D1<=19999,99);D1*0,105; ЕСЛИ(И(D1>\u003d 20000; D1<=39999,99);D1*0,12;ЕСЛИ(D1>\u003d 40000; D1 * 0.14))))

Ova formula je neuspješna iz nekoliko razloga. Prvo, to je teško, nije lako ga birati, au budućnosti uredi. Drugo, vrijednosti su strogo definirane u formuli, zbog čega je teško promijeniti. Mnogo je bolje koristiti HDP (sl. 6).

Sl. 6. Korištenje funkcije PRD za izračun provizije

Čak i bolje (onda ne morate koristiti odgovarajuću tablicu) stvorite prilagođenu funkciju:

Povjerenstvo za funkciju (prodaja)
Const Tier1 \u003d 0.08
Const Tier2 \u003d 0.105
Const Tier3 \u003d 0.12
Const Tier4 \u003d 0.14
"Izračun provizija od prodaje
Odaberite prodaju slučaja.
Slučaj 0 do 9999.99: Komisija \u003d prodaja * Tier1
Slučaj 10000 do 19999,99: Komisija \u003d prodaja * Tier2
Slučaj 20000 do 39999,99: Komisija \u003d prodaja * Tier3
Slučaj je\u003e \u003d 40000: Komisija \u003d prodaja * Tier4
END SELECT.
Završna funkcija.

Nakon ulaska u VBA modul, ova funkcija se može koristiti u formuli na radnom listu ili nazvati od drugih VBA postupaka. Prilikom ulaska u sljedeću formulu, rezultat će se dobiti 3000 u stanici:

Komisija (B2)

Funkcija DoubleCell ()
Doublecell \u003d Raspon ("Al") * 2
Završna funkcija.

Iako ova značajka radi, u nekim slučajevima daje netočan rezultat. Razlog tome je što Excel računalni mehanizam ne uzima u obzir raspone koji se ne prenose kao argumenti. Kao rezultat toga, ponekad prije vraćanja funkcije, sve povezane vrijednosti se ne izračunavaju. Također biste trebali napisati funkciju DoubleCell, kao argument od kojih se vrijednost stanice A1 prenosi.

Funkcija DoubleCell (ćelija)
Doublecell \u003d stanica * 2
Završna funkcija.

Funkcija s dva argumenta

Zamislite da upravitelj u rješavanju gore navedeno predstavlja novu politiku osmišljenu za smanjenje protoka osoblja: ukupan iznos plaća se povećan za 1% godišnje, koji je zaposlenik radio u društvu. Promijenite povjerenstvo za korisničku funkciju tako da je potrebno dva argumenta. Novi argument predstavlja broj godina od strane zaposlenika u društvu. Nazovimo ovu novu funkciju komisije2:

Komisija za funkciju2 (prodaja, godina) kao pojedinačno
"Izračun prodajne komisije na temelju
"Duljina iskustva
Komisija2 \u003d Komisija (prodaja) + _
(Komisija (prodaja) * godina / 100)
Završna funkcija.

Funkcija s argumentom u obliku niza

Kao argumenti, funkcija može uzeti jedan ili više nizova, obraditi ovaj niz (nizovi) i vratiti jedinu vrijednost. Funkcija prikazana u nastavku prihvaća niz kao argument i vraća količinu svojih elemenata.

Funkcija Sumaray (popis) kao dvostruko
Prigušena stavka kao varijanta
Sumaray \u003d 0.
Za svaku stavku u popisu
Ako se radi o radnoj linci.istenber (stavka) tada _
Sumaray \u003d sumaray + stavka
Sljedeća stavka.
Završna funkcija.

Funkcija Excel Encixer provjerava je li svaki element broj prije dodavanja na zajednički cijeli broj. Dodavanje ovog jednostavnog operatera provjere podataka eliminira vrste nedosljednosti tipa prilikom pokušaja obavljanja aritmetičke operacije iznad niza.

Funkcija s dodatnim argumentima

Mnoge ugrađene funkcije Excel imaju dodatne argumente. Primjer - LevSMB funkcija koja vraća znakove s lijevog ruba linije. Ima sljedeću sintaksu:

Levsimv ( tekst, count_simvolov)

Prvi argument je obvezan, za razliku od drugog. Ako drugi argument nije naveden, Excel sugerira vrijednost 1.

Prilagođene funkcije razvijene u VBA mogu također imati dodatne argumente. Izborni argument ćete odrediti ako unesete ključnu riječ opcionalno preko imena argumenta. Na popisu argumenata, dodatni argumenti se utvrđuju nakon svih obveznih. Na primjer:

Funkcija korisnika2 (opcionalno velika slova kao varijanta)
Ako se ismissing (velika slova) onda je velika slova \u003d lažna
User2 \u003d Application.username.
Ako je velika slova tada User2 \u003d USCASE (USER2)
Završna funkcija.

Ako je argument lažan ili izostavljen, korisničko ime se vraća bez ikakvih promjena. Ako je argument istinit, korisničko ime se vraća na simbole velikih slova (pomoću funkcije Usaca VBA). Obratite pozornost na prvi operator funkcije - sadrži funkciju ISMISISING VBA, koja određuje prisutnost argumenta. Ako argument nedostaje, operater dodjeljuje velika varijabla za lažnu (zadano).

VBA funkcija vraća niz

VBA sadrži vrlo korisnu značajku pod nazivom polja. Vraća vrijednost s varijantnim tipom podataka, koja sadrži niz (tj. Nekoliko vrijednosti). Ako niste upoznati s formulama polja u Excelu, predlažem početi s početkom. Masiv formula je unesena u ćeliju nakon prešanja , Excel dodaje nosač oko formule kako bi naznačilo da je to formula niz.

Značajka mjesečne imena je jednostavan primjer primjene funkcije polja u korisničkoj funkciji.

Funkcija Glavni imena ()
Mjesečni imena \u003d niz ("siječanj", "veljača", "marš", _
"Travanj", "Svibanj", "lipanj", "srpanj", "kolovoz", _
"Rujan listopad studeni prosinac"
Završna funkcija.

Značajka mjesečne imena vraća horizontalnu nisku imena mjeseci. Na radnom listu odaberite 12 ćelija, unesite formulu \u003d mjesečna imena () i kliknite , Ako trebate generirati vertikalni niz imena mjeseci, označite vertikalni raspon, unesite formulu \u003d TRCC (mjesečni naziv ()) i pritisnite .

Funkcija vraća vrijednost pogreške

  • xLerrdivo (za pogrešku # Business / 0!);
  • xlerrna (za pogrešku # n / d);
  • xlerrName (za pogreške #?);
  • xlernnull (Emfed # prazan!);
  • xlerrnem (za pogrešku #);
  • xLerref (za pogrešku # Reference!);
  • xLerrvalue (za pogrešku # znači!).

U nastavku je navedena značajka pretvorbene uklonjene (vidi primjer na početku). Ako se desetak dizajna koristi za izvođenje alternativnog djelovanja u slučaju kada argument nije tekst. Ova značajka poziva funkciju Excel EtExt koja određuje je li argument sadrži tekst. Ako stanica sadrži tekst, tada funkcija vraća normalan rezultat. Ako stanica ne sadrži tekst (ili prazan), tada funkcija vraća pogrešku # znači!

Funkcija uklanjanja3 (txt) kao varijanta
"Briše sve samoglasne pisma iz TXT argumenta
"Vraća pogrešku # znači!, Ako argument nije niz
Dim i dugo
Ukloniti 3 \u003d ""
Ako je onda aplikacija.
Za i \u003d 1 do Len (txt)
Ako ne ucas (srednji (txt, i, 1)) kao ""
UklanjanjeVowels3 \u003d Uklanjanje3 i srednji (txt, i, 1)
Završi ako
Sljedeća I.
DRUGO.
Uklanjanje3 \u003d CverR (XLerrvalue)
Završi ako
Završna funkcija.

Napominjemo da je vrsta podataka promijenjen za vrijednost koju je vratila funkcija. Budući da funkcija može vratiti nešto drugo, osim niza, vrsta podataka je promijenjen u varijantu.

Funkcija s neodređenim brojem argumenata

Moguće je stvoriti korisničke funkcije koje imaju neodređeni broj argumenata. Primijenite niz kao posljednji (ili jedini) argument i dodajte ključnu riječ Parameray prije njega (Paramray se odnosi samo na posljednji argument u popisu argumentacija postupka. Uvijek ima varijantnu vrstu podataka i uvijek je izborni argument). Sljedeća funkcija vraća iznos svih argumenata, koji mogu djelovati kao jedna vrijednost (ćeliju) i rasponu.

Funkcija simplesem (Parararay Arglist () kao varijanta) kao dvostruko
Dimne ćelije kao raspon
Dim Arg kao varijanta
Za svaki Arg u Arglistu
Za svaku ćeliju u Arg
Simples \u003d simples + stanica
Sljedeća stanica.
Sljedeći arg
Završna funkcija.

Funkcije za ispravljanje pogrešaka

Kada koristite formulu na radnom listu da biste testirali funkcije koje se pojavljuju tijekom izvršenja pogreške, ne prikazuju se u dijaloškom okviru Poznate poruke. Formula jednostavno vraća vrijednost pogreške (# znači!). Srećom, to ne predstavlja veliki problem kada se funkcionira za ispravljanje pogrešaka, jer uvijek postoje nekoliko puta premosnice.

  • Postavite Msgbox funkciju na važna mjesta za praćenje vrijednosti pojedinačnih varijabli.
  • Ispitajte funkciju pozivom na postupak, a ne u formulu za radni list. Pogreške u procesu izvršenja prikazane su na uobičajeni način.
  • Odredite točku zaustavljanja u funkciji i pregledajte funkciju korak po korak. U tom slučaju možete koristiti sve standardne alate za ispravljanje pogrešaka. Da biste dodali točku zaustavljanja, postavite kursor u operatera u kojem se odlučite za pauziranje izvršenja i odaberite naredbu Debug. –> Prebacivanje točke prekida. (Debugging –> Zaustaviti) ili kliknite .
  • U programu koristite jedan ili više privremenih operatora ispisa za prikaz vrijednosti u prozoru. Odmah. Urednik VBA. Na primjer, za praćenje ciklički promjenjive vrijednosti, koristite sljedeću metodu:

Sl. 7. Koristite prozor za uklanjanje debug za prikaz rezultata prilikom izvođenja funkcije.

U tom slučaju, vrijednosti dvije varijable, CH i I prikazane su u prozoru za uklanjanje debug ( Odmah.) Kad god se u programu nalazi Debug.print operator. Postavite pokazivač na postupak testiranja mjesta () i pritisnite F5. Na sl. 7 prikazuje rezultat za slučaj kada funkcija prihvati argument Tusconarizona.

Korištenje metode makroopcije

Možete koristiti metodu makroopcije objekta aplikacije, koji vam omogućuje da omogućite funkcije ugrađenih funkcija Excela. Ova metoda vam omogućuje:

  • dodaj opis funkcije (počevši od Excel 2010;
  • navedite kategoriju funkcija;
  • dodajte opis argumenata funkcije.

Sub opis ()
Dim FuncName kao niz
Dim FuncDESC kao niz
Dim funccat tako dugo
Dim Arg1DESC kao string, arg2DESC kao niz
FuncName \u003d "Izvlačenje"
FuncDesc \u003d "Sadržaj slučajnog raspona"
Funccat \u003d 5 "linkovi i nizovi
Arg1Desc \u003d "raspon koji sadrži vrijednosti"
Arg2Desc \u003d "(izborno) ako je lažno ili odsutno, _
Funkcija RND-a nije ponovno izračunala. ""
Arg2Desc \u003d Arg2Desc & "Ako je istinita, RND funkcija se ponovno izračunava"
Arg2Desc \u003d arg2Desc & "s bilo kakvim promjenama na listu."
Application.macrooptions _
Makro: \u003d FuncName, _
Opis: \u003d FuncDesc, _
Kategorija: \u003d Funccat, _
Argumentacije: \u003d niz (arg1desc, arg2Desc)
Kraj.

Na sl. 8 prikazuje dijaloške okvire Majstor funkcija i Funkcija argumenatanakon izvršavanja postupka opis ().

Sl. 8. Vrsta dijaloških okvira Majstor funkcija i Funkcija argumenata Za funkciju korisnika

Opis () Postupak se treba nazvati samo jednom. Nakon poziva, informacije povezane s funkcijom spremaju se u radnoj knjizi. Ali ako ste izmijenili postupak, ponovite njegov poziv.

Ako ne navedete kategoriju značajki koristeći metodu makroopcije, u kategoriji će se pojaviti funkcija korisnika korisnika Korisnik definiran dijaloški okvir Majstor funkcija, Tablica (slika 9) navodi brojeve kategorija koji se mogu koristiti kao vrijednosti argumentacije kategorija metode makroopcije. Imajte na umu da se neke od tih kategorija (od 10 do 13) obično ne prikazuju u dijaloškom okviru. Majstor funkcija, Ako možete pripisati jedan od korisničkih funkcija u sličnu kategoriju, pojavit će se u dijaloškom okviru.

Korištenje dodataka za pohranjivanje korisničkih funkcija

Ako želite, možete spremiti često korištene korisničke funkcije u dodatku. Glavna prednost ovog pristupa je sljedeća: Funkcije se mogu primijeniti u formulama bez specifikatora naziva datoteke. Pretpostavimo da imate korisničke funkcije zappaces; Pohranjena je u datoteci myfuncs.xlsm. Da biste ga primijenili u formuli druge radne knjige (osim myfuncs.xlsm), morate unijeti sljedeću formulu: \u003d Myfuncs.xlsm! Zappaces (A1: C12).

Ako stvorite dodatak na temelju Myfuncs.XLSM datoteke i ovaj dodatak će biti učitan u trenutni Excel rad rada, veza na datoteku može se preskočiti unosom sljedeće formule: \u003d ZAPSPACES (A1: C12) , Stvaranje dodataka će se smatrati odvojeno.

Potencijalni problem koji se može pojaviti zbog korištenja dodataka za pohranjivanje prilagođenih funkcija odnose se na ovisnost o radnoj knjizi iz dodatne datoteke. Ako prođete radniku radnika, ne zaboravite prenijeti i kopiju nadgradnje koja sadrži potrebne funkcije.

Pomoću funkcija API-ja sustava Windows

VBA može posuditi metode iz drugih datoteka koje nemaju nikakve veze s programom Excel ili VBA, na primjer, DLL datoteke (biblioteka dinamičke veze - dinamički povezana biblioteka) koja koriste Windows i druge programe. Kao rezultat toga, VBA se pojavljuje sposobnost obavljanja operacija koje bez posuđenih metoda su izvan granica jezičnih sposobnosti.

Windows API (sučelje za programiranje aplikacija - sučelje za programiranje aplikacija) je skup funkcija dostupnih programerima u Windows okruženju. Kada nazovete značajku sustava Windows s VBA-a, pristupate Windows API-u. Mnogi Windows resursi koje koriste Windows programeri mogu se dobiti iz DLL datoteka u kojima su programi i funkcije povezane u procesu izvršenja programa, a ne tijekom kompilacije.

Prije korištenja funkcije Windows API-ja mora biti najavljeno na vrhu softvera modula. Ako je softverski modul nije standardni VBA modul (tj. Modul za Userform, List ili Ova knjiga), API funkcija mora biti najavljena kao privatna.

API funkcija oglas ima neku poteškoću - funkcija bi trebala biti što je moguće točna. Operator oglasa označava VBA kako slijedi:

  • koja API funkcija koristite;
  • u kojoj se knjižnici nalazi API funkcija;
  • argumenti API funkcioniraju.

Nakon oglasa funkcija API može se koristiti u VBA programu.

Razmotrite primjer API funkcije koji prikazuje naziv mape Windows (koristeći standardne VBA izjave koji je ovaj zadatak ponekad nemoguć). Za početak, izjasnit ćemo API funkciju:

Izjavi PTRSAFE Funkcija Getwindowsdirectorya lib "kernel32" _
(Bywal lpbuffer kao niz, bywal nsize kao dugačak)

Ova značajka ima dva argumenta vraća ime mape u kojem je instaliran Windows operativni sustav. Nakon pozivanja ove funkcije, mapa Windows bit će pohranjena u VPBIFER varijabilu, a dužina duljine duljine je u varijabli nsize.

Sljedeći primjer prikazuje rezultat u prozoru poruka:

Podhowwindowsdir ()
Dim Winpath kao niz * 255
Dim Windir kao niz
WinPath \u003d prostor (255)
Windr \u003d lijevo (winpath, gettwindowsdirectory _
(WinPath, Len (Winpath))))
Msgbox Windrir, vbinformacija, Windows direktorij "
Kraj.

Tijekom procesa izvršenja, Postupak showWindowsdir prikazuje prozor poruke s lokacijom Windows mape.

Ponekad morate stvoriti ljusku (omotati) za API funkcije. Drugim riječima, stvorit ćete vlastitu funkciju pomoću API funkcije. Ovaj pristup uvelike pojednostavljuje korištenje API funkcije. Ispod je primjer takve VBA funkcije:

Funkcija Windowsdir () kao niz
"Naziv mape Windows
Dim Winpath kao niz * 255
WinPath \u003d prostor (255)
Windowsdir \u003d lijevo (WinPath, GettwinDowsdirectory _
(WinPath, Len (Winpath))))
Završna funkcija.

Nakon deklariranja ove značajke možete ga nazvati iz drugog postupka: MsgBox Windowsdir (). Ova značajka možete koristiti iu formuli za radni list: \u003d Windowsdir ().

Pažnja! Nemojte se iznenaditi zbog neuspjeha u sustavu kada koristite Windows API funkcije u VBA. Spremite svoj rad unaprijed prije testiranja.

Određivanje stanja ključa

Pretpostavimo da ste napisali VBA makronaredbu koji će se izvesti pomoću gumba na alatnoj traci. Neophodno je da se ovaj makro upisuje drugačije, ako korisnik nakon klika na gumb drži ključ , Naučiti o ključevima Možete koristiti funkciju API getyState. Funkcija GetKeyState izvješćuje je li određena određena ključ. Funkcija ima jedan argument, nvirtkey, koji predstavlja kôd tipki koje vas zanima.

U nastavku je program koji otkriva da kada se izvršava postupak gumba_Click događaja, ključ je pritisnut , Imajte na umu da odredite stanje ključa Korištena je konstanta (primanja heksadecimalna vrijednost), koja se zatim koristi kao argument funkcije GetKeyState. Ako GetKeyState vraća vrijednost manju od 0, to znači da je ključ pritisnuti; inače ključ nije pritisnut. Slična provjera može se rasporediti za Ctrl i Alt tipke (Sl. 10).

Sl. 10. Provjera Shift, Ctrl i Alt tipke

Funkcijski kod VBA može se naći u priloženoj Excelovoj datoteci.

Rad s Windows API funkcijama može biti prilično komplicirano. U mnogim programskim knjigama, operatori API-Funkcija oglasa navedeni su odgovarajućim primjerima. U pravilu možete jednostavno kopirati izraze oglasa i koristiti funkcije, a ne napadnuti u njihovoj suštini. Većina VBA programera u Excelu smatra API funkcionira kao Panacea za rješavanje većine zadataka. Na internetu ćete naći stotine prilično pouzdanih primjera koji se mogu kopirati i umetnuti u vlastiti program.

Tekstualna datoteka sadrži oglase i konstante Windows API-ja. Možete otvoriti ovu datoteku u uređivaču teksta i kopirati odgovarajuće oglase na VBA modul.

Prema materijalima knjige. - m: dijalektika, 2013. - P. 287-323.

Funkcija napisana na VBA je kod koji obavlja izračune i vraća vrijednost (ili niz vrijednosti). Stvaranjem funkcije možete ga koristiti na tri načina:

  1. Kao formula na listu gdje može poduzeti argumente i povratne vrijednosti.
  2. Kao dio vašeg VBA potprograma. U postupku ili unutar drugih funkcija.
  3. U uvjetnim pravilima oblikovanja.

Iako Excel već sadrži više od 450 ugrađenih funkcija, ali oni također periodično nedostaju. Ponekad ugrađene funkcije ne mogu učiniti ono što želite učiniti. Ponekad postići rezultat, potrebno je stvoriti ogromnu i složenu formulu koja nije razumljiva drugima. U tom slučaju možete stvoriti prilagođenu funkciju koja se lako čita i koristi.

Imajte na umu da korisničke funkcije stvorene pomoću VBA obično su mnogo sporiji od ugrađenih funkcija. Prema tome, oni su najprikladniji za situacije kada ne možete dobiti rezultat koristeći ugrađene funkcije ili izračune ne mnogo, a smanjenje produktivnosti nije kritično.

Integrirane funkcije mogu koristiti ne samo vi, već i vaše kolege. Pisane funkcije pojavit će se zajedno s drugima u dijaloškom okviru Funkcije. Možda ste uplašeni procesom stvaranja funkcija, ali žurim vas da uvjerite da je dovoljno jednostavno.

Koja je razlika između postupka (pod) iz funkcije (funkcije)?

Glavna razlika je u tome što se postupak (pod) koristi za izvođenje skupa naredbi, a ne namjerava vratiti vrijednost (ili niz vrijednosti), za razliku od funkcije (funkcije).

Za demonstraciju dajemo primjer. Na primjer, postoji niz brojeva od 1 do 100 i potrebno je odvojiti čak i od neparnog.

Koristeći postupak (pod), možete, na primjer, proći kroz stanice i dodijeliti neparno ispunjavanjem. A funkcija se može koristiti u susjednoj stupcu i vratiti istinu ili laži ovisno o ravnomjernoj vrijednosti ili ne. Oni. Nećete moći promijeniti boju ispune s funkcijom na listu.

Stvaranje jednostavne korisničke funkcije u VBA

Napravimo jednostavnu korisničku funkciju na VBA-u i vidjeti kako sve radi tamo.

Slijedi funkcijski kôd koji ostavlja samo brojeve iz teksta, odbacivanje vrijednosti slova.

Funkcijski brojevi (tekst kao string) Kao dug dim i dugom prigušeni rezultat kao niz za i \u003d 1 do Len (tekst) ako je inumer (srednji (tekst, i, 1)), a zatim rezultat \u003d rezultat i srednji (tekst, i, 1 ) Sljedeće slike \u003d CLNG (rezultat) kraj funkcije

Da biste sve to zaradili, morate umetnuti ovaj kod u modul knjige. Ako ne znate kako to učiniti, počnite od članka kako snimiti makro u Excelu.

Sada ćemo vidjeti kako funkcija funkcionira, pokušajte ga koristiti na listu:

Prije rastavljanja same funkcije, bilježimo 2 ugodne trenutke koji su se pojavili nakon stvaranja:

  • To je postalo dostupno, kao i svaka druga ugrađena funkcija (kako stvoriti skrivenu funkciju, recimo kasnije).
  • Kada ste unijeli znak "\u003d" i početi unositi naziv funkcije, onda Excel prikazuje sve slučajnosti i pokazuje ne samo ugrađene funkcije, već i običaj.

Razumijevamo korak po korak

Sada ćemo duboko uroniti i vidjeti kako je ova značajka stvorena. Funkcija iz linije počinje

Funkcija figura (kao tračni tekst)

Riječ Funkcija. Govori o početku funkcije, a zatim njegovo ime ide u našem slučaju Brojevi.

  • Naziv funkcije ne može sadržavati razmake. Osim toga, ne možete nazvati funkciju ako se suočava s nazivom veze na ćeliju. Na primjer, ne možete navesti funkciju ABC123, jer se to ime također odnosi na ćeliju na Excel listu.
  • Ne morate označavati funkciju istog imena kao i postojeće funkcije. Ako to učinite, Excel će dati prednost u ugrađenoj funkciji.
  • Možete koristiti simbol naglaska ako želite podijeliti riječi. Na primjer, Suma u cuiirsiveje dopušteno ime.

Nakon imena u zagradama, opisuju se funkcijske argumente. Analogno s ugrađenim Excel značajkama. U našem slučaju koristi se jedini argument. Tekst, Nakon imena argumenta, naznačili smo Kao nizTo znači da je naš argument tekstualna vrijednost ili referenca na ćeliju koja sadrži tekstualnu vrijednost. Ako ne navedete vrstu podataka, VBA će ga razmotriti kao Varijanta. (Što znači da možete koristiti bilo koju vrstu podataka, VBA će ga sami odrediti).

Posljednji dio prve linije Sve dok. Određuje vrstu podataka koja vraća funkciju. U našem slučaju, funkcija će vratiti cijeli broj vrijednosti. Također nije potrebno.

Drugi i treći red funkcije najavljuje dodatne unutarnje varijable koje ćemo koristiti.

Dim i dugom prigušeni rezultat kao niz

Varijabla i. Koristit ćemo se za nabrojavanje znakova. Varijabla pROIZLAZITI Za pohranu srednjeg rezultata funkcije.

Zadatak funkcije je proći kroz sve simbole varijabilnog teksta i spremiti samo one koje su brojeve. Stoga započnite ciklus od 1 do posljednjeg simbola.

Za i \u003d 1 do Len (tekst)

Len je funkcija koja definira broj znakova.

Glavni red funkcije je provjeriti je li sljedeći tekst simbol broj i ako je odgovor da - tada ga spremite u varijabli rezultate

Ako je inumerički (srednji (tekst, i, 1)), onda rezultat \u003d rezultat i srednji (tekst, i, 1)

Za to trebamo funkciju Isnumeričan- vraća se Pravi.ako je tekst broj i Lažaninače.

Funkcija Sredinomuzima tekst iz argumenta i.simbol (vrijednost 1 označava da je funkcija Sredinomtraje samo 1 simbol) /

Funkcija Sljedeći - zatvara ciklus Za Sve je ovdje jasno.

Brojke \u003d CLNG (rezultat)

Pretvorimo tekst varijable na ovaj niz. pROIZLAZITIkoji sadrži sve brojke argumenta Tekst, numeričko značenje. I kažemo kakav rezultat treba naša funkcija Brojevi.

Posljednja koda - Završna funkcija., To je obvezna linija koda koja izvješćuje VBA koju ovdje završava funkcijski kod.

Kod ispod opisuje različite dijelove tipične korisničke funkcije stvorene u VBA. U sljedećim člancima detaljnije ćemo analizirati te elemente, kao i razmotriti različite načine za izvođenje VBA funkcije u Excelu.