L’automazione e il visual basic in Excel

By | 3 Ottobre 2019

componi macro con il visual basic in ExcelOggi cerchiamo di comprendere meglio la natura e le caratteristiche del Visual Basic in Excel. Come? Riprendendo i concetti fondamentali del Vba ed esaminando il codice di alcune macro funzionanti. Lo scopo è prendere familiarità con le dichiarazioni e i comandi principali del Visual basic.

Cos’è il Vba?

Vba è l’acronimo di Visual Basic for Application e in sintesi è l’utilizzo del Visual Basic in Excel per la realizzazione e l’esecuzione di routine dentro il foglio di calcolo.

Il Visual Basic è il linguaggio a oggetti realizzato da Microsoft all’inizio degli anni 90 per la creazione di programmi per windows, il suo sistema operativo, derivato a sua volta dal vecchio Basic. Nel 1992 Microsoft rilasciò il Visual Basic e nel 1995 impose un linguaggio standard di programmazione per i suoi software a partire dall’Office: il Visual Basic for Applications.

Nel 2008 Microsoft ha abbandonato il visual basic per linguaggi più performanti. E il Vba? Dopo 20 anni il vba è ancora presente e utilizzato direttamente e indirettamente da centinaia di milioni di utenti nel mondo.

Nonostante circolino da tempo voci sulla sua sostituzione per altri linguaggi, o perfino sull’abbandono del Vba, Microsoft non ha mai accennato nulla a proposito e difficilmente lo farà nel breve termine, soprattutto in considerazione delle decine di milioni di clienti/utenti al mondo che usano il vba per sviluppare automatismi.

Quale differenza c’è tra il Visual basic e il Vba?

A livello di linguaggio non ci sono differenze significative tra il Visual Basic 6 e il Vba, se non quelle relative al diverso ambito di lavoro. Il Vb era il linguaggio con cui si realizzavano programmi per le vecchie versioni di Windows, il sistema operativo, mentre il Vba è il linguaggio con cui si realizzano procedure che vengono usate internamente al pacchetto Office.

Cosa si può fare con il Visual basic in Excel?

Possiamo realizzare automatismi. Procedure di comandi che realizzano automaticamente attività, elaborazioni, eccetera.

Volendo spiegarlo in parole più semplici: Excel può svolgere attività al posto nostro. Come? Perché è predisposto per eseguire i comandi che gli diamo, se glieli diamo in una lingua che comprende e gli diciamo con precisione cosa fare e come farlo.

Il vba permette di realizzare strumenti con cui:

  1. automatizzare attività operative e decisionali che gli operatori svolgono dentro Excel;
  2. realizzare nuovi strumenti per l’ambiente di lavoro, come nuove funzioni che eseguono calcoli specifici e personalizzati, o nuovi strumenti di gestione, per esempio finestre di dialogo personalizzate, o controlli più evoluti con cui gestire per esempio gli automatismi e gli altri strumenti del foglio di lavoro.

Introduzione al Vba Excel

Come si gestisce il codice?

Le macro vengono gestite attraverso il visual basic editor (Vbe), richiamabile premendo Alt+F11, o dalla scheda sviluppo della barra multifunzione. Il vbe è un vecchio ambiente di sviluppo, rodato ed equipaggiato con gli strumenti che servono alla scrittura e al debugging. Ha diverse lacune, in diversi casi compensabili seguendo buone pratiche o attraverso l’installazione di librerie e componenti aggiuntivi, anche sviluppati da terze parti.

Ci sono altri ambienti di sviluppo ed editor esterni? Certo, ci sono diverse alternative, dai vecchi strumenti microsoft per il vb agli editor multilinguaggio, ma li sconsiglio ai principianti perché comunque alla fine dovrai sempre gestire le macro tramite vbe. Per conoscere meglio il Visual Basic Editor ti invito a studiare la guida introduttiva all’editor Vba.

Dove si installa il codice?

Per essere eseguito da Excel, il codice deve essere inserito nei moduli, scrivendolo direttamente, registrandolo, copiandolo, o importandolo attraverso i comandi relativi.

I moduli sono pagine bianche in cui inserire il testo del codice e possono essere associate a oggetti specifici, come il foglio Excel e le sue pagine, o possono essere moduli standard, dove le macro possono essere richiamate tramite controlli, per esempio pulsanti su pagine.

