Come scrivere e apprendere il Vba

By | 6 Dic 2018

Come si scrive una macro? Come si gestiscono gli errori? Come si impara il vba? Nei post precedenti abbiamo visto cos’è il vba, cos’è la programmazione a oggetti, come si progettano e strutturano le macro. In questa ultima parte dell’introduzione al vba parliamo di scrittura, errori e apprendimento del vba.

Quindi quale struttura deve avere la tua macro?

Nel post precedente abbiamo visto che una macro ha una sua struttura determinata dalla logica, dalla natura del vba e di Excel. Scriviamo le dichiarazioni all’inizio della macro perché servono al codice che segue, scriviamo i blocchi di codice che chiedono input all’operatore prima di elaborarli, scriviamo il codice per controllare questi input, dopo l’interazione con l’operatore e prima dell’elaborazione. E via dicendo.

Essere consapevoli di queste relazioni tra gli elementi del codice, quindi della struttura che questo assume, ci dà una falsariga da seguire nella scrittura del codice, molto utile per chi è agli inizi, comoda per gli altri.

Questo significa che devi imporre una struttura al codice?

No, se il codice viene scritto secondo le regole e nel modo migliore, assumerà spontaneamente una struttura propria a seconda delle attività che svolge e del vba che abbiamo usato. Se è una macro piccola, avrà una struttura minima, tipo: dichiarazioni + attività operative, oppure dichiarazioni + controllo condizioni iniziali + attività operative.

D’altra parte se la macro excel è grande e complessa avrà una struttura articolata e distribuita, scomposta su macro diverse richiamate da quella principale. Per esempio: dichiarazioni a inizio modulo + dichiarazioni in macro + controlli iniziali + interazione + attività operative + controlli + attività operative + decisioni e via dicendo.

La maggior parte delle macro presenta strutture simili a questa:

  1. Dichiarazioni
  2. Controlli (Opzionale)
  3. Interazione con l’operatore (Opzionale)
  4. Attività operative
  5. precedute o accompagnate da Decisioni (Opzionale)
  6. Chiusura e ripristino (Opzionale)
  7. Gestione degli errori (Opzionale)

Di solito le macro non troppo piccole o troppo grandi hanno strutture che sono semplificazioni, riduzioni, o elaborazioni di questa, che ripeto vuol essere solo una traccia.

In realtà l’esperienza ti mostrerà come le strutture possono essere molto più definite e articolate e che le sole attività operative possono assumere strutture molteplici anche complesse e che sono loro a determinare la struttura complessiva delle macro.

Finché non diventerai un esperto, quello che ti invito a fare è usare le strutture che il codice assume come falsariga da seguire nello sviluppo, perché ti semplificherà la vita e renderà più efficiente il tuo lavoro. Una falsariga che naturalmente va adattata alle situazioni e ai diversi progetti. E in realtà è una cosa che faresti comunque, che tutti facciamo, anche senza rendersene conto.

Prima che me lo chiedi parliamo della chiusura.

Chiusura della macro

È un’attività accessoria spesso inesistente che consiste in qualche riga di codice dedicata soprattutto alla gestione e al ripristino delle impostazioni di excel e di alcuni aspetti del codice. Per esempio:

  1. è necessario inserire un comando per chiudere la macro (es: “Exit sub”) in presenza di codice per la gestione degli errori posizionato in fondo alla macro, altrimenti verrebbe eseguito comunque;
  2. nel caso tu abbia assegnato una variabile a un oggetto (Set), è buona pratica rilasciare le risorse con una dichiarazione “Set VARIABILE = Nothing”; non è necessario, è consigliato, ma se sei un principiante passa oltre, ritornaci più avanti;
  3. questo è preceduto dall’eventuale messaggio all’utente di conferma dell’avvenuta esecuzione, nel caso di macro di lunga durata che non offrono risultati percepibili immediatamente a schermo (comparsa di oggetti, cambio di pagina, eccetera),
  4. questo può essere preceduto dall’eventuale ripristino dei messaggi di errore, dell’aggiornamento schermo ed eventi (Application.ScreenUpdating = True, Application.DisplayAlerts = True, Application.EnableEvents = True), se sono stati disabilitati all’inizio della macro con gli analoghi comandi (= False)
  5. preceduto eventualmente, per fogli di lavoro stabili e strutturati, dall’aggiornamento di parametri e indicatori sulle pagine (es: data di esecuzione), o di pagine o file di configurazione.

