Differenze tra Sub e Function in VBA
Oggi dedichiamo questa lezione di introduzione al VBA alle differenze tra Sub (procedure o subroutine) ed alle Function (Funzioni).
Entrambe sono un’insieme di istruzioni che vengono eseguite in successione, le due differenze sostanziali sono che la Function restituisce un risultato alla fine dell’elaborazione mentre la Sub non lo fa ed in secondo luogo che la Sub deve essere chiamata da un’evento come ad esempio la pressione di un bottone, l’esecuzione da VBE o la chiamata da un’altra Sub mentre la funzione può essere anche richiamata direttamente da una cella di Excel e verrà eseguita ad ogni aggiornamento del foglio.
Prima di proseguire vi consiglio di creare un Modulo per poter replicare i 2 esempi riportati qui sotto.
Le Sub
Quando registrate una macro con il registratore di Macro quella che viene creata è appunto una Sub, quindi esegue la procedura, modifica apetto delle celle e valori ma non restituisce un risultato delle operazioni compiute al suo interno.
Una Sub esegue le istruzioni comprese tra Sub ed End Sub. Un esempio di Sub vuota è:
Sub PrimaSub() 'qui vanno inserite le istruzioni End Sub
Come potete vedere la sua definizione è veramente semplice. Dichiariamo la Sub ed il suo nome, a seguire le due parentesi che possono ospitare all’interno dei parametri da passare alla stessa per l’elaborazione (es. un riferimento ad una cella o una stringa), il blocco di istruzioni ed infine End Sub per dichiarare che la routine è teminata.
Vediamo un’esempio di Sub funzionante
Sub CiaoMondo() MsgBox "Ciao Mondo" End Sub
Quando questa Sub viene eseguita mostra un messaggio con la scritta “Ciao Mondo”.
Le Function
La struttura delle Function è identica a quella delle Sub
Function PrimaFunction() 'qui vanno inserite le istruzioni End Function
Come dicevamo, a differenza delle Sub, le Function possono restituire un valore. Vengono usate solitamente per creare quelle che vengono chiamate UDF (User Defined Function) ovvero funzioni personalizzate che non sono presente in Excel.
Come per le Sub tra le parentesi possono essere indicati dei parametri che verranno processati durante l’esecuzione della funzione stessa. Come abbiamo detto le funzioni, a differenza delle Sub, possono essere richiamate direttamente da una cella di Excel.
Vediamo un esempio pratico
Function Ciao(ByVal nome) as String Ciao = "Ciao " & nome End Function
Ora possiamo richiamare la funzione scrivendo in una cella di Excel
=Ciao("TuttoExcel")
il risultato sarà mostrato direttamente nella cella con la stringa “Ciao TuttoExcel”.
Come potrete immaginare imparare a scrivere delle Function può risolvere parecchi dei nostri problemi quotidiani ed è proprio questo lo scopo che mi prefiggo con tutti gli articoli che verranno dedicati alle Macro in Excel ed al VBA.
Spero che la differenza tra Sub e Function vi sia ora chiara, presto approfondiremo l’argomento.
Vi aspetto nei commenti per qualunque dubbio 🙂
A presto
Una risposta
[…] appuntamento con gli articoli dedicati al VBA. Nell’articolo precedente abbiamo visto le differenze tra Sub e Function, ma prima di iniziare a scrivere del codice che abbia una qualche funzionalità è bene imparare […]