Ce este o funcție?

O funcție este un tip de procedură. În limbajul BASIC (din care provine VBA), funcția diferă de o subrutină (subprocedură) pentru că funcția va returna întotdeauna o valoare, pe când subrutina nu returnează valori. În practica obișnuită, o funcție aproape întotdeauna preia unul sau mai multe argumente. Deși subrutinele pot fi scrise pentru a lua argumente, majoritatea programatorilor nu își scriu codul în acest fel.

Alte limbaje de programare nu fac distincție între funcție și subrutină. Pe scurt, iată care sunt principalele diferențe între funcții și subrutine din VBA:

Subrutine Nu returnează niciodată valori și rareori trimit argumente. Subrutinele sunt independente.

Funcții Acestea comunică mai mult cu codul dinafara lor, acceptând datele primite din argumente, prelucrând datele respective într-un anumit fel și trimițând înapoi rezultatul unui alt cod.

Funcțiile integrate în VBA sunt des folosite. De obicei, informațiile se încarcă într-o funcție încorporată prin trimiterea de argumente. Funcția încorporată procesează acea informație și returnează o valoare care se poate folosi.

Funcțiile încorporate sunt importante pentru VBA și au fost folosite deja în exemplele anterioare. Cu toate acestea, acum vor fi descrise mai detaliat. De exemplu, în secțiunea Folosirea de variabile matrice, s-a folosit funcția Rnd pentru a genera numere aleatoare și a le adăuga într-o matrice numită intArray și funcția Int pentru a transforma numerele aleatoare în numere întregi:

intArray(i) = Int(Rnd * 10)

Rnd este o funcție rară, care nu are nevoie de argumente. (Rnd poate avea un argument opțional, dar în exemplul anterior nu folosește argumente.)

Funcția Int, pe de altă parte, are nevoie de un argument – numărul sau expresia care va fi transformată în număr întreg. Argumentul din acest exemplu este furnizat de expresia Rnd * 10. Aici funcția Rnd returnează o valoare pe care o folosește funcția Int. Funcția Int întoarce o valoare, pe care procedura o folosește pentru a adăuga o valoare la un index din matrice.

Un argument o bucată de informație care este trecută la o funcție. (Argumentele sunt, de asemenea, transmise metodelor obiectelor și altor comenzi.) În descrierile de ajutor, argumentele opționale sunt prezentate între paranteze pătrate. Când argumentele sunt opționale, ele pot fi scrise sau nu între parantezele rotunde. De exemplu, sintaxa completă de ajutor pentru funcția Rnd arată astfel:

Rnd([number]) As Single

Parantezele pătrate indică faptul că argumentul number este opțional, iar partea din sintaxă As Single arată că valoarea returnată de funcție va fi de tip Single.

Funcții diferite returnează tipuri diferite de date corespunzător activității lor: multe funcții returnează un Variant, iar funcțiile da/nu, cum ar fi funcția IsNumeric, returnează o valoare booleană, fie adevărată, fie falsă. Atunci când este necesar, VBA poate chiar converti uneori rezultatul unei funcții într-un alt tip de date necesar unei alte funcții în expresie.

Dacă între paranteze sunt două argumente, ambele trebuie utilizate (din fericire, acest lucru este destul de rar). De exemplu, funcția MsgBox afișează o casetă de mesaje. Sintaxa pentru funcția MsgBox este următoarea:

MsgBox(prompt[, buttons] [, title][, helpfile, context])

Aici, prompt este singurul argument obligatoriu: argumentele buttons, title, helpfile și context sunt opționale, între paranteze pătrate. Dar helpfile și context sunt închise separat între paranteze pătrate în loc ca fiecare să aibă propria pereche de paranteze pătrate, adică ele trebuie ori să fie folosite împreună, fie omise. Nu se poate folosi doar unul dintre argumente.