Parametri facoltativi di una sub o una funzione
È possibile specificare che un parametro di routine è facoltativo e non è necessario fornire alcun argomento quando la routine viene chiamata. I parametri facoltativi sono indicate dal Optional
parola chiave nella definizione della procedura. È necessario attenersi alle regole che seguono:
-
È necessario che ciascun parametro facoltativo nella definizione della routine specifichi un valore predefinito.
-
È necessario che tale valore predefinito per un parametro facoltativo sia un'espressione costante.
-
Ciascun parametro che segue un parametro facoltativo nella definizione della routine deve essere anch'esso facoltativo.
Nella sintassi seguente viene illustrata una dichiarazione di routine con un parametro facoltativo:
Chiamata di routine con parametri facoltativi
Quando si chiama una routine con un parametro facoltativo, è possibile scegliere se fornire l'argomento o meno. Se non lo si fornisce, la routine utilizza il valore predefinito dichiarato per quel parametro.
Quando si omettono uno o più argomenti facoltativi nell'elenco degli argomenti, utilizzare virgole in sequenza per contrassegnarne la posizione. La chiamata di esempio che segue fornisce il primo e il quarto argomento, ma non il secondo o il terzo:
Nell'esempio riportato di seguito vengono effettuate diverse chiamate alla funzione MsgBox
che include un parametro obbligatorio e due parametri facoltativi.
Nella prima chiamata a MsgBox
vengono forniti tutti e tre gli argomenti nell'ordine in cui sono definiti da MsgBox
. Nella seconda chiamata viene fornito solo l'argomento obbligatorio. Nella terza e quarta chiamata vengono forniti il primo e il terzo argomento. Nella terza chiamata gli argomenti vengono forniti in base alla posizione, nella quarta in base al nome.
Determinazione dell'eventuale presenza di un argomento facoltativo
Una routine non può rilevare, in fase di esecuzione, se un determinato argomento è stato omesso o se il codice di chiamata ha fornito in modo esplicito il valore predefinito. Se è necessario fare questa distinzione, è possibile impostare come predefinito un valore improbabile. La procedura seguente definisce il parametro facoltativo office
e ne verifica il valore predefinito, QJZ
, per vedere se è stato omesso nella chiamata:
Se il parametro facoltativo è un tipo di riferimento come String
, è possibile utilizzare Nothing
come valore predefinito, a meno che esso non sia un valore previsto per l'argomento.
Parametri facoltativi e overload
Un altro modo per definire una routine con parametri facoltativi consiste nell'utilizzare l'overload. Nel caso di un parametro facoltativo, è possibile definire due versioni di overload della routine, una con il parametro e l'altra senza. Questo metodo diventa più complesso con l'aumentare del numero dei parametri facoltativi, tuttavia ha il vantaggio di assicurare che il programma di chiamata fornisca tutti gli argomenti facoltativi.