La lista potrebbe continuare, ma volevo mostrarti che ci sono attività secondarie legate alla gestione del codice, o del foglio, o della macro che possono richiedere attenzione e codice.

Come iniziare una macro

 

Come iniziare una macro vba

Invece come si inizia una macro?

Potrei proporti una lista di “attività secondarie” utili e migliorative da porre all’inizio della macro, diciamo prima del codice operativo, ma non credo sia importante adesso.

Se sei un principiante per te la macro inizia con le dichiarazioni delle variabili.

Solo due consigli:

  1. dopo il nome della macro, inserisci sempre un commento per spiegare lo scopo della macro e le note importanti, al massimo due righe;
  2. se devi lavorare sugli oggetti del foglio, passare da una pagina all’altra, spostare il cursore molte volte, questo può generare effetti visivi fastidiosi (flickering) che può essere opportuno nascondere, bloccando l’aggiornamento dello schermo con il comando “Application.ScreenUpdating = False”; lo metti prima del codice operativo, ma devi ricordardi di ripristinare l’aggiornamento prima della chiusura della macro con Application.ScreenUpdating = True.

Adesso vediamo una sintetica introduzione alle variabili.

Dichiarare le variabili

Come abbiamo già detto, le informazioni che servono alle procedure, per essere elaborate, per la gestione (es: contatori) e più in generale le informazioni che devono essere utilizzate più volte dalla macro, richiedono di essere memorizzate. Come? Inserendole in “contenitori” chiamati “variabili” che impegnano porzioni di memoria dedicata. Questo avviene con la dichiarazione delle variabili.

Il linguaggio Vba prevede che la dichiarazione avvenga prima del primo utilizzo del dato, ma può essere fatto in modi e momenti diversi a seconda dell’utilità della variabile.

Le variabili possono essere dichiarate all’interno del codice, perfino all’interno di strutture effimere come i cicli, ma più tradizionalmente vengono dichiarate all’inizio della macro e avranno validità limitata alla macro e durata di vita limitata all’esecuzione della stessa.

Oppure possono essere dichiarate all’inizio del modulo, fuori dalle macro, e avere validità per tutte le macro del modulo (Private NOME_VARIABILE As tipo_dati). Possono anche essere dichiarate pubbliche (Public NOME_VARIABILE As tipo_dati) e avere validità su tutte le procedure di tutti i moduli.

La dichiarazione delle variabili ha questa sintassi:

Dim NOME_VARIABILE As tipo_dati

Per esempio, “Dim I as Integer” è la tipica dichiarazione di un contatore, mentre “Dim DataFattura as Data” è la dichiarazione di una data, “Dim NomePagina as String” è la variabile che servirà a gestire il nome di una nuova pagina. La dichiarazione può essere multipla, per esempio “Dim I as Integer, DataFattura as Data, NomePagina as String”, cioè si possono dichiarare più variabili nella stessa riga di codice.

Per poter meglio gestire le variabili e la memoria che occupano, per migliorare l’efficienza della procedura e per minimizzare problemi di varia natura (es: sicurezza) è consigliato che le variabili vengano dichiarate indicando il tipo di dato che dovranno contenere.

Ci sono molti tipi di dati, i più usati sono:

  1. Integer, numero interi con segno compreso fra -32768 a 32767;
  2. Boolean, valore di tipo logico che può assumere il valore vero o falso (True o False);
  3. String, sequenza di caratteri (stringa);
  4. Date, variabile usata per memorizzare date e ore;
  5. Long, numeri interi compresi fra -2.147.483.648 e 2.147.483.647;
  6. Single: numeri reali a singola precisione (es: 1,47 o 376,45);
  7. Variant, tipo di variabile universale che può contenere dei dati di qualsiasi formato.