I tipi di moduli sono questi:

  1. Modulo standard, sede delle macro indipendenti,
  2. ThisWorkbook (Questa cartella di lavoro), destinato a macro relative al foglio intero,
  3. Moduli pagina, destinato a macro relative alle pagine,
  4. Modulo Form, o moduli maschere, dove scriviamo il codice relativo alle userform e ai controlli relativi,
  5. Moduli di classe, destinati alla definizione e gestione degli oggetti e delle loro caratteristiche.

All’interno dei moduli il codice delle macro viene scritto tra due “marcatori” di inizio e fine delle macro.

Come identificare una macro

Un modulo può contenere centinaia di macro e migliaia di istruzioni, ma per essere eseguite le macro devono essere identificate in modo chiaro e univoco. Come? Attraverso un nome, un inizio e una fine.

Per questo le istruzioni di una macro vengono scritte tra due comandi “marcatori” di inizio e fine delle routine, diversi a seconda che stiamo realizzando routine o funzioni.

Il vba distingue le macro tra funzioni (Function) e routine (Sub). Le funzioni sono procedure che ricevono dati, li elaborano e li restituiscono sotto forma di risultati. Sono identificati da un marcatore di inizio:

“Function NOME_FUNZIONE(param1 As Tipo_param, …) As Tipo_Valore”

che indica quali dati richiede e quali tipo di risultato restituirà, e uno di fine:

“End Function”.

Le routine sono procedure che eseguono azioni su oggetti e svolgono attività nell’ambiente di lavoro. Sono definite da una dichiarazione iniziale:

“Sub NOME_SUB()”

e una finale:

“End Sub”.

Il codice deve essere inserito all’interno dei marcatori, con precise eccezioni (es: dichiarazioni di variabili di modulo o globali). Le routine possono essere definite come pubbliche (Public) o private (Private) a seconda delle loro funzioni e utilità. Una routine dichiarata come privata (es: “Private Sub NOME_SUB()”) non sarà visibile da dentro Excel, per esempio non sarà elencata nella finestra di dialogo “Macro”, e non potrà essere assegnata a controlli su pagina, ma sarà disponibile e richiamabile da altre routine del modulo.

apprendere Excel

Come si realizza una macro

Il codice scritto in visual basic in Excel sostanzialmente si crea in due modi:

  1. usi il registratore di macro di Excel, uno strumento apposito dall’uso intuitivo che legge le attività svolte su Excel e le traduce nel corrispondente codice vba,
  2. scrivi il codice direttamente nell’editor Vba con l’ausilio degli strumenti descritti nella guida al visual basic editor.

Usare il registratore di macro è semplice, deleghiamo allo strumento il compito di scrivere il codice, con risultati elementari, ma utilizzabili, realizzando macro operative e poco intelligenti che possono essere utilizzate per automatizzare i fogli Excel. Per ottenere risultati interessanti devi imparare a usare il registratore, le basi degli strumenti dell’automazione e altro. Per approfondire l’argomento ti invito a leggere la guida al registratore di macro.

Invece scrivere il codice richiede la conoscenza del linguaggio vba e degli strumenti per lo sviluppo. Apprendere il vba richiede decine di ore di studio e molte decine di ore di uso del linguaggio per acquisire l’esperienza necessaria alla scrittura del codice.

Dichiarazioni e comandi del vba

Una macro è composta principalmente da:

  1. dichiarazioni di metodi e proprietà,
  2. comandi del vba per gestire il flusso,
  3. funzioni del vba per l’interazione,
  4. espressioni di vario tipo,
  5. altri comandi del vba,
  6. dichiarazioni di variabili,
  7. inizializzazioni e assegnazioni,
  8. altre istruzioni e funzioni del vba.

La maggior parte delle istruzioni di una macro sono o contengono dichiarazioni di metodi o proprietà, o più raramente dichiarazioni di oggetti.

Cosa sono queste dichiarazioni?

Sono i comandi con cui diciamo a Excel:

  1. quale azione svolgere sull’oggetto, o far svolgere all’oggetto indicato (dichiarazione dei metodi)
  2. quale modifica realizzare a una caratteristica di un oggetto (dichiarazione delle proprietà).

Cosa sono gli oggetti?

