Pentru a crea o funcție, se folosește comanda Function. Acest lucru este asemănător cu crearea unei proceduri - Sub: se tastează Function urmat de numele care se dă funcției.
Sintaxa pentru instrucțiunea Function este:
[Public | Private] [Static] Function nume_functie [(lista_de_argumente)] [As tip] [instructiuni]
[nume_functie = expresie]
[Exit Function]
[instructiuni]
[nume_functie = expresie]
End Function
Această sintaxă, în care unele părți sunt opționale, este compusă din:
Transmite datele înapoi prin atribuirea unei valori numelui ei (funcției). Dacă numele funcției este AdaugTVA, după ce se fac calcule pentru a adăuga taxa, rezultatul se alocă numelui funcției:
Function AddStateTax(SubTotal)
AdaugTVA = SubTotal * 1.09 'se fac calcule matematice si rezultatul se atribuie
'numelui functiei pentru a fi returnat
End Function
[Optional] [ByRef | ByVal] [ParamArray] variable_name[( )] [As type]
[= default_value]
Iată o descriere a elementelor din lista_argumente:
Către o funcție se poate transmite fie adresa unei valori, fie o copie a valorii actuale
Când o procedură (o funcție sau o subrutină) transmite un argument unei funcții prin referință, procedura destinatarului primește accesul la locația de memorie reală unde este stocată variabila inițială și poate modifica astfel valoarea reținută în variabila inițială. În schimb, atunci când un argument este trecut prin valoare, funcția primește doar o copie a informațiilor din variabilă și, prin urmare, nu poate modifica valoarea reținută în variabila inițială (procedura destinatar nu știe care este locația variabilei originale). Modalitatea implicită de a transmite un argument este prin referință și rareori sunt motive de a-l transmite prin valoare, deci de obicei se folosește transmiterea implicită.