Non sono gli unici tipi di variabili (es: variabili double, byte, oggetti, variabili matrice, ecc), ma rimandiamo il complesso argomento della dichiarazione e gestione delle variabili ad approfondimenti specifici.

È necessario dichiarare le variabili?

No, il motore di Excel riconoscerà le variabili e assegnerà la memoria necessaria per la loro gestione. Ogni volta che non viene indicato il tipo della variabile, viene assegnato in automatico un tipo Variant alla variabile. Ti sto dicendo che puoi scrivere il codice senza dichiarazioni e funzionerà lo stesso, sarà più lento, ma funzionerà.

Naturalmente è consigliato e opportuno dichiarare correttamente le variabili per i motivi espressi poco sopra (efficienza, meno problemi). È una cosa che dovrai imparare e bene se vuoi realizzare macro evolute.

Come si scrive una macro

Come scrivi la tua macro?

La macro che devi scrivere è composta da righe di codice, raggruppate in blocchi di codice che svolgono attività diverse e sono posizionati in una struttura definita con un ordine e una logica precisi.

Ma come scrivi le righe di codice?

Prendi il progetto che hai realizzato con la mappa del cosa e del come, con l’obiettivo e la lista delle attività e di come realizzarle, con l’indicazione di oggetti e strumenti, di input, controlli, decisioni, alternative e output.

Rileggilo tutto dall’inizio alla fine. Poi prendi la struttura generica di riferimento che ho suggerito qui sopra e adattala alle attività della mappa. Togli il di più o aggiungi quello che manca, poi scrivila nella macro usando i commenti.

Ora scrivi le righe di codice che eseguono la prima attività della mappa, aggiungi un’attività alla volta, dall’alto verso il basso. Devi solo tradurre la mappa nel codice. All’inizio ignora il controllo degli errori, le dichiarazioni e le attività secondarie, concentrati sulle attività operative. Lavora sugli oggetti che conosci, studiali bene, impara a manipolare le proprietà e a lanciare i metodi. Usa solo le funzioni che servono finché non le conosci come le tue tasche.

Cerca di ottenere macro funzionanti così. Poi aggiungi il resto un poco alla volta. Quando hai bisogno di un input aggiungi un’interazione con l’operatore, quando hai bisogno di un controllo, aggiungi un test e definisci le condizioni, quando hai bisogno di una variabile la all’inizio della routine, e così via.

Un poco alla volta ti ricorderai il vocabolario che serve e la sintassi che conta. Un poco alla volta saprai in anticipo le dichiarazioni che devi scrivere, un poco alla volta scoprirai che ti diverti a farlo. Quasi come quando hai imparato la tua prima lingua abbastanza per parlare con i madrelingua. Un’emozione che lascia il segno.

Poi le cose diventeranno sempre più semplici e veloci, e i tuoi fogli excel faranno corse sorprendenti.

Naturalmente non devi farti prendere la mano, non esagerare e non perdere il controllo del flusso.

La gestione del flusso

Avrai notato che fino ad ora ho ripetutamente parlato di esecuzione del codice, di flusso, di controllo dell’esecuzione del codice, di comandi per modificare l’esecuzione del codice, eccetera, per esempio parlando della funzione If/Then che permette di decidere se eseguire una porzione di codice o quale codice eseguire tra più alternative.

Penso sia opportuno approfondire l’argomento.

Come viene eseguito il codice?

Il codice viene eseguito dal motore di Excel riga per riga dall’inizio alla fine. Punto. Però per la natura stessa del linguaggio e per dare la possibilità di realizzare procedure efficaci, flessibili e intelligenti, il vba prevede e offre diversi strumenti che agiscono sull’esecuzione del codice. Questo per motivi naturali, dal bisogno di interrompere il codice, a quello di poter ripetere porzioni di codice, dalla possibilità di saltare in un’altra posizione al bisogno di eseguire il codice solo a certe condizioni.