Gli oggetti in Excel sono pagine, celle, grafici, tabelle e via dicendo. Tutto nel foglio di calcolo è un oggetto. Dal punto di vista del linguaggio, gli oggetti sono contenitori strutturati di dati, che possono contenere o essere contenuti in altri oggetti e che quindi hanno una gerarchia. Gli oggetti possiedono numerose caratteristiche o proprietà, e possono agire grazie a un set di comandi chiamati metodi.

Il visual basic in Excel e l’inglese

Il vba è un linguaggio “anglosassone”, cioè è composto da termini presi dalla lingua inglese, in forma estesa o contratta. Per esempio: charts, worksheets, range, select, msgbox (message box, scatola dei messaggi), application, delete, open, close, windows, eccetera.

Questo può aiutarti molto se conosci l’inglese, in quanto potrai riconoscere più facilmente ruolo e funzione delle parole, facilitandoti nella costruzione del tuo “vocabolario” e con la sintassi del linguaggio. Per esempio, una dichiarazione come questa:

Application.Workbooks(“Report”).Worksheets(“Mensile”).ChartObjects(“Fatturato”).PrintOut

Può essere letta in questo modo:

Applicazione.FoglioExcel(“Report”).Pagina(“Mensile”).Grafico(“Fatturato”).Stampa

E può essere tradotta come il comando: stampa il grafico “Fatturato” della pagina “Mensile” del foglio “Report” di Excel.

modella automatismi con il visual basic Excel

Le dichiarazioni di metodi e proprietà

Le dichiarazioni non sono altro che la concatenazione di più oggetti, metodi e proprietà uniti da punti (.) e servono a indicare a Excel su quale oggetto o insieme di oggetti deve agire e in quale modo.

Queste sono dichiarazioni:

  • Name, mostra il nome della pagina attiva;
  • Delete, rimuove la pagina attiva;
  • Count, conta i fogli Excel aperti;
  • Worksheets(“Foglio1”).Activate, attiva la pagina “Foglio1”;
  • Worksheets(1).Name, restituisce il nome della pagina con indice 1;
  • Worksheets(“Report”).Range(“A2:F40”).Font.Bold, imposta il grassetto al font del contenuto delle celle dell’intervallo di celle selezionato;
  • Worksbooks(“KpiProd”).Worksheets(“Dboard”).PrintOut, stampa la pagina dashboard;
  • Workbooks.Close, chiude tutti i fogli di lavoro aperti;

Come leggerle?

  1. L’ultima parola a destra della catena è il metodo o la proprietà,
  2. la penultima parola della catena è l’oggetto specifico e univoco o l’insieme di oggetti su cui lavoriamo.
  3. la parentesi a destra dell’oggetto indica l’oggetto specifico dell’insieme con il nome o l’indice,
  4. tutti gli altri termini a sinistra dei precedenti due indicano la gerarchia degli oggetti, cioè gli oggetti che li contengono.

Dove ci sono più oggetti dello stesso tipo con le stesse caratteristiche, per esempio le pagine del foglio Excel, esiste l’insieme degli oggetti relativi.

La gerarchia definisce il rapporto tra gli oggetti, cioè a quale oggetto più “grande” appartengono, o di cui fanno parte, e quali oggetti contengono, o li compongono. Puoi vedere la gerarchia come il rapporto dei diversi elementi di una matrioska.

Per esempio, la pagina di excel (worksheet) è un elemento dell’oggetto foglio di lavoro (workbook) che è un elemento di Excel (application). Application è l’oggetto più grande e di più alto livello che contiene tutti gli altri.

Il modo completo per dichiarare un metodo o una proprietà è in realtà questo:

Application.Insieme(OGGETTO).Insieme(OGGETTO).Insieme(OGGETTO).Metodo/Proprietà

Come vedi è una catena di oggetti che parte dall’oggetto che contiene tutti, cioè Excel (application), e di seguito tutti gli altri oggetti intermedi fino a quello su cui agiamo o modifichiamo.

In realtà raramente dichiariamo tutta la gerarchia delle dichiarazioni. Il visual basic in Excel permette di omettere gli oggetti se il codice si riferisce agli oggetti attivi. Cioè in pratica si omette quasi sempre Application, ma anche tutti gli oggetti che seguono se sono attivi.

Excel vba e la programmazione a oggetti

I comandi principali del Visual Basic in Excel

