La differenza tra una funzione e un sub in Excel VBA è che una funzione può restituire un valore, mentre un sub non può. Funzioni e sottomarini diventano molto utile al crescere della dimensione del programma.

Funzione

Se si vuole Excel VBA per eseguire un compito che restituisce un risultato, è possibile utilizzare una funzione. Mettere una funzione in un modulo (in Visual Basic Editor, fare clic su Inserisci, Module). Ad esempio, la funzione con il nome Area.

Function Area(x As Double, y As Double) As Double

Area = x  y

End Function

Spiegazione: Questa funzione ha due argomenti (di tipo Double) e di un tipo di ritorno (la parte dopo quanto anche di tipo doppio). È possibile utilizzare il nome della funzione (area) nel codice per indicare quale risultato si vuole tornare (qui x y).

A questo punto è possibile fare riferimento a questa funzione (in altre parole chiamano la funzione) da qualche altra parte nel codice, semplicemente utilizzando il nome della funzione e dare un valore per ogni argomento.

Mettere un link: / VBA-Create-a-macro # Comando-tasto [pulsante di comando] nel foglio di lavoro e aggiungere le seguenti righe di codice:

Dim z As Double

z = Area(3, 5) + 2

MsgBox z

Spiegazione: La funzione restituisce un valore in modo da avere a ‘catturare’ questo valore nel codice. È possibile utilizzare un’altra variabile (z) per questo. Successivamente, è possibile aggiungere un altro valore a questa variabile (se si desidera). Infine, visualizzare il valore utilizzando un MsgBox.

Risultato quando si fa clic sul pulsante di comando sul foglio:

Excel VBA Function Result

Sub

Se si vuole Excel VBA per eseguire alcune azioni, è possibile utilizzare un sub. Mettere un sub in un modulo (in Visual Basic Editor, fare clic su Inserisci, Module).

Ad esempio, il sub con il nome Area.

Sub Area(x As Double, y As Double)

MsgBox x * y

End Sub

Spiegazione: Questo sotto ha due argomenti (di tipo Double). Non ha un tipo di ritorno! È possibile fare riferimento a questo sub (chiamare il sub) da qualche altra parte nel codice, semplicemente utilizzando il nome del sub e dare un valore per ogni argomento.

Mettere un link: / VBA-Create-a-macro # Comando-tasto [pulsante di comando] nel foglio di lavoro e aggiungere la seguente riga di codice:

Area 3, 5

Risultato quando si fa clic sul pulsante di comando sul foglio:

Excel VBA Sub Result

Riesci a vedere la differenza tra la funzione e il sub? La funzione restituisce il valore 15. Abbiamo aggiunto il valore 2 a questo risultato e visualizzato il risultato finale. Quando abbiamo chiamato il sub non avevamo un maggiore controllo sul risultato (15), perché un sub non può restituire un valore!