La migliore guida VBA (per principianti) di cui avrai mai bisogno

La piattaforma di programmazione VBA(VBA programming) che funziona in quasi tutti i prodotti Microsoft Office è uno degli strumenti più potenti che chiunque può utilizzare per migliorare l'uso di tali prodotti.

Questa guida VBA per principianti ti mostrerà come aggiungere il menu Sviluppatore alla tua applicazione (Developer)Office , come accedere alla finestra dell'editor VBA e come funzionano le istruzioni e i loop (VBA)VBA di base in modo da poter iniziare a usare VBA in Excel , Word , Powerpoint , Outlook e OneNote .

Questa guida VBA utilizza l'ultima versione dei prodotti Microsoft Office . Se hai una versione precedente, potresti notare alcune lievi differenze rispetto agli screenshot.

Come abilitare e utilizzare l'editor VBA(How To Enable & Use The VBA Editor)

In uno qualsiasi dei prodotti Office utilizzati in questa guida, potresti notare che non hai il menu Sviluppatore di riferimento. (Developer)Il menu sviluppatore è disponibile solo in Excel , Word , Outlook e Powerpoint . OneNote non offre uno strumento per modificare il codice VBA dall'interno dell'applicazione, ma puoi comunque fare riferimento all'API di OneNote(OneNote API) per interagire con OneNote da altri programmi di Office

Imparerai come farlo nella nostra prossima guida VBA avanzata(Advanced VBA) .

  • Per abilitare il menu Sviluppatore(Developer) in qualsiasi prodotto per ufficio, seleziona il menu File e seleziona Opzioni(Options) dal menu di navigazione a sinistra. 
  • Vedrai un menu Opzioni(Options) a comparsa. Seleziona Personalizza barra multifunzione(Customize Ribbon) dal menu di navigazione a sinistra.

L'elenco a sinistra include tutti i menu e i comandi di menu disponibili nell'applicazione di Office . L'elenco a destra sono quelli attualmente disponibili o attivati.

  • Dovresti vedere Sviluppatore(Developer) nell'elenco a destra, ma non verrà attivato. Basta(Just) selezionare la casella di controllo per attivare il menu Sviluppatore .(Developer)

  • Se non vedi Sviluppatore(Developer) disponibile a destra, cambia a sinistra Scegli i comandi(Choose commands) dal menu a discesa in Tutti i comandi(All Commands) . Trova lo sviluppatore(Developer) dall'elenco e seleziona Add>> al centro per aggiungere quel menu alla barra multifunzione(Ribbon) .
  • Seleziona OK quando hai finito.
  • Una volta che il menu Sviluppatore(Developer) è attivo, puoi tornare alla finestra principale dell'applicazione e selezionare Sviluppatore(Developer) dal menu in alto. 
  • Quindi seleziona Visualizza codice(View Code) dal gruppo Controlli(Controls) nella barra multifunzione per aprire la finestra dell'editor VBA .

  • Si aprirà la finestra dell'editor VBA in cui puoi digitare il codice che imparerai nelle prossime sezioni.

  • Prova ad aggiungere il menu Sviluppatore ad alcune delle applicazioni di (Developer)Office che usi ogni giorno. Una volta che ti senti a tuo agio nell'aprire la finestra dell'editor VBA , vai alla sezione successiva di questa guida.

Suggerimenti generali per la programmazione VBA per principianti(General VBA Programming Tips for Beginners)

Noterai quando si apre l' editor VBA , le opzioni di navigazione nel pannello di sinistra hanno un aspetto diverso da un'applicazione di Office all'altra.

Questo perché gli oggetti disponibili in cui è possibile inserire il codice VBA dipendono dagli oggetti presenti nell'applicazione. Ad esempio, in Excel è possibile aggiungere codice VBA alla cartella di lavoro o agli oggetti foglio. (VBA)In Word puoi aggiungere codice VBA ai documenti. (VBA)In Powerpoint , solo ai moduli.

