Tutorial STRUMENTI DI DEBUG

Stato
Chiusa ad ulteriori risposte.

Zer0Kelvin

VBA Expert
Staff
19 Novembre 2016
1.945
115
60
Teramo (Provincia)
2010
159
Premessa: questo tutorial non ha la pretesa di essere un corso sul debugging, ma una semplice esposizione degli strumenti messi a disposizione da VBA.
Non troverete qui istruzioni sul "come" effettuare il debug
___________________________________________________________________________________________________________________________________

Parafrasando una massima di T. A. Edison potremmo dire che:

“Programmare è per il 10% ispirazione e per il 90% traspirazione”.

Abbiamo scritto il nostro bel programmino, formattato a dovere i nostri fogli, costruito ed abbellito le nostre userform e siamo pronti a concederci un momento di relax.

Illusi! Alla prima esecuzione il programma si pianta con un oscuro e minaccioso messaggio di errore; ma potrebbe andar peggio.

Potrebbe piovere?

No, il peggio è quando sembra che tutto vada liscio, il programma sembra funzionare, ma non fa quello che ci aspettavamo.

Che fare allora? Strapparsi i capelli? Chiamare un esorcista? Dare la colpa al governo? Ci piacerebbe, ma non risolverebbe il problema.

A questo punto entra in campo la parola più odiata in assoluto da qualunque programmatore che si rispetti: IL DEBUG! la caccia agli errori.



Fortunatamente l’ambiente VBA mette a disposizione diversi strumenti che possono aiutare a scovare i bug del vostro programma.

Prima di iniziare due consigli:

Primo consiglio: rendete SEMPRE obbligatoria la dichiarazione delle variabili.

Potete farlo manualmente scrivendo la direttiva

Option Explicit

all’inizio di ogni modulo di codice oppure (consigliato) impostare l’ambiente VBA perché venga fatto automaticamente.

Per rendere automatica la dichiarazione obbligatoria delle variabili dovete, da VBA:

  • Aprire il menu “Strumenti”
  • Cliccare su “Opzioni”
  • Accedere alla scheda “Editor”
  • Mettere la spunta a “Dichiarazione di variabili obbligatoria” e confermare col pulsante “OK”

Secondo consiglio: dichiarate sempre il tipo delle variabili che usate

Perché fare questo? Perché in tal modo il compilatore rileva automaticamente diversi errori quali errori di battitura, incompatibilità fra due variabili ecc.

La prima mossa da fare, prima di mandare in esecuzione il programma, è compilarlo.

Andate nel menù “Debug” e cliccate sulla prima voce “Compila VBAProject”, così facendo diversi errori vengono rilevati automaticamente e possono essere corretti agevolmente.



Passiamo ora agli strumenti a disposizione del programmatore.

Esecuzione passo-passo (Tasto F8)

Il tasto F8 esegue il programma un’istruzione alla volta, dandovi modo di osservarne il comportamento e il valore assunto dalle variabili.

Esegui fino al cursore (CTRL+F8)

Avvia o prosegue l’esecuzione e la arresta sulla riga dove è posizionato il cursore.

Utile quando si vuole raggiungere velocemente un punto del programma e non si vuole impostare un punto di interruzione.

Esegui istruzione/routine (MAIUSC-F8)

Se vi trovate su una riga che contiene una chiamata a Sub o Function, premendo F8 verreste portati all’interno della routine chiamata.

Con MAIUSC-F8, invece, la routine viene eseguita e il programma si arresta sulla riga successiva.

Esci da istruzione/routine (CTRL+MAIUSC-F8)

Da usare se vi trovate all’interno di una routine richiamata dal codice e volete uscire velocemente.

Il programma si arresta sulla riga successiva a quella contenente la chiamata di routine.

Punto di interruzione (Tasto F9)

Posizionandovi su una riga e premendo F9 vedrete la riga diventare marrone; una nuova pressione di F9 eliminerà il punto di interruzione.

Quando il programma raggiunge un punto di interruzione, l’esecuzione si arresta in attesa di un vostro comando.