Vediamo gli strumenti più importanti e come intervengono sul codice:

  1. Funzioni di uscita/fine, sono strumenti che fermano l’esecuzione del codice in modo parziale (es: Exit For blocca il ciclo For) o definitivo (Es: End). Sono necessarie per evitare che il codice venga eseguito comunque, inutilmente o peggio, con conseguenze non volute. Le funzioni più note sono:
    1. Exit, che appunto fa uscire dalla routine (Exit Sub) o dalle strutture di codice come cicli (es: Exit For, Exit Do, ecc);
    2. End, termina l’esecuzione
  2. Funzioni di loop, cioè che ripetono il codice, sono i cicli che abbiamo già visto e servono per evitare di scrivere ripetutamente lo stesso codice uguale. Le funzioni di loop più note sono For/Next e Do/Loop, già descritte in precedenza
  3. Funzioni decisionali, sono quelle funzioni che a seconda di una o più condizioni limitano l’esecuzione di porzioni di codice, o eseguono una porzione di codice piuttosto che una alternativa. Le funzioni più note sono:
    1. If/Then che abbiamo già visto in precedenza,
    2. Select Case, una funzione che esegue una tra diversi gruppi di codice preimpostati a seconda del valore di un’espressione.
  4. Funzioni di salto, che spostano l’esecuzione a un punto preciso della procedura, per il Vba:
    1. Goto che salta in modo diretto e incondizionato a un marcatore preimpostato,
    2. Resume, che permette di riprendere l’esecuzione dopo il codice di gestione degli errori.

È importante conoscere queste funzioni e usarle quando servono, dove servono nel modo migliore. Questo significa anche non generare flussi di esecuzione inutilmente complessi e contorti, per esempio usando inutilmente i salti (Goto), o annidando inutilmente troppo il codice. L’annidamento del codice è l’inserimento di codice in cicli e strutture condizionali.

Scrivere codice leggibile

Scrivere codice leggibile

È utile spendere due parole sull’aspetto della scrittura del codice Vba perché la qualità del risultato e il tempo speso per realizzarlo dipende anche dalla leggibilità del codice. Quando scrivi il codice, come quando scrivi qualunque altra cosa, dalla poesia alla lista della spesa, devi rendere la scrittura leggibile, anzi il più leggibile possibile a chi dovrà leggerlo.

Per lo sviluppo del codice questo significa, per esempio:

  1. evidenziare i comandi rilevanti del linguaggio (se ne occupa il vbe),
  2. rendere identificabili i blocchi di codice, regolando gli spazi tra i “moduli” di codice e i rapporti tra pieno e vuoto nel testo,
  3. rendere distinguibili i “livelli” del codice, attraverso indentazione delle righe di codice,
  4. distinguere la parte eseguibile da quella non, evidenziandola con colore diverso,
  5. mantenere il testo nella schermata, senza costringere il lettore a muoverla destra–sinistra,

e altro ancora.

Affinché il codice delle macro sia leggibile e facilmente gestibile è quindi utile e consigliato:

  1. Tornare a capo con le righe troppo lunghe

Durante la scrittura, la riga del codice potrebbe diventare molto lunga e uscire dalla schermata, costringendo a scorrere verso destra per leggerlo. In questi casi è consuetudine che il codice venga riportato su più righe spezzandolo e aggiungendo a fondo riga il marcatore di interruzione di riga: uno spazio seguito da “_” (underscore). In questo modo la riga di codice verrà considerata dal vbe come un’unica riga.

  1. Indentare il codice

Le macro possono essere composte anche da centinaia di righe di codice, ma è sempre buona pratica formattare il codice per rendere più facile la lettura e la comprensione del codice. Come?

