Esercitazione sulle funzioni VBA di Excel: ritorno, chiamata, esempi
โก Riepilogo intelligente
Una funzione VBA di Excel รจ un blocco di codice che esegue un'attivitร e restituisce un risultato a chi l'ha richiamata. Questa pagina illustra la sintassi di dichiarazione, la restituzione di un valore, un esempio pratico di addizione e l'utilizzo di una funzione all'interno di una cella di un foglio di lavoro.

Che cos'รจ una funzione?
Una funzione รจ un pezzo di codice che esegue un'attivitร specifica e restituisce un risultato. Le funzioni vengono utilizzate principalmente per eseguire attivitร ripetitive come la formattazione dei dati per l'output, l'esecuzione di calcoli, ecc.
Supponiamo che tu stia sviluppandoping Un programma che calcola gli interessi su un prestito. ร possibile creare una funzione che accetta l'importo del prestito e il periodo di rimborso. La funzione puรฒ quindi utilizzare l'importo del prestito e il periodo di rimborso per calcolare gli interessi e restituire il valore.
Perchรฉ utilizzare le funzioni
I vantaggi dell'utilizzo delle funzioni sono gli stessi elencati per le subroutine: suddividono un programma lungo in parti gestibili, possono essere riutilizzate da qualsiasi punto del progetto e un nome descrittivo documenta cosa fa il codice. Tutorial sulle subroutine VBA di Excel copre interamente tali benefici.
Regole di denominazione delle funzioni
Le regole di denominazione sono identiche a quelle per le subroutine. Il nome di una funzione non puรฒ contenere spazi, deve iniziare con una lettera o un trattino basso e non puรฒ essere un tipo riservato. VBA parola chiave come Function, Private o End.
Sintassi VBA per dichiarare la funzione
Private Function myFunction (ByVal arg1 As Integer, ByVal arg2 As Integer) myFunction = arg1 + arg2 End Function
QUI nella sintassi,
| Code | Action |
|---|---|
|
|
|
|
|
|
|
|
Come restituire un valore e impostare il tipo di dati della funzione
Una funzione ha un compito che una subroutine non ha: restituisce un valore. Due dettagli controllano quel valore, ed entrambi sono facili da trascurare.
La prima รจ l'assegnazione. VBA non ha l'istruzione Return. Invece si assegna il risultato al nome della funzione stessa, motivo per cui la riga รจ miaFunzione = arg1 + arg2Se tale assegnazione non viene mai eseguita, la funzione restituisce silenziosamente un valore vuoto anzichรฉ generare un errore, quindi ogni ramo del codice deve impostarlo.
Il secondo aspetto riguarda il tipo di ritorno. La dichiarazione sopra riportata termina in corrispondenza della parentesi chiusa, quindi la funzione restituisce un oggetto Variant. L'aggiunta di una clausola As dopo le parentesi corregge il tipo, il che รจ piรน veloce, utilizza meno memoria e consente al compilatore di rilevare un'eventuale incongruenza.
| Dichiarazione | Resi | Quando usarlo |
|---|---|---|
| Funzione f(x As Long) | Variante | Solo quando il tipo di risultato varia effettivamente |
| Funzione f(x Fintanto) Fintanto | Lunghi | Numeri interi come conteggi e numeri di riga |
| Funzione f(x Finchรฉ) Double | Double | Qualsiasi calcolo che produca numeri decimali |
| Funzione f(x As Long) As Stringa | Corda | Testo formattato restituito per la visualizzazione |
| Funzione f(x As Long) As Boolean | Booleano | Un controllo di validazione che risponde vero o falso |
Suggerimento: Utilizza la funzione Exit per uscire anticipatamente una volta impostato il valore di ritorno, nello stesso modo in cui Exit Sub esce da una subroutine.
Funzione dimostrata con l'esempio:
Le funzioni sono molto simili alla subroutine. La differenza principale tra una subroutine e una funzione รจ che la funzione restituisce un valore quando viene chiamata. Mentre una subroutine non restituisce un valore, quando viene chiamata. Diciamo che vuoi aggiungere due numeri. Puoi creare una funzione che accetta due numeri e restituisce la somma dei numeri.
- Creare l'interfaccia utente
- Aggiungi la funzione
- Scrivi il codice per il pulsante di comando
- Testare il codice
Passo 1) Interfaccia utente
Aggiungi un pulsante di comando al foglio di lavoro come mostrato di seguito
Impostare le seguenti proprietร di CommandButton1 come segue.
| S / N | Controllate | Proprietร | Valore |
|---|---|---|---|
| 1 | PulsanteComando1 | Nome | btnAggiungiNumbers |
| 2 | Didascalia | Aggiungi Numbers Funzione |
La tua interfaccia ora dovrebbe apparire come segue
Passo 2) Codice funzione.
- Premi Alt + F11 per aprire la finestra del codice
- Aggiungere il seguente codice
Private Function addNumbers(ByVal firstNumber As Integer, ByVal secondNumber As Integer) addNumbers = firstNumber + secondNumber End Function
QUI nel codice,
| Code | Action |
|---|---|
|
|
|
|
|
|
Passaggio 3) Scrivere Code che chiama la funzione
- Fai clic con il pulsante destro del mouse sul pulsante AggiungiNumbers pulsante di comando
- Seleziona Visualizza Code
- Aggiungere il seguente codice
Private Sub btnAddNumbers_Click() MsgBox addNumbers(2, 3) End Sub
QUI nel codice,
| Code | Action |
|---|---|
| โMonsBox aggiungereNumbers(2,3) " |
|
Passo 4) Esegui il programma, otterrai i seguenti risultati
Scarica Excel contenente il codice sopra
Scarica il file Excel qui sopra Code
Il pulsante qui sopra richiama la funzione dal codice VBA. Una funzione puรฒ essere richiamata anche direttamente dal foglio di lavoro, senza bisogno di alcun pulsante.
Come utilizzare una funzione VBA in una cella di un foglio di lavoro
Una funzione scritta in VBA puรฒ essere digitata in una cella esattamente come SOMMA o CERCA.VERT. Excel la chiama funzione definita dall'utente, o UDF, ed รจ il motivo per cui molte persone imparano le funzioni prima delle subroutine. Devono essere soddisfatte tre condizioni.
- Inseriscilo in un modulo standard: Inserisci, Modulo nell'editor. Una funzione memorizzata dietro un foglio di lavoro o in ThisWorkbook non รจ visibile nella barra della formula.
- Dichiaralo pubblico: L'esempio precedente utilizza l'impostazione "Privato", che lo nasconde a Excel. L'impostazione predefinita รจ "Pubblico", quindi รจ sufficiente rimuovere la parola chiave.
- Restituisci un valore, senza modificare nulla: Una funzione definita dall'utente (UDF) non puรฒ formattare le celle, eliminare righe o scrivere in un'altra cella. Excel blocca queste azioni e la cella visualizza #VALORE!.
La funzione seguente converte una temperatura e puรฒ essere utilizzata in qualsiasi punto del foglio.
Public Function CelsiusToF(ByVal Celsius As Double) As Double CelsiusToF = (Celsius * 9 / 5) + 32 End Function
Salva la cartella di lavoro come file .xlsm con macro abilitate, quindi digita =CelsiusToF(A1) in qualsiasi cella. Il risultato si aggiorna ogni volta che A1 cambia e il nome appare nell'elenco di completamento automatico delle formule nella categoria Definite dall'utente. Poichรฉ la cartella di lavoro ora contiene macro, chiunque la apra deve abilitare il contenuto prima che la formula restituisca un valore anzichรฉ #NOME?.
Errori comuni delle funzioni VBA e come risolverli
Quattro problemi spiegano la maggior parte delle funzioni che vengono compilate ma restituiscono un risultato errato.
- La funzione restituisce Vuoto o 0: Il risultato non รจ mai stato assegnato al nome della funzione, oppure un ramo di un'istruzione If salta l'assegnazione. Imposta il valore di ritorno su ogni percorso.
- #NOME? nella cella del foglio di lavoro: La funzione รจ privata, si trova in un modulo di foglio di calcolo anzichรฉ in un modulo standard, oppure la cartella di lavoro รจ stata salvata senza le macro abilitate.
- Overflow con argomenti interi: L'esempio utilizza il tipo Integer, che si ferma a 32,767. Per dati reali, modificare entrambi i parametri e il tipo di ritorno in Long.
- Un argomento modificato coglie di sorpresa chi chiama: Omettendo ByVal, VBA passa direttamente la variabile, consentendo alla funzione di modificarne il valore. Scrivere ByVal a meno che non si desideri tale effetto.