Quindi, non essere sorpreso dai diversi menu. La struttura e la sintassi del codice VBA sono le stesse in tutte le applicazioni. L'unica differenza sono gli oggetti a cui puoi fare riferimento e le azioni che puoi intraprendere su quegli oggetti tramite il codice VBA .

Prima di approfondire i diversi oggetti e azioni che puoi intraprendere tramite il codice VBA , diamo prima un'occhiata alla struttura e alla sintassi VBA più comuni che puoi utilizzare quando scrivi il codice VBA .

Dove mettere il codice VBA(Where To Put VBA Code)

Quando sei nell'editor VBA , devi utilizzare le due caselle a discesa nella parte superiore della finestra di modifica per scegliere a quale oggetto vuoi allegare il codice e quando vuoi che il codice venga eseguito.

Ad esempio, in Excel , se scegli Foglio(Worksheet) di lavoro e Attiva(Activate) , il codice verrà eseguito ogni volta che il foglio di lavoro viene aperto. 

Altre azioni del foglio di lavoro che puoi utilizzare per attivare il codice VBA includono quando il foglio di lavoro cambia, quando viene chiuso (disattivato), quando viene eseguito il calcolo del foglio di lavoro e altro ancora.

Quando aggiungi codice VBA nell'editor, assicurati sempre di posizionare il codice VBA sull'oggetto e di utilizzare l'azione corretta che desideri utilizzare per attivare quel codice.

Dichiarazioni VBA IF(VBA IF Statements)

Un'istruzione IF funziona in VBA proprio come funziona in qualsiasi altro linguaggio di programmazione.

La prima parte dell'istruzione IF esamina se una condizione o un insieme di condizioni è vera. Queste condizioni possono essere unite da un operatore AND o OR per collegarle insieme.

Un esempio potrebbe essere quello di verificare se un voto in un foglio di calcolo è superiore o inferiore a un voto "superato" e assegnare lo stato di superamento o non superamento a un'altra cella.

If Cells(2, 2) > 75 Then Cells(2, 3) = “Pass” Else Cells(2, 3) = “Fail”

Se non vuoi che l'intera istruzione su una singola riga, puoi dividerla in più righe aggiungendo un simbolo "_" alla fine delle righe.

If Cells(2, 2) > 75 Then _
Cells(2, 3) = “Pass”  Else _
Cells(2, 3) = “Fail”

L'uso di questa tecnica può spesso rendere il codice molto più semplice da leggere e da eseguire.

VBA per i cicli successivi(VBA For Next Loops)

Le istruzioni IF sono ottime per confronti singoli, come l'esempio sopra di guardare una singola cella. Ma cosa succede se si desidera scorrere un intero intervallo di celle e fare la stessa istruzione IF su ciascuna?

In questo caso avresti bisogno di un ciclo  FOR .

Per fare ciò, dovresti usare la lunghezza di un intervallo e scorrere quella lunghezza in base al numero di righe che contengono dati.

Per fare ciò, è necessario definire l'intervallo e le variabili di cella e scorrerle. Dovrai anche definire un contatore in modo da poter inviare i risultati alla riga appropriata. Quindi il tuo codice VBA avrebbe prima questa riga.

Dim rng As Range, cell As Range
Dim rowCounter as Integer

Definire la dimensione dell'intervallo come segue. 

Set rng = Range(“B2:B7”)
rowCounter = 2

Infine, puoi creare il tuo ciclo FOR per scorrere ogni cella in quell'intervallo ed eseguire il confronto.

For Each cell In rng
   If cell.Value > 75 Then _
   Cells(rowCounter, 3) = "Pass" Else _
   Cells(rowCounter, 3) = "Fail"

   rowCounter = rowCounter + 1

Next cell

Una volta eseguito questo script VBA(VBA script) , vedrai i risultati nel foglio di calcolo effettivo.

VBA durante i loop(VBA While Loops)

Anche un ciclo(Loop) While esegue il ciclo di una serie di istruzioni, proprio come il ciclo FOR , ma la condizione del ciclo per continuare è una condizione che rimane vera.