Semplicemente applicando alle righe di codice rientri tali da evidenziarne la struttura, porre su “livelli” diversi il codice inserito dentro strutture di controllo, come cicli (es: For Next) e strutture condizionali (es: If Then Else) allo scopo di esplicitare l’annidamento e le relazioni. Per indentare il codice è sufficiente premere Tab a inizio riga per spostare il cursore e il codice di quattro spazi. Premendo Maiusc+Tab si rimuoverà l’effetto del Tab.

  1. Commentare il codice

Durante la scrittura di codice è consigliabile sempre inserire note e commenti per spiegare lo scopo del codice o altro. Per farlo è sufficiente aggiungere a inizio riga il marcatore dei commenti, un apostrofo (’). Le righe cosi marcate cambieranno colore diventando verdi e verranno ignorate durante l’esecuzione del codice. Per questo motivo abitualmente l’apostrofo è usato anche per sospendere quelle righe di codice che non si vuole eseguire, o cancellare.

Ma l’uso principale dei commenti è quello di conservare e comunicare informazioni sul codice stesso, soprattutto sul suo scopo e so cosa fa. Se sei alle prime armi ti invito a prendere l’abitudine a di scrivere con cura le tue macro per poter ricordare il tuo lavoro quando le riprenderai in mano.

Adesso è tempo di parlare di errori.

Eliminare gli errori con il debugging

Siamo esseri umani e facciamo errori, nulla di nuovo, ma quando sviluppiamo è importante che il codice sia esente da errori per evitare danni e perdite ai dati o ai nostri fogli di lavoro che possono portare a sprechi di tempo anche significativi.

Per eliminare gli errori dalle nostre macro, il vbe ci mette a disposizione una serie di strumenti che ci aiutano durante la scrittura, come lo strumento di controllo della sintassi che di fatto elimina gli errori di sintassi. D’altra parte ci sono molti tipi di errore (logici, runtime, ecc) e soprattutto agli inizi è piuttosto facile inserire errori nel codice.

Come facciamo a rimuovere gli errori?

Con il debugging, cioè eseguendo il codice e controllandone i risultati. Una volta terminata la scrittura dobbiamo testare la macro usando gli strumenti specifici che l’ambiente di sviluppo ci mette a disposizione. I principali sono la possibilità di mettere in pausa l’esecuzione e quindi la possibilità di eseguire il codice riga per riga.

Poi ci sono gli strumenti con cui possiamo controllare gli effetti del codice sul codice stesso (es: il valore che assumono le variabili) senza dimenticare che dobbiamo sempre controllare gli effetti del codice sul foglio di lavoro.

Il debugging è un mondo, un lavoro e per alcuni un’arte, ma parleremo del debug del codice in post dedicati. Penso sia importante sottolineare che spesso il debug non elimina tutti gli errori, in particolare non rimuove quelli generati da situazioni impreviste.

Cioè il codice può essere esente da errori formali, ma può contenerne dei potenziali se si presentano situazioni impreviste che influenzano l’esecuzione del codice. Per esempio, se i dati elaborati contengono errori, o se assumono valori anomali (es: troppo grandi o nulli), oppure se cambiamo la struttura del foglio o degli oggetti con cui il codice deve interagire, se cambiano le caratteristiche di Excel, se sono attivi automatismi che possono interferire con l’esecuzione della macro (es: macro associate ad eventi), eccetera.

Le possibilità sono innumerevoli e per questo è difficile che un codice sia del tutto esente da errori potenziali generati da imprevisti. Possiamo minimizzarli progettando il codice con attenzione, quindi lavorando nella fase preliminare di progetto, ma non possiamo eliminare del tutto il rischio di errori per imprevisti. Però possiamo gestire questi errori se e quando si presenteranno.

Gestire gli errori nel codice

Gestire gli errori nel codice

Una delle attività più trascurate del codice è la gestione degli imprevisti e degli errori derivati. Il Vba permette di intercettare gli errori e di gestirli. Invece di sospendere il codice, il vba mette a disposizione fuzioni che:

  1. ignorano l’errore e continuano l’esecuzione,
  2. spostano l’esecuzione in una porzione specifica del codice che permette di gestire l’errore.

