Excel VBA: cos’è una Routine di Visual Basic for Applications?

Lo so, Excel VBA non è una novità assoluta per te… Ne hai sentito parlare, ma non ti sei mai cimentato su una sola riga di codice Visual Basic.
Se hai già qualche rudimento, continua a seguirmi per i prossimi articoli di questa sezione (potrei avere qualche suggerimento anche per te). Se invece ti senti un programmatore VBA esperto, contattami in privato e verifichiamo come possiamo collaborare 😉

Excel VBA (non solo macro…)

Spesso si tende a confondere l’utilizzo di un linguaggio specifico di programmazione (appunto VBA) con le famigerate registrazioni di macro Excel.

Queste ultime sono operazioni registrate nella loro sequenza (poi tradotte automaticamente in VBA). Mentre l’utilizzo di un editor di codice consente un approccio diretto, non più semplice, alla scrittura di automatismi per il nostro foglio di lavoro.

Anche la modifica di una macro registrata ti permette di atterrare sul temibile editor di Microsoft Visual Basic. Se registro una macro per inserire un valore numerico all’interno della cella A1, ottengo questo codice:

Macro e Excel VBA
Macro e Excel VBA

Inizio e fine di una routine

L’operazione registrata è stata trascritta in una decina di righe di codice: ma solo due righe descrivono esattamente la sequenza.

ActiveCell.FormulaR1C1 = “6”

Inserisce nella cella attiva il valore 6. Posso registrare anche una formula, che viene scritta in modalità Riga / Colonna.

Range(“A2”).Select

Applica il metodo Seleziona (Select) alla cella A2 (qui identificata con il suo nome classico).

Tutto il contorno è delimitato dall’istruzione Sub e End Sub, che stabilisce i confini della procedura (o routine) che verrà eseguita e restituita a un controllo. Il controllo che attiva la “macro” è normalmente un pulsante di comando.

Tutto il testo in verde, aperto in ogni riga da un apostrofo, è invece testo di commento. Questa è una parte indispensabile per il programmatore (che può così spiegare a se stesso e a eventuali terzi il senso di una porzione di codice), ma ininfluente nella sequenza delle istruzioni. Rimane sempre utile per escludere righe di codice nella fase di test.

L’esecuzione di questa routine (dalla finestra Macro o con il pulsante Play) comporterà l’inserimento del valore 6 nella cella attiva del momento e si completerà con la selezione della cella A2.

Come si modifica una routine

Se vogliamo invece inserire lo stesso valore in una cella predeterminata, per esempio sempre nella cella A1, possiamo cambiare la riga 9 con la seguente:

Range(“A1”).Value = “6”

Assegna alla cella A1 un contenuto con la proprietà Valore (Value).

Routine VBA modificata
Routine VBA modificata

Infine per consentire l’esecuzione della “macro” all’utente finale del foglio di lavoro, possiamo disegnare un pulsante di comando, selezionando l’elemento dalla scheda Sviluppo. Se questa scheda non è attiva, controlla le opzioni di Excel > Barra Multifunzione e barra di accesso rapido.

Una volta disegnato il pulsante si propone la finestra di assegnazione Macro. Qui devi selezionare la macro che ha lo stesso nome della routine (es. Quoz_input) e cominciare il test.

Pulsante con Macro VBA assegnata
Pulsante con Macro VBA assegnata

Nella prossima puntata vedremo come raccogliere e gestire un valore inserito nel foglio da un utente.

Qui puoi scaricare l’esempio di routine spiegato in questo articolo.
N.B. I file di Excel che contengono Macro VBA devono essere salvati nel formato .xlsm e richiedono una conferma di abilitazione macro in apertura.

Come abilitare una macro di Excel
Come abilitare una macro di Excel

Stay tuned!
A presto e buon lavoro.

6.580 views

Autore: Marco Angelucci ©2024

Docente e consulente su applicativi web e di office automation.

Più di 20 anni di esperienza nella realizzazione di siti web e di applicativi per la gestione dei dati (Web-based e VBA).
Specialista in ambito UX (User Experience), SEO (Search Engine Optimization) e nella produzione di contenuti digitali per diversi ambiti commerciali e industriali.



Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *


The reCAPTCHA verification period has expired. Please reload the page.