Le dichiarazioni sono la parte operativa delle macro, la maggior parte, ed è facile individuarle cercando i punti che separano oggetti, proprietà e metodi. Dopo le dichiarazioni, le istruzioni più frequenti nel codice della macro sono:

  1. strutture iterative, o cicli,
  2. strutture decisionali, o condizionali,
  3. funzioni per l’interazione con l’operatore, per ricevere input o fornire output.

I comandi principali sono:

  1. For/Next

con cui possiamo realizzare cicli o iterazioni, cioè possiamo rpetere una o più istruzioni. For/Next è quella più usata perché permette un elevato controllo sulle modalità di uscita dal ciclo. In breve For/Next genera un ciclo a interazione fissa, cioè esegue le istruzioni un numero impostato di volte, definito e conteggiato da un contatore.

La sintassi è questa:

For VARIABILE_CONTATORE = inizio To fine [Step passo]

…Istruzioni da eseguire

Next VARIABILE_CONTATORE

  1. If/Then

Questa funzione serve a controllare l’esecuzione di una porzione specifica di codice attraverso la verifica preliminare di una o più condizioni. Se la condizione risulta vera allora verranno eseguite le istruzioni, o eventualmente ne verranno eseguite altre.

La sintassi può variare molto, da una versione minima su una singola riga:

If CONDIZIONE=Vera Then Istruzione

alla classica sintassi multiriga con una singola condizione che gestisce due blocchi di codice alternativi:

If CONDIZIONE=Vera Then

… Istruzioni

Else

… istruzioni alternative

End If

  1. Msgbox

La funzione MsgBox() richiama una finestra di dialogo con cui è possibile comunicare informazioni all’operatore e raccogliere conferme e decisioni su quesiti a risposta chiusa. Viene usata in moltissime situazioni nelle diverse fasi di esecuzione della macro e la sua sintassi è piuttosto semplice:

MsgBox(prompt, [buttons], [title], [helpfile], [context])

  1. dove “prompt” è il messaggio che sarà visualizzato nella finestra di dialogo scritto tra virgolette (“”),
  2. “buttons” è il tipo di pulsanti da visualizzare nella finestra di dialogo, scelti da una lista di costanti tipo “vbOkOnly”, “vbYesNo”, ecc,
  3. “title” è il titolo della finestra di dialogo scritto tra virgolette (“”),
  4. “helpfile” identifica il file della guida da usare e “context” indica il punto della guida a cui puntare.

Questi comandi li abbiamo già visti nella guida al Vba che ti invito a leggere se già non l’hai fatto.

Oltre ai comandi che gestiscono il flusso dell’esecuzione, ci sono centinaia di funzioni del vba, di istruzioni e comandi, dall’utilità più o meno significativa che richiedono approfondimenti specifici, che non possiamo fare qui.

macro Excel

Dichiarazioni delle variabili

Spesso alle macro servono informazioni che ottengono da Excel, dagli input dell’operatore, o dall’esterno e che spesso devono essere usate più volte o elaborate e quindi debbono essere ricordate almeno fino alla fine dell’esecuzione della macro.

Come? Inserendole in “contenitori” chiamati “variabili” che impegnano porzioni di memoria dedicata. Questo avviene con la dichiarazione delle variabili. Le variabili devono essere dichiarate prima del primo utilizzo del dato, ma tradizionalmente vengono dichiarate all’inizio della macro e avranno validità limitata alla macro e durata di vita limitata all’esecuzione della stessa.

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.

Per poter meglio gestire le variabili e la memoria che occupano, per migliorare l’efficienza della è 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.

È necessario dichiarare le variabili?

No, nella maggior parte dei casi il motore di Excel riconoscerà le variabili e assegnerà la memoria necessaria per la loro gestione.

Come fa Excel a riconoscere le variabili?

Le riconosce attraverso l’assegnazione di un’informazione a una stringa, per esempio Variabile = “Roma”. Possiamo chiamare quest’operazione come inizializzazione, cioè assegnazione di un valore alla variabile.

La dichiarazione dice a Excel che vogliamo creare un contenitore con un certo nome, quante risorse dedicare e come gestirlo. Se non viene indicato il tipo della variabile, excel assegna in automatico un tipo Variant alla variabile, in grado di gestire tutte le variabili, al massimo costo di risorse.

In sintesi quello che ti sto dicendo è che di solito puoi scrivere il codice senza dichiarazioni e funzionerà lo stesso, sarà più lento, esposto a errori, ma funzionerà. Naturalmente ci sono delle eccezioni.