Ignorare l’errore evita il blocco dell’esecuzione, ma può moltiplicare gli errori e generare danni ai dati o al foglio di lavoro. Quindi è consigliato ingnorare l’errore in situazioni controllate e specifiche. Tra l’altro ignorare l’errore non aiuta a scoprirne le cause. La sintassi per ignorare gli errori è: “On Error Resume Next” e viene posto all’inizio della macro primo o dopo le dichiarazioni, sempre prima del codice operativo.

La gestione degli errori invece consiste in una dichiarazione iniziale che comanda al sistema che in caso di errori il focus si sposti a un punto preciso del codice, seguito dal codice dedicato alla gestione. La sintassi è: “On Error Goto NOME_PUNTO_DI_SALTO” che indica appunto di saltare (Goto) al punto indicato.

Il marcatore e il codice di gestione vengono di solito posti in fondo alla routine e la sintassi del punto è: “NOME_PUNTO_DI_SALTO:”, per esempio “Errore:”. Il codice che segue invece serve a gestire l’errore e può andare dalla semplice comunicazione dell’errore all’operatore con una finestra di dialogo, accompagnata dalle istruzioni per gestirlo manualmente, fino all’inserimento di codice (o al richiamo di una macro dedicata) che può analizzare il problema, svolgere l’attività in modo alternativo, tentare di risolvere la causa dell’errore o rispristinare le condizioni, perfino presentare un piccolo report.

Ha senso spendere tempo per gestire errori che non so se ci sono, se e quando si presenteranno? Dipende. No, se la macro è piccola, semplice o poco importante, o se per sua natura è molto improbabile che compariranno errori imprevisti. Sì se la macro è grande e complessa, o se il foglio su cui lavora la macro viene usato da altri, non sviluppatori.

Il mio consiglio è di predisporre un blocco di codice da usare dove necessario, che comunica all’operatore indicazioni anche generiche su cosa fare, come e a chi rivolgersi. Per esempio:

‘ Marcatore di salto
ERROR:
‘ Comunicazione dell’errore
MsgBox “ATTENZIONE, SI E’ VERIFICATO UN ERRORE IMPREVISTO” _
& vbCr & vbCr & _
Err.Number & ” – ” & Err.Description _
& vbCr & vbCr & _
“QUESTO PUO’ ESSERE CAUSATO DA UNA VERSIONE PRECEDENTE DI EXCEL” _
& vbCr & vbCr & _
“O DA MODIFICHE IMPREVISTE AL CODICE O AL FOGLIO DI LAVORO ” _
& vbCr & vbCr & _
“PROVA A CHIUDERE, RIAPRIRE E RILANCIARE IL COMANDO” _
& vbCr & vbCr & _
“SE IL PROBLEMA PERSISTE INTERPELLA IL TUO CONSULENTE IT”, _
vbOKOnly, “ERRORE!”

Nel caso invece di automatismi complessi in fogli di lavoro di lunga durata che richiedono alta affidabilità, allora è importante prestare cura e attenzione al codice per la gestione degli errori, per evitare o minimizzare danni o sprechi di tempo rilevanti e mantenere l’operatività anche parziale dello strumento di lavoro. Sulla gestione degli errori dedicheremo un post specifico.

Lanciare le macro dal Vbe e dal codice

Come abbiamo già visto nella guida alle macro e nella guida al registratore di macro, le macro possono essere lanciate in molti modi diversi. Da Excel:

  1. attraverso la finestra “Macro”, strumento di Excel per la gestione delle macro, utilizzato nella fase di sviluppo e test degli automatismi, che offre tra l’altro la possibilità di associare e lanciare le macro attraverso una sequenza di tasti;
  2. collegando la macro a un oggetto grafico (una forma, un’immagine, ecc) che in questo modo diventa cliccabile come un pulsante;
  3. usando uno dei controlli appositi, per esempio pulsante posizionato in una pagina del foglio di lavoro;
  4. con un pulsante nella barra di accesso veloce, o in un gruppo personalizzato della barra multifunzione, sistema utile in particolare se si gestiscono gli automatismi con la cartella macro personale;
  5. usando un controllo, come un pulsante, posizionato in una maschera preparata tramite l’editor vba.