Ad esempio, puoi scrivere lo stesso ciclo FOR sopra, come ciclo WHILE , semplicemente usando la variabile rowCounter come segue.

While rowCounter < rng.Count + 2
   If Cells(rowCounter, 2) > 75 Then _
   Cells(rowCounter, 3) = "Pass" Else _
   Cells(rowCounter, 3) = "Fail"
   rowCounter = rowCounter + 1
Wend

Nota: il limite di terminazione rng.Count + 2 è obbligatorio perché il contatore di righe inizia da 2 e deve terminare sulla riga 7 in cui terminano i dati. Tuttavia, il conteggio dell'intervallo (B2:B7) è solo 6 e il ciclo While terminerà solo quando il contatore è MAGGIORE(GREATER) del contatore, quindi l'ultimo valore di rowCounter deve essere 8 (o rng.Count + 2).

Puoi anche impostare il ciclo While come segue:

While rowCounter <= rng.Count + 1

Puoi solo incrementare il conteggio dell'intervallo (6) di 1, perché una volta che la variabile rowCounter raggiunge la fine dei dati (riga 7), il ciclo può terminare.

VBA Do While e Do Until Loops(VBA Do While and Do Until Loops)

I loop Do While e Do Until sono quasi identici ai loop While, ma funzionano in modo leggermente diverso.

  • Il ciclo While(While Loop) verifica se una condizione è vera all'inizio del ciclo.
  • Il ciclo Do-While(Do-While Loop) controlla se una condizione è vera dopo aver eseguito le istruzioni nel ciclo.
  • Il ciclo Do-Until(Do-Until Loop) verifica se una condizione è ancora falsa dopo l'esecuzione del ciclo.

In questo caso dovresti riscrivere il ciclo While sopra come segue, come un ciclo Do-While.

Do
   If Cells(rowCounter, 2) > 75 Then _
   Cells(rowCounter, 3) = "Pass" Else _
   Cells(rowCounter, 3) = "Fail"
   
   rowCounter = rowCounter + 1
Loop While rowCounter < rng.Count + 2

In questo caso la logica non cambia molto, ma se vuoi assicurarti che il confronto logico avvenga dopo che tutte le istruzioni sono state eseguite (consentendo a tutte di essere eseguite indipendentemente da cosa almeno una volta), allora un Do-While o Do-Until loop è l'opzione giusta.

VBA Seleziona le dichiarazioni del caso(VBA Select Case Statements)

L'ultimo tipo di istruzione logica che devi comprendere per iniziare a strutturare il tuo codice VBA sono le istruzioni (VBA)Select Case .

Dato l'esempio sopra, supponiamo che tu voglia avere un metodo di valutazione che non sia solo pass fail. Invece, vuoi assegnare un voto in lettere da A a F.

Puoi farlo con la seguente istruzione Select Case :

For Each cell In rng
   
   Select Case cell

   Case 95 To 100
      Cells(rowCounter, 3) = "A"
   Case 85 To 94
      Cells(rowCounter, 3) = "B"
   Case 75 To 84
      Cells(rowCounter, 3) = "C"
   Case 65 To 74
      Cells(rowCounter, 3) = "D"
   Case 0 To 64
      Cells(rowCounter, 3) = "F"
   End Select

   rowCounter = rowCounter + 1

Next cell

Il foglio di calcolo risultante dopo l'esecuzione di questo script VBA è simile a quello seguente.(VBA)

Ora sai tutto ciò che devi sapere per iniziare a utilizzare VBA nelle tue applicazioni Microsoft Office .



About the author

Sono uno sviluppatore di software freeware e sostenitore di Windows Vista/7. Ho scritto diverse centinaia di articoli su vari argomenti relativi al sistema operativo, inclusi suggerimenti e trucchi, guide di riparazione e best practice. Offro anche servizi di consulenza in ufficio attraverso la mia azienda, Help Desk Services. Ho una profonda conoscenza del funzionamento di Office 365, delle sue funzionalità e di come utilizzarle nel modo più efficace.



Related posts