Lettura di una macro elementare

Ora esaminiamo una macro registrata e proviamo a “farne l’autopsia”, o se preferisci a leggerla. Questa macro non fa altro che copiare la pagina attiva in una nuova pagina:

Sub Copiapagina()

    Cells.Select

    Selection.Copy

    Sheets.Add

    Activesheet.Paste

End Sub

La macro è registrata, quindi è puramente operativa e come vedi è composta solo da dichiarazioni di metodi e proprietà. Ma iniziamo dalle istruzioni di inizio e fine della macro: Sub Copiapagina() identifica l’inizio della routine e ha una sintassi Sub NomeMacro(), mentre End Sub identifica la fine della routine.

Invece le dichiarazioni di metodi e proprietà possiamo tradurle in questo modo:

  1. Select, può essere letto come: Celledellapagina.Seleziona,
  2. Copy, può essere letto come: Selezione.Copia,
  3. Add, può essere letto come: Pagine.Aggiungi,
  4. Paste, può essere letto come: Paginattiva.Incolla.

Quindi la macro possiamo tradurla in questa serie di comandi che diamo ad excel:

  1. Seleziona le celle della pagina,
  2. Copia ciò che è selezionato,
  3. Aggiungi alle pagine una nuova pagina,
  4. Incolla nella pagina attiva.

Quindi la nostra macro di quattro istruzioni non è che una lista di comandi scritta in un linguaggio, il visual basic, che Excel comprende. E in fondo quello che a prima vista appare poco comprensibile è in fondo un modo semplice per dire a una macchina cosa fare e come farlo.

apprendere il visual basic Excel

Autopsia di una macro semplice

Quella che segue è invece una macro che stampa tutti i grafici inseriti in pagine a parte. Come vedi sono cinque istruzioni, ma non solo dichiarazioni di metodi e proprietà, ma anche interazioni e variabili:

Sub STAMPAtuttiGRAFICI()

    Dim NumCopie As Integer

    ActiveWorkbook.Save

    NumCopie = InputBox(“Quante copie vuoi stampare?”, “Numero di copie”, 1)

    ActiveWorkbook.Charts.PrintOut Copies:=NumCopie

    MsgBox “STAMPA AVVIATA”, vbOKOnly, “STAMPA TUTTI I GRAFICI”

End Sub

Proviamo a tradurre le istruzioni:

  1. Dim NumCopie As Integer, diventa: dichiaro NumCopie come Intero,
  2. Save, diventa: FogliExcelAttivo.Salva,
  3. NumCopie = InputBox(“Quante copie vuoi stampare?”, “Numero di copie”, 1), diventa: NumCopie =FinestraInput (Messaggio=”Quante copie vuoi stampare?”, Titolo=”Numero di copie”, ValorediBase=1),
  4. Charts.PrintOut Copies:=NumCopie, diventa: FogliExcelAttivo.PagineGrafici.Stampa,
  5. MsgBox “STAMPA AVVIATA”, vbOKOnly, “STAMPA TUTTI I GRAFICI”, diventa: FinestraMessaggi (Messaggio=”STAMPA AVVIATA”, Tasti=soloOK, Titolo=”STAMPA TUTTI I GRAFICI”)

Che possiamo tradurre nei seguenti comandi:

  1. crea una variabile NumCopie per conservare numeri interi,
  2. salva il foglio Excel attivo,
  3. apri una finestra di input con un messaggio “Quante copie vuoi stampare?”, un titolo “Numero di copie” e un valore di base “1”,
  4. assegna la risposta dell’utente alla variabile NumCopie,
  5. stampa le pagine con grafici del foglio Excel attivo,
  6. apri una finestra dei messaggi con un messaggio “STAMPA AVVIATA”, un titolo “STAMPA TUTTI I GRAFICI”) e un solo pulsante “Ok”.

visual basic in Excel linguaggio vba

Esame di una macro ordinaria

Ora proviamo a esaminare una macro ordinaria, più complessa delle precedenti. È una macro dimostrativa del visual basic in Excel, che crea una pagina con il nome che l’utente vuole assegnarle per poi impostare un titolo uguale al nome