Oltre a questi metodi di lancio delle macro che richiedono l’interazione dell’operatore con un comando o un controllo predisposto, ce ne sono altri strettamente legati al vba e al Vbe, il visual basic editor:

  1. puoi lanciare le macro all’interno dell’editor Vba, l’ambiente di sviluppo, con il comando “Esegui” o più semplicemente premendo F5 dopo aver selezionato la macro che desideriamo eseguire. La macro verrà eseguita dall’inizio alla fine, a meno della presenza di punti di interruzioni, finestre di dialogo che attenderanno il tuo input, o comandi di pausa o interruzione, inseriti nel codice o direttamente da tastiera (Ctrl+Inter per interrompere l’esecuzione);
  2. puoi lanciare l’esecuzione passo passo della macro con il comando “Esegui istruzione” o più semplicemente premendo F8, lo strumento fondamentale per il debugging del codice;
  3. come già spiegato è possibile eseguire la macro in modo automatico associandola a oggetti (pagine, foglio excel, controlli e maschere) e a precisi eventi provocati dall’attività dell’operatore; per esempio è possibile lanciare una macro all’apertura del foglio di lavoro che ripristini le condizioni del foglio o aggiorni in automatico i dati, o lanciare una macro che a qualunque cambiamento di una pagina aggiorni le tabelle e i grafici collegati;
  4. infine c’è un altro modo per eseguire una macro, ed è quello di farla lanciare o richiamare da un’altra macro attraverso lo stesso codice vba; è sufficiente inserire il nome della macro, con o senza il comando Call, per lanciare l’esecuzione della macro, per poi al termine tornare alla riga di codice successiva. Per esempio, puoi lanciare la macro scrivendo “Call NOME_MACRO” o semplicemente “NOME_MACRO”, sarà il sistema a riconoscere la macro.

Questo permette di eseguire sequenze di routine, o da un altro punto di vista offre la possibilità di smontare le procedure complesse con molte attività in parti più semplici da realizzare e gestire.

Per esempio, per creare una macro che realizzi su una base dati un’ampia gamma di controlli, di interventi di pulizia e revisione dei dati e alla fine produca un report particolareggiato delle rilevazioni e degli interventi, è opportuno dividerla in più routine che vengono via via richiamate da una macro principale ed eseguite a seconda dei risultati delle altri e delle condizioni. Non una macro, ma 6 macro diverse di cui una di controllo, due di analisi dei dati, due per la revizione, una che realizzi il report del lavoro svolto.

Come si impara il vba

Come si impara il vba?

Come una lingua. Ma più facilmente. Per imparare il linguaggio vba è necessario imparare a memoria il vocabolario, cioè i nomi degli oggetti, delle proprietà e dei metodi, delle funzioni del vba, poi la sintassi, cioè il loro funzionamento e le regole d’utilizzo.

Ma non è sufficiente, come per lo studio di una nuova lingua, è necessario fare esercizio e pratica e farne molto, per fissare quello che hai studiato, per iniziare a parlare la lingua prima in modo goffo e facendo errori, poi con il tempo in modo sempre più fluente. Nel vba significa iniziare a scrivere codice ed esercitarsi, a lungo, finché non diventi bravo a sufficienza per i tuoi scopi.

