Dichiara il nome, gli argomenti e il codice che compongono il corpo di una routine Function.
Sintassi
Function name [(arglist)] [statements] [name=expression] [Exit Function] [statements] [name=expression] End Function
Argomenti:
Name: nome della funzione; utilizza le convenzioni di denominazione delle variabili standard.
Arglist: elenco di variabili che rappresentano gli argomenti passati alla routine Function quando viene chiamata. Per separare più variabili, utilizzare la virgola.
L'argomento arglist contiene la sintassi e le parti seguenti:
[ByVal | ByRef] varname[( )]
Argomenti Arglist
ByVal: indica che l'argomento viene passato in base al valore.
ByRef: indica che l'argomento viene passato in base al riferimento.
varname: nome della variabile che rappresenta l'argomento; utilizza le convenzioni di denominazione delle variabili standard.
Statements: qualsiasi gruppo di istruzioni da eseguire all'interno del corpo della routine Function.
Expression: restituisce il valore della funzione.
Note
Se non vengono specificate in modo esplicito utilizzando le istruzioni Public o Private, le routine Function sono pubbliche per impostazione predefinita, ovvero sono visibili a tutte le altre routine nello script. Il valore delle variabili locali in una routine Function non viene conservato tra chiamate della routine.
Non è possibile definire una routine Function all'interno di un'altra routine, ad esempio Sub o Property Get.
L'istruzione Exit Function causa l'uscita immediata da una routine Function. L'esecuzione del programma continua con l'istruzione che segue l'istruzione che ha chiamato la routine Function. Qualsiasi numero di istruzioni Exit Function può essere visualizzato ovunque in una routine Function.
In modo analogo a quanto avviene per una subroutine, una routine Function è una routine distinta che utilizza argomenti, esegue una serie di istruzioni e modifica i valori dei relativi argomenti. Tuttavia, a differenza di quanto avviene per una subroutine, è possibile utilizzare una routine Function sul lato destro di un'espressione nello stesso modo in cui si utilizza qualsiasi funzione intrinseca, ad esempio le funzioni Sqr, Mid o Chr, quando si desidera utilizzare il valore restituito dalla funzione.
È possibile chiamare una routine Function utilizzando il nome della funzione, seguito dall'elenco di argomenti tra parentesi, in un'espressione. Vedere l'istruzione Call per informazioni specifiche su come chiamare le routine Function.
Per restituire un valore da una funzione, assegnare il valore al nome della funzione. Qualsiasi numero di tali assegnazioni può trovarsi ovunque all'interno della routine. Se al nome non è assegnato alcun valore, la routine non restituisce alcun valore.
Nell'esempio seguente viene mostrato come assegnare un valore restituito a una funzione denominata FindValue. In questo caso, False viene assegnato al nome per indicare che non è stato trovato alcun valore.
Esempio 1
Function FindValue(val)
Dim notFound
notFound = True
'Business Logic
'val not found. Return a val of False.
If notFound Then
FindValue = False
Exit Function
End If
' Business Logic
End Function
'Usage:-
val = FindValue(8)
Le variabili utilizzate nelle routine Function rientrano in due categorie, ovvero quelle dichiarate esplicitamente all'interno della routine e quelle che non lo sono. Le variabili dichiarate esplicitamente in una routine sono sempre locali rispetto alla routine. Anche le variabili utilizzate ma non dichiarate esplicitamente in una routine sono locali, a meno che non siano dichiarate esplicitamente al livello più alto esternamente alla routine.