Sub Creapagina()

    Dim nomepagina As String

    Dim I As Integer

    nomepagina = InputBox(“Quale nome vuoi dare alla pagina?” & vbCr & vbCr & “Se non inserisci un nome la pagina sarà chiamata ‘Nuova_Pagina’”, “Nome pagina”, “Nuova_Pagina”)

    For I = 1 To Sheets.Count

        If Worksheets(I).Name = nomepagina Then

            MsgBox “Esiste già una pagina con lo stesso nome”, vbOKOnly, “Esiste pagina con lo stesso nome”

            Exit Sub

        End If

    Next I

    If nomepagina = “” Then

        sheets.Add After:=ActiveSheet

        ActiveSheet.Name = “Nuova_Pagina”

    Else

        sheets.Add After:=ActiveSheet

        ActiveSheet.Name = nomepagina

    End If

    Range(“A1”).Value = nomepagina

    Range(“A1”).Font.Bold = True

    Range(“A1”).Font.Size = 14

    MsgBox “FOGLIO CREATO”, vbOKOnly, “CREAZIONE FOGLIO”

End Sub

Proviamo a tradurre le istruzioni della macro:

  1. Dim nomepagina As String, diventa: dichiaro nomepagina come Stringa,
  2. Dim I As Integer, diventa: dichiaro I come Intero,
  3. nomepagina = InputBox(“Quale nome vuoi dare alla pagina?” & vbCr & vbCr & “Se non inserisci un nome la pagina sarà chiamata ‘Nuova_Pagina’”, “Nome pagina”, “Nuova_Pagina”), diventa: nomepagina =FinestraInput (Messaggio=”“Quale nome vuoi dare alla pagina? Se non inserisci un nome la pagina sarà chiamata ‘Nuova_Pagina’”, Titolo=”Nome pagina”, ValorediBase=” Nuova_Pagina”),
  4. For I = 1 To Sheets.Count, diventa: ripeti il codice seguente da 1 al Pagine.Numero,
  5. If Worksheets(I).Name = nomepagina Then, diventa Se Pagina(I).Nome è uguale a nomepagina allora,
  6. MsgBox “Esiste già una pagina con lo stesso nome”, vbOKOnly, “Esiste pagina con lo stesso nome”, diventa FinestraMessaggi (Messaggio=“Esiste già una pagina con lo stesso nome”, Tasti=soloOK, Titolo=“Esiste pagina con lo stesso nome”),
  7. Exit Sub, diventa Esci dalla Routine
  8. End If, diventa FineSe
  9. Next I, diventa ripeti I,
  10. If nomepagina = “” Then, diventa Se nomepagina è uguale a nulla allora,
  11. Add After:=ActiveSheet, diventa Pagine.Aggiungi dopo la pagina attiva,
  12. Name = “Nuova_Pagina”, diventa PaginaAttiva.Nome è uguale a “Nuova_Pagina”,
  13. Else, diventa Altrimenti
  14. Add After:=ActiveSheet, diventa Pagine.Aggiungi dopo la pagina attiva,
  15. Name = nomepagina, diventa PaginaAttiva.Nome è uguale a nomepagina,
  16. End If, diventa FineSe
  17. Range(“A1”).Value = nomepagina, diventa Intervallo(“A1”).Valore è uguale a nomepagina,
  18. Range(“A1”).Font.Bold = True, diventa Intervallo(“A1”).Font.Grassetto è uguale a Vero,
  19. Range(“A1”).Font.Size = 14, diventa Intervallo(“A1”).Font.Grandezza è uguale a 14,
  20. MsgBox “FOGLIO CREATO”, vbOKOnly, “CREAZIONE FOGLIO”, diventa FinestraMessaggi (Messaggio=“FOGLIO CREATO”, Tasti=soloOK, Titolo=“CREAZIONE FOGLIO”).

modellare macro con il visual basic in Excel

Traduzione delle istruzioni