Istruzione Stop

Inserire l’istruzione Stop ha lo stesso effetto di un punto di interruzione, e può tornare utile in determinate situazioni.

Finestra espressioni di controllo

Permette di valutare il valore di espressioni anche complesse durante l’esecuzione passo-passo o in stato di interruzione.

Se valutate un oggetto vi permette anche di “aprire” l’oggetto per “guardarci dentro”; potete farlo cliccando sul segno + a sinistra del nome dell’oggetto.

Questa finestra di solito si trova sotto quella del codice; se non è visibile la potete attivare dal menù “Visualizza”

Per aggiungere un’espressione alla finestra potete utilizzare la voce “Aggiungi espressione di controllo” che potete trovare

  • Nel menu “Debug”
  • Nel menu contestuale (quello che appare quando fate click destro col mouse) della finestra di codice e nella finestra Espressioni di controllo.
Finestra immediata (CTRL+G)

Può essere usata per eseguire singole istruzioni o con Debug.Print

Se inserite un’istruzione nella finestra immediata, premendo invio questa verrà eseguita.

Provate a scrivere

Msgbox “Hello word”

e premete invio; vedrete comparire la MessageBox.

Potete usarla, in modalità iterruzione, per modificare “al volo” il valore di una variabile (si può fare anche con le espressioni di controllo).

Debug.Print può essere usato per scrivere dei valori nella finestra immediata col programma in esecuzione.

Esempio:

For I = 1 to 10

Debug.Print I

Next I

Controllo immediato (MAIUSC+F9)

Permette di valutare immediatamente (sempre in modalità interruzione) qualunque espressione che fornisca un risultato, comprese le funzioni; se per esempio avete

Sqr(9)

la evidenziate e premete MAIUSC+F9, si aprirà una finestra che vi mostra il risultato.

In molti casi lo stesso si può ottenere semplicemente puntando l’espressione col mouse.

Per esempio andando col mouse sul nome di una variabile, un piccolo popup ne visualizza il valore; lo stesso si può ottenere entro certi limiti, evidenziando un’espressione e puntandola col mouse, per es. evidenziando

A+1+C

e passandoci sopra col mouse si visualizzerà il valore assunto dall’espressione.



Menu debug e barra degli strumenti

Nel menù “Debug” trovate tutte le funzioni che ho descritto; si può anche fare in modo che siano presenti sulla barra degli strumenti sotto forma di pulsanti.

  • Fate click destro sulla barra degli strumenti
  • Mettete la spunta alla voce “Debug”
Ciao a tutti.
 

alfrimpa

VBA Expert
Supermoderatore
18 Dicembre 2015
29.883
1.845
67
Napoli
2019 Pro Plus
821
Zer0Kelvin @Zer0Kelvin

Bellissimo lavoro Marco; intanto essendo un tutorial ho chiuso la discussione.
 

ges

Excel/VBA Expert
Amministratore
21 Giugno 2015
27.720
1.865
Como
2011MAC 365WIN
774
Grazie Zer0Kelvin @Zer0Kelvin ottimo!!! :StrettaDiMano:
 

Powerwin

VBA Expert
Moderatore
17 Marzo 2016
6.382
245
vicino a Milano
2019
195
Mi ha "bruciato" l'argomento che volevo portare nella prossima live a cui avrei potuto partecipare :gongolo:
Comunque complimenti Marco :StrettaDiMano:
 

Marius44

VBA Expert
Moderatore
9 Settembre 2015
6.850
115
76
Catania
Excel2010
274
Buongiorno a tutti
Cosa mi rimane da dire? Poco o nulla Eek

Non ci sono aggettivi a sufficienza per qualificare il lavoro che hai fatto. BRAVISSIMO.
Complimenti :applausi:PollicioneInSu:batticinque:

Ciao,
Mario
 
Stato
Chiusa ad ulteriori risposte.

Sostieni ForumExcel

Aiutaci a sostenere le spese e a mantenere online la community attraverso una libera donazione!