Qualche semplice consiglio:

  1. impara il vocabolario minimo del linguaggio, oggetti, proprietà, metodi e le funzioni fondamentali di Excel, parti da questa guida, cerca altre fonti, tieni sempre aperto il browser sulle pagine del sito microsoft dedicate al visual basic;
  2. contemporaneamente studia la sintassi, cioè le regole con cui si usano le parole, per imparare a creare le frasi del linguaggio, cioè il codice vero e proprio; questo significa studiare come si scrivono le funzioni per controllare l’esecuzione del codice o quelle per richiamare le finestre di dialogo, come si scrivono i parametri dei metodi e delle proprietà più utili e complesse e via dicendo;
  3. il passo successivo è iniziare a usare quanto si è appreso, cosa che consiglio di fare appena possibile, per fare esperienza e apprendere ancora di più vocabolario e sintassi;
    1. inizia a “leggere” macro esistenti scritte da altri, quelle che trovi in rete o ti danno gli amici, importale nell’editor Vba e ogni volta che trovi una parola che non conosci premi F1 per aprire la guida online e studiala; puoi iniziare dalle macro di Excel professionale, scaricale, studiale e lavoraci sopra;
    2. inizia a modificare queste macro, lavoraci, sperimenta, prova a ottenere strumenti nuovi, solo tuoi;
    3. registra macro con il registratore per ottenere il codice di comandi che non conosci, ma non usarlo e basta, studialo,
    4. modifica le macro registrate, adattale ai tuoi bisogni, rendile più intelligenti e utili;
  4. Infine è importante imparare il metodo e le strategie migliori con cui progettare e realizzare macro evolute: passare dal realizzare elenchi di attività, a macro strutturate con controlli, interazioni, gestione degli errori, fino a realizzare e risolvere algoritmi progettati con attenzione sulla carta.

Il vba si impara studiando, ma soprattutto si impara dall’uso e dagli errori. Ricorda sempre che noi esseri umani impariamo facendo.

Conclusioni

In questa lunga guida introduttiva al vba abbiamo presentato il linguaggio con cui possiamo automatizzare i nostri fogli Excel, abbiamo parlato del linguaggio, delle sue caratteristiche, della programmazione, della progettazione delle macro, della struttura del codice, del modo di scrivere il codice, di come si impara il vba e molto altro.

Nonostante le molte pagine, questa nostra carrellata ha toccato solo una parte degli argomenti e in modo superficiale o poco esaustivo. Ma dopotutto questa è solo una guida introduttiva, non un manuale o un corso. Se vuoi approfondire il vba, puoi aspettare i post, i tutorial, i corsi e le altre risorse dedicate che usciranno su Excel Professionale, oppure poi affrontare il fiume di fonti e informazioni che la rete mette a disposizione.

Prima di lanciarti però ti invito a valutare con attenzione la tua scelta. Apprendere il vba, come gli altri linguaggi di programmazione richiede molto tempo, centinaia di ore di studio e lavoro. Per esempio se impari il javascript potrai realizzare siti dinamici e molto altro e farne una carriera, invece il vba ti sarà utile solo dentro Office.

Quindi non iniziare lo studio del Vba se ne puoi avere un vantaggio significativo. Per esempio, se lavori su Excel 3, 5 ore alla settimana o più e vuoi risparmiare tempo automatizzando i tuoi fogli di lavoro, allora studiare il vba è una buona idea.

Grazie di avermi seguito fino a qui.

Al prossimo post.

 

PS: Se non hai letto le parti precedenti di questa guida ti invito a farlo e rileggere quest’ultimo post nell’ordine corretto. Qui trovi il primo post, qui il secondo e qui il terzo.

 

PSS: E se ancora non l’hai fatto ti invito a iscriverti a Excel Professionale per ricevere i contenuti gratuiti pubblicati, soprattutto le macro didattiche che potranno aiutarti nello studio del vba. Puoi farlo anche attraverso la maschera qui sotto.

 

 

PSSS: Se questa guida ti è piaciuta o ti è stata utile, condividila con gli amici sui social.

Puoi farlo attraverso i pulsanti qui di seguito. Grazie.

Rispondi

Questo sito usa Akismet per ridurre lo spam. Scopri come i tuoi dati vengono elaborati.