E ora proviamo a tradurre tutto nei relativi comandi in lingua italiana:

  1. crea una variabile nomepagina per conservare stringhe di testo
  2. crea una variabile I per conservare numeri interi
  3. apri una finestra degli input con un messaggio “Quale nome vuoi dare alla pagina? Se non inserisci un nome la pagina sarà chiamata ‘Nuova_Pagina’”, un titolo “Nome pagina” e un valore di base “Nuova_Pagina”,
  4. assegna la risposta dell’utente alla variabile nomepagina,
  5. esegui il codice seguente (le istruzioni fino a Ripeti) per ogni pagina del foglio,
  6. se il nome della pagina indicata è uguale a nomepagina allora esegui il codice seguente (le istruzioni fino a Fine del Se),
  7. apri una finestra dei messaggi con un messaggio ” Esiste già una pagina con lo stesso nome”, un titolo ” Esiste pagina con lo stesso nome”) e un solo pulsante “Ok”,
  8. Esci dalla Macro,
  9. Fine del Se,
  10. Ripeti,
  11. se nomepagina è uguale a niente allora esegui il codice seguente (le istruzioni fino a Altrimenti o Fine del Se),
  12. aggiungi alle pagine una nuova dopo la pagina attiva,
  13. il nome della pagina attiva diventa “Nuova_Pagina”,
  14. Altrimenti se nomepagina non è uguale a niente allora esegui il codice seguente (le istruzioni fino a Fine del Se)
  15. aggiungi alle pagine una nuova dopo la pagina attiva,
  16. il nome della pagina attiva diventa il valore della variabile nomepagina,
  17. Fine del Se,
  18. il valore contenuto nella cella A1 diventa nomepagina,
  19. il font del contenuto della cella A1 diventa grassetto,
  20. la grandezza del font del contenuto della cella A1 diventa 14,
  21. apri una finestra dei messaggi con un messaggio “FOGLIO CREATO “, un titolo “CREAZIONE FOGLIO”) e un solo pulsante “Ok”.

Come hai visto quest’ultima macro è più compressa e presenta non solo codice operativo, cioè dichiarazioni di metodi e proprietà, ma anche diverse interazioni con l’operatore e comandi del vba per la gestione del flusso, cioè cicli per eseguire controlli e strutture condizionali per eseguire porzioni di codice a certe precise condizioni.

Tutto sommato come hai visto una macro non è che una lista di istruzioni che diamo a Excel affinché questo esegua certe attività per noi, nel modo che noi vogliamo. Naturalmente per realizzare queste macro dobbiamo conoscere il vba, con cui tradurre le istruzioni nella lingua di Excel, ma come avrai già intuito non è sufficiente conoscere la lingua.

È fondamentale anche saper progettare le routine, la lista di comandi da dare a Excel, sapere cosa deve essere fatto per ottenere i risultati che vogliamo ottenere. E questo richiede la conoscenza del vba e degli strumenti dell’automazione come il visual basic editor, una buona conoscenza di Excel, e competenze di programmazione, logica e altro ancora.

Codice e 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 pratica e farne molta, per fissare e consolidare 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 per imparare il visual basic in modo efficace:

  1. impara il vocabolario minimo del linguaggio, oggetti, proprietà, metodi e le funzioni fondamentali di Excel, parti da questa guida vba, 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 è usare quanto hai appreso, cosa che consiglio di fare appena possibile, per fare esperienza e apprendere ancora di più su vocabolario e sintassi;
  4. inizia a leggere le macro 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;
  5. inizia a modificare queste macro, lavoraci, sperimenta, prova a ottenere strumenti nuovi, solo tuoi;
  6. registra macro con il registratore per ottenere il codice di comandi che non conosci, ma non usarlo e basta, studialo,
  7. ottimizza e modifica le macro registrate, adattale ai tuoi bisogni, rendile più intelligenti e utili;

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 e interazioni, 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

Come abbiamo visto il visual basic in Excel ci permette di dire al foglio di calcolo cosa fare e come farlo, per farlo lavorare al posto nostro, per fargli svolgere attività ripetitive, ma non solo. Una macro in fondo non è altro che la sequenza di attività elementari necessaria per raggiungere l’obiettivo prefissato.

Il visual basic in Excel non è che un linguaggio di programmazione, più facile da imparare di una lingua straniera, che ci permette di creare automatismi con cui rendere efficienti e professionali i nostri fogli Excel, creare nuovi strumenti in grado di soddisfare i nostri bisogni e ottenere il pieno controllo del foglio di calcolo.

Come già detto, imparare il vba richiede un investimento di tempo di decine di ore di studio e almeno altrettante di pratica, ma quello che impariamo si ripaga più in fretta di quanto pensiamo, quanto meno per il tempo che risparmiamo. Per tutti coloro che lavorano ore alla settimana o al giorno sul foglio di calcolo, imparare il vba e l’automazione di Excel significa imparare a far lavorare Excel al posto loro.

 

 

PS: Se questo post ti è piaciuto o ti è stato utile, condividilo 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.