Sai già che puoi usare le subroutine nelle tue macro. VBA ti consente anche di definire funzioni che possono essere utilizzate nelle tue macro. La differenza tra funzioni e subroutine è che le funzioni possono restituire valori, mentre le subroutine no. Considera la seguente macro:

Sub Macro1()

TooMany = TestFunc     If TooMany Then MsgBox "Too many columns selected"

End Sub
Function TestFunc()

TestFunc = False     If Selection.Columns.Count > 10 Then        TestFunc = True     End If End Function

La macro (Macro1) chiama la funzione TestFunc. Questa funzione restituisce il valore False o True, a seconda del test che esegue. Macro1 quindi agisce sul valore restituito. Notare che il nome della funzione può apparire sul lato destro di un segno di uguale. Ciò rende le funzioni molto potenti e una parte importante di qualsiasi programma. All’interno della funzione il risultato viene assegnato a TestFunc, che è il nome della funzione stessa; questo è il valore restituito dalla funzione.

Come con le subroutine, puoi anche passare parametri alle tue funzioni.

Questo è illustrato nella seguente macro:

Sub Macro1()

A = 12.3456     MsgBox A & vbCrLf & RoundIt(A)

End Sub
Function RoundIt(X) As Integer     RoundIt = Int(X + 0.5)

End Function

Questa semplice macro (Macro1) definisce un numero e quindi utilizza una finestra di messaggio per visualizzarlo e il risultato del passaggio del numero alla funzione RoundIt. L’output è 12.3456 e 12. Notare che il parametro deve essere passato alla funzione tra parentesi. Notare inoltre che la funzione non utilizza lo stesso nome di variabile che è stato passato. Questo perché VBA riassegna il valore di X (ciò di cui la funzione ha bisogno) in modo che corrisponda al valore di A (ciò che il programma sta passando alla funzione).

La cosa importante da ricordare quando si passano i parametri alle funzioni è che il programma deve passare lo stesso numero di parametri previsto dalla funzione e i parametri devono essere di tipo corrispondente e nell’ordine corretto.

_Nota: _

Se desideri sapere come utilizzare le macro descritte in questa pagina (o in qualsiasi altra pagina dei siti ExcelTips), ho preparato una pagina speciale che include informazioni utili.

ExcelTips è la tua fonte di formazione economica su Microsoft Excel.

Questo suggerimento (11765) si applica a Microsoft Excel 2007, 2010, 2013, 2016, 2019 ed Excel in Office 365. Puoi trovare una versione di questo suggerimento per l’interfaccia del menu precedente di Excel qui: