Subroutine VBA di Excel: come chiamare Sub in VBA con l'esempio
⚡ Riepilogo intelligente
Una subroutine VBA di Excel raggruppa un blocco di codice che esegue un'attività senza restituire un valore. Questa pagina illustra le regole di denominazione, la sintassi di Sub, come richiamare una subroutine da un pulsante di comando e le differenze tra una subroutine e una funzione.

Cos'è una subroutine in VBA?
A Sottoprogramma in VBA è un pezzo di codice che esegue un'attività specifica descritta nel codice ma non restituisce un risultato o un valore. Le subroutine vengono utilizzate per scomporre grandi porzioni di codice in piccole parti gestibili. Le subroutine possono essere richiamate più volte da qualsiasi punto del programma.
Supponiamo che tu abbia creato un'interfaccia utente con caselle di testo per accettare dati di input utente. Puoi creare una subroutine che cancella il contenuto delle caselle di testo. Una subroutine di chiamata VBA è appropriata in uno scenario del genere perché non vuoi restituire alcun risultato.
Perché utilizzare le subroutine
- Suddividi il codice in piccolo codice gestibile: Un programma per computer medio ha migliaia e migliaia di righe di codice sorgente. Ciò introduce complessità. Le subroutine aiutano a risolvere questo problema suddividendo il programma in piccoli pezzi di codice gestibili.
- Code riusabilità. Supponiamo che tu abbia un programma che deve accedere al database, quasi tutte le finestre del programma dovranno interagire con il database. Invece di scrivere codice separato per queste finestre, puoi creare una funzione che gestisce tutte le interazioni con il database. Puoi quindi chiamarla da qualsiasi finestra tu voglia.
- Le subroutine e le funzioni sono autodocumentanti. Supponiamo che tu abbia una funzione calcolaLoanInterest e un'altra che dice connectToDatabase. Semplicemente guardando il nome della subroutine/funzione, il programmatore sarà in grado di capire cosa fa il programma.
Prima di scriverlo, il compilatore si aspetta che il nome segua una breve serie di regole.
Regole per denominare subroutine e funzioni
Per utilizzare subroutine e funzioni, è necessario seguire una serie di regole.
- Il nome di una subroutine o di una funzione di chiamata VBA non può contenere spazi
- Un nome di funzione o una chiamata secondaria VBA di Excel deve iniziare con una lettera o un carattere di sottolineatura. Non può iniziare con un numero o un carattere speciale
- Il nome di una subroutine o di una funzione non può essere una parola chiave. Una parola chiave è una parola che ha un significato speciale in VBA. Parole come Private, Sub, Function e End, ecc. sono tutti esempi di parole chiave. Il compilatore li utilizza per compiti specifici.
Una volta scelto un nome valido, la dichiarazione stessa segue uno schema fisso.
Sintassi della subroutine VBA
Dovrai abilitare la scheda Sviluppatore in Excel per seguire questo esempio. Se non sai come abilitare la scheda Sviluppatore, leggi il tutorial su Controlli VBA in Excel
QUI nella sintassi,
Private Sub mySubRoutine(ByVal arg1 As String, ByVal arg2 As String) 'do something End Sub
Spiegazione della sintassi
| Code | Action |
|---|---|
|
|
|
|
|
|
La seguente subroutine accetta il nome e il cognome e li visualizza in una finestra di messaggio.
Ora programmeremo ed eseguiremo questa Sub Procedure. Vediamo questo.
Come chiamare Sub in VBA
Di seguito è riportato un processo passo passo su come chiamare Sub in VBA:
- Progettare l'interfaccia utente e impostare le proprietà per i controlli utente.
- Aggiungi la subroutine
- Scrivere il codice dell'evento clic per il pulsante di comando che richiama la subroutine
- Prova l'applicazione
Passo 1) Interfaccia utente
Progetta l'interfaccia utente come mostrato nell'immagine seguente.
Imposta le seguenti proprietà. Le proprietà che stiamo impostando:
| S / N | Controllate | Proprietà | Valore |
|---|---|---|---|
| 1 | PulsanteComando1 | Nome | btnDisplayFullName |
| 2 | Didascalia | Subroutine nome completo |
La tua interfaccia ora dovrebbe apparire come segue.
Passo 2) Aggiungi subroutine
- Premi Alt + F11 per aprire la finestra del codice
- Aggiungere la seguente subroutine
Private Sub displayFullName(ByVal firstName As String, ByVal lastName As String) MsgBox firstName & " " & lastName End Sub
QUI nel codice,
| Code | Azione |
|---|---|
|
|
|
|
|
|
Passo 3) Chiamare la subroutine
Chiamare la subroutine dall'evento clic del pulsante di comando.
- Fai clic con il pulsante destro del mouse sul pulsante di comando come mostrato nell'immagine sottostante. Seleziona Visualizza Code.
- Si aprirà l'editor del codice
Aggiungere il seguente codice nell'editor di codice per l'evento click del pulsante di comando btnDisplayFullName.
Private Sub btnDisplayFullName_Click() displayFullName "John", "Doe" End Sub
La finestra del codice ora dovrebbe apparire come segue
Salva le modifiche e chiudi la finestra del codice.
Passo 4) Testare il codice
Sulla barra degli strumenti dello sviluppatore disattiva la modalità di progettazione. Come mostrato di seguito.
Passo 5) Fare clic sul pulsante di comando 'Subroutine FullName'.
Otterrai i seguenti risultati
Un pulsante è comodo, ma non è l'unico modo per avviare una subroutine e, durante lo sviluppo, raramente è il più veloce.
Come eseguire una subroutine senza un pulsante
Mentre stai ancora scrivendo il codice, aggiungere un controllo al foglio solo per testare una subroutine è una perdita di tempo. VBA offre altri quattro modi per eseguirne una, ognuno adatto a una fase diversa del ciclo di sviluppo.
- Premi F5 nell'editor: Posiziona il cursore in un punto qualsiasi all'interno della Sub e premi F5. L'esecuzione avviene immediatamente. Questo funziona solo quando la Sub non accetta argomenti, perché VBA non ha valori da fornire.
- Esegui la procedura passo passo con F8: La stessa esecuzione, una riga alla volta, in modo da poter osservare ogni variazione di variabile nella finestra Variabili locali. Utilizzala quando un risultato è errato e devi capire dove si trova l'errore.
- Utilizzare la finestra di dialogo Macro: Nella scheda Sviluppatore, fai clic su Macro, seleziona il nome e fai clic su Esegui. In questo elenco vengono visualizzate solo le Sub pubbliche senza argomenti, motivo per cui una Sub di supporto viene solitamente dichiarata privata.
- Chiamalo da un altro Sub: Questo è il metodo utilizzato per qualsiasi Sub che accetta argomenti, ed è quello su cui si basa il pulsante di comando qui sopra.
L'ultima opzione prevede due forme accettabili. Scrivere il nome seguito da argomenti semplici funziona, così come utilizzare esplicitamente la parola chiave Call, ma la regola per le parentesi quadre è diversa in entrambi i casi.
Sub RunTheGreeting() ' Form 1: no Call keyword, no brackets displayFullName "John", "Doe" ' Form 2: Call keyword, brackets required Call displayFullName("Jane", "Roe") End Sub
Entrambe le righe svolgono esattamente la stessa funzione. Mescolare le due forme, scrivendo le parentesi senza la parola chiave Call, è la causa più comune dell'errore di compilazione "Expected: =" quando una Sub accetta più di un argomento.
Differenza tra una Sub e una Function in VBA
Sub e Function sono i due tipi di procedura in VBA, e i principianti spesso scelgono quello sbagliato. La domanda decisiva è semplice: il codice chiamante ha bisogno di un valore in cambio?
| Caratteristica | Sub | Funzione |
|---|---|---|
| Restituisce un valore | Non | Sì, assegnato al nome della funzione |
| Dichiarato con | Sub … Fine Sub | Funzione … Fine funzione |
| chiamato come | Una dichiarazione a sé stante | Parte di un'espressione, ad esempio x = myFunc(2) |
| Utilizzabile in una cella del foglio di lavoro | Non | Sì, come funzione definita dall'utente |
| Utilizzo tipico | Formatta un foglio, cancella i dati inseriti, mostra un messaggio | Calcola un totale, converti un valore, cerca i dati |
Utilizzare una Sub quando il codice agisce sulla cartella di lavoro e una Funzione VBA quando il codice produce una risposta che viene poi utilizzata da qualcos'altro.






