VBA Tutorial
Iniziare con VBA
Ricerca…
Osservazioni
Questa sezione fornisce una panoramica su cosa sia Vba e perché uno sviluppatore potrebbe volerlo utilizzare.
Dovrebbe anche menzionare qualsiasi argomento di grandi dimensioni all'interno di vba e collegarsi agli argomenti correlati. Poiché la documentazione di vba è nuova, potrebbe essere necessario creare versioni iniziali di tali argomenti correlati.
Versioni
Versione | Versioni di Office | Data di rilascio Note | Data di rilascio |
---|---|---|---|
VBA6 | ? - 2007 | [Qualche tempo dopo] [1] | 1992/06/30 |
Vba7 | 2010 - 2016 | [Blog.techkit.com] [2] | 2010-04-15 |
VBA per Mac | 2004, 2011 - 2016 | 2004-05-11 |
Accesso a Visual Basic Editor in Microsoft Office
È possibile aprire l'editor VB in qualsiasi applicazione Microsoft Office premendo Alt + F11 o andando alla scheda Sviluppatore e facendo clic sul pulsante "Visual Basic". Se non vedi la scheda Sviluppatore nella barra multifunzione, controlla se è abilitata.
Per impostazione predefinita, la scheda Sviluppatore è disabilitata. Per abilitare la scheda Sviluppatore vai su File -> Opzioni, seleziona Personalizza barra multifunzione nell'elenco a sinistra. A destra nella vista ad albero "Personalizza la barra multifunzione" trova la voce Albero sviluppatore e imposta il controllo per la casella di controllo Sviluppatore su selezionato. Fai clic su OK per chiudere la finestra di dialogo Opzioni.
La scheda Sviluppatore è ora visibile nella barra multifunzione su cui è possibile fare clic su "Visual Basic" per aprire Visual Basic Editor. In alternativa è possibile fare clic su "Visualizza codice" per visualizzare direttamente il riquadro di codice dell'elemento attualmente attivo, ad esempio Foglio di lavoro, Grafico, Forma.
È possibile utilizzare VBA per automatizzare quasi tutte le azioni che possono essere eseguite in modo interattivo (manualmente) e fornire anche funzionalità non disponibili in Microsoft Office. VBA può creare un documento, aggiungervi del testo, formattarlo, modificarlo e salvarlo, il tutto senza l'intervento umano.
Primo modulo e Hello World
Per iniziare la codifica, in primo luogo, è necessario fare clic con il pulsante destro del mouse sul progetto VBA nell'elenco a sinistra e aggiungere un nuovo modulo. Il tuo primo codice Hello-World potrebbe assomigliare a questo:
Sub HelloWorld()
MsgBox "Hello, World!"
End Sub
Per provarlo, premi il pulsante Riproduci nella barra degli strumenti o semplicemente premi il tasto F5 . Congratulazioni! Hai creato il tuo primo modulo VBA.
Debug
Il debugging è un modo molto potente per avere uno sguardo più ravvicinato e correggere un codice errato (o non funzionante) funzionante.
Esegui il codice passo dopo passo
La prima cosa che devi fare durante il debug è fermare il codice in posizioni specifiche e poi eseguirlo riga per riga per vedere se ciò accade come previsto.
- Punto di interruzione ( F9 , Debug - Disattiva punto di interruzione): è possibile aggiungere un punto di interruzione a qualsiasi linea eseguita (ad esempio, non alle dichiarazioni), quando l'esecuzione raggiunge quel punto si arresta e fornisce il controllo all'utente.
- È inoltre possibile aggiungere la parola chiave
Stop
a una riga vuota per fare in modo che il codice si fermi in quella posizione in fase di esecuzione. Ciò è utile se, ad esempio, prima delle righe di dichiarazione a cui non è possibile aggiungere un punto di interruzione con F9 - Entra in ( F8 , Debug - Step into): esegue solo una riga di codice, se quella è una chiamata di una sub / funzione definita dall'utente, quindi viene eseguita riga per riga.
- Passaggio ( Maiusc + F8 , Debug - Passaggio sopra): esegue una riga di codice, non inserisce sottosistemi / funzioni definiti dall'utente.
- Esci ( Ctrl + Shift + F8 , Debug - Esci): Esci da sub / funzione corrente (esegui il codice fino alla fine).
- Corri al cursore ( Ctrl + F8 , Debug - Esegui al cursore): esegui il codice fino a raggiungere la linea con il cursore.
- È possibile utilizzare
Debug.Print
per stampare le righe sulla finestra immediata in fase di esecuzione. Puoi anche usareDebug.?
come scorciatoia perDebug.Print
La finestra degli orologi
L'esecuzione del codice riga per riga è solo il primo passo, dobbiamo conoscere più dettagli e uno strumento per quella è la finestra di controllo (finestra Visualizza-Guarda), qui puoi vedere i valori delle espressioni definite. Per aggiungere una variabile alla finestra dell'orologio, puoi:
- Fai clic con il tasto destro del mouse e seleziona "Aggiungi orologio".
- Fai clic con il tasto destro del mouse nella finestra di visualizzazione, seleziona "Aggiungi orologio".
- Vai a Debug - Aggiungi orologio.
Quando aggiungi una nuova espressione puoi scegliere se vuoi solo vedere il suo valore, o anche interrompere l'esecuzione del codice quando è vero o quando cambia il suo valore.
Finestra immediata
La finestra immediata consente di eseguire codice arbitrario o stampare elementi precedendoli con la parola chiave Print
o con un singolo punto interrogativo " ?
"
Qualche esempio:
-
? ActiveSheet.Name
: restituisce il nome del foglio attivo -
Print ActiveSheet.Name
: restituisce il nome del foglio attivo -
? foo
- restituisce il valore difoo
* -
x = 10
setx
a 10 *
* Ottenere / Impostare valori per variabili tramite la Finestra Immediata può essere fatto solo durante il runtime
Debug delle migliori pratiche
Ogni volta che il tuo codice non funziona come dovrebbe, la prima cosa che dovresti fare è leggerlo di nuovo con attenzione, cercando gli errori.
Se ciò non aiuta, quindi avviare il debug; per le procedure brevi può essere efficiente eseguirlo riga per riga, per quelli più lunghi è probabilmente necessario impostare punti di interruzione o interruzioni sulle espressioni guardate, l'obiettivo qui è trovare la linea che non funziona come previsto.
Una volta ottenuta la linea che fornisce il risultato errato, ma il motivo non è ancora chiaro, provare a semplificare le espressioni o sostituire le variabili con costanti, in modo da capire se il valore delle variabili è sbagliato.
Se ancora non riesci a risolverlo e chiedi aiuto:
- Includi come possibile parte del tuo codice per capire il tuo problema
- Se il problema non è correlato al valore delle variabili, sostituirle con costanti. (così, invece di
Sheets(a*b*c+d^2).Range(addressOfRange)
writeSheets(4).Range("A2")
) - Descrivi quale linea dà il comportamento sbagliato e che cos'è (errore, risultato errato ...)