Sommario:
- Esaminare il codice
- Uso della funzione MsgBox
- Inserimento di debug. Stampa istruzioni
- Utilizzo del debugger VBA
Video: Excel VBA - Debugging 2024
Potresti incontrare qualche problema con il tuo codice VBA, ma come trovi il problema? A volte il tuo codice VBA potrebbe richiedere un po 'di debug. Continua a leggere per scoprire i quattro metodi più comuni per il debug del codice VBA di Excel:
-
Esame del codice
-
Inserimento delle funzioni di MsgBox in varie posizioni nel codice
-
Inserimento di debug. Stampa istruzioni
-
Utilizzo degli strumenti di debug integrati di Excel
Esaminare il codice
Forse la tecnica di debug più semplice è semplicemente dare un'occhiata al codice per vedere se riesci a trovare il problema. Questo metodo, ovviamente, richiede conoscenza ed esperienza. In altre parole, devi sapere cosa stai facendo. Se sei fortunato, l'errore salta fuori e ti schiaffi la fronte e dici "D'oh! "Quando il dolore alla fronte diminuisce, puoi risolvere il problema.
Notare l'uso delle parole, "Se sei fortunato. "Questo perché spesso scopri errori quando hai lavorato al tuo programma per otto ore di fila, è 2 a. m. e tu stai correndo con caffeina e forza di volontà. In momenti come quello, sei fortunato se riesci a vedere il tuo codice, figuriamoci a trovare gli errori. Quindi, non sorprenderti se semplicemente esaminare il tuo codice non è abbastanza per farti trovare e cancellare tutti i bug che contiene.
Uso della funzione MsgBox
Un problema comune in molti programmi implica che una o più variabili non assumono i valori che ci si aspetta. In questi casi, il monitoraggio della / e variabile / e durante l'esecuzione del codice è una tecnica di debug molto utile. Un modo per farlo è inserire le funzioni temporanee di MsgBox nella tua routine. Ad esempio, se si dispone di una variabile denominata CellCount, è possibile inserire la seguente istruzione:
MsgBox CellCount
Quando si esegue la routine, la funzione MsgBox visualizza il valore di CellCount.
È spesso utile visualizzare i valori di due o più variabili nella finestra del messaggio. La seguente istruzione mostra il valore corrente di due variabili: LoopIndex (1) e CellCount (72), separati da uno spazio.
MsgBox LoopIndex & "" & CellCount
Si noti che le due variabili sono combinate con l'operatore di concatenazione (&) e inseriscono un carattere di spazio tra di esse. Altrimenti, la finestra di messaggio stringe i due valori insieme, facendoli apparire come un singolo valore. È inoltre possibile utilizzare la costante incorporata, vbNewLine, al posto del carattere dello spazio. vbNewLine inserisce un'interruzione dell'alimentazione di riga, che visualizza il testo su una nuova riga. L'istruzione seguente mostra tre variabili, ciascuna su una riga separata:
Utilizzo di una finestra di messaggio per visualizzare il valore di tre variabili.MsgBox LoopIndex e vbNewLine & CellCount & vbNewLine & MyVal
Questa tecnica non è limitata al monitoraggio delle variabili. È possibile utilizzare una finestra di messaggio per visualizzare tutti i tipi di informazioni utili mentre il codice è in esecuzione. Ad esempio, se il codice scorre in una serie di fogli, la seguente istruzione visualizza il nome e il tipo del foglio attivo:
MsgBox ActiveSheet. Name & "" & TypeName (ActiveSheet)
Se la tua casella di messaggio mostra qualcosa di inaspettato, premi Ctrl + Break, e vedi una finestra di dialogo che ti dice che l'esecuzione del codice è stata interrotta, hai quattro scelte:
-
Clicca il Continua il pulsante. Il codice continua a essere in esecuzione.
-
Fai clic sul pulsante Fine. L'esecuzione si ferma
-
Fai clic sul pulsante Debug. Il VBE entra in modalità Debug.
-
Fai clic sul pulsante Guida. Una schermata di aiuto ti dice che hai premuto Ctrl + Break. In altre parole, non è molto utile.
Premendo Ctrl + Break si interrompe l'esecuzione del codice e si ottengono alcune scelte.
Se la tua tastiera non ha un tasto Break, prova a premere Ctrl + ScrollLock.
Sentiti libero di usare spesso le funzioni di MsgBox quando esegui il debug del tuo codice. Assicurati di rimuoverli solo dopo aver identificato e risolto il problema.
Inserimento di debug. Stampa istruzioni
In alternativa all'utilizzo delle funzioni MsgBox nel codice, puoi inserire uno o più debug temporanei. Stampa dichiarazioni. Utilizzare queste istruzioni per stampare il valore di una o più variabili nella finestra Immediata. Ecco un esempio che mostra i valori di tre variabili:
Debug. Stampa LoopIndex, CellCount, MyVal
Si noti che le variabili sono separate da virgole. Puoi visualizzare tutte le variabili che vuoi con un singolo Debug. Stampa la dichiarazione.
Debug. Stampa invia l'output alla finestra Immediata anche se quella finestra è nascosta. Se la finestra Immediata di VBE non è visibile, premi Ctrl + G (o scegli Visualizza → Finestra Immediata). Ecco alcuni output nella finestra Immediata.
Un debug. L'istruzione di stampa invia l'output alla finestra Immediata.Diversamente da MsgBox, Debug. Le dichiarazioni di stampa non fermano il tuo codice. Quindi è necessario tenere d'occhio la finestra Immediata per vedere cosa sta succedendo.
Dopo aver eseguito il debug del codice, assicurati di rimuovere tutto il debug. Stampa dichiarazioni. Persino le grandi aziende come Microsoft di tanto in tanto dimenticano di rimuovere il loro debug. Stampa dichiarazioni. In diverse versioni precedenti di Excel, ogni volta che veniva aperto il componente aggiuntivo Strumenti di analisi, si vedevano molti strani messaggi nella finestra Immediata. Questo problema è stato risolto definitivamente in Excel 2007.
Utilizzo del debugger VBA
I progettisti di Excel hanno una profonda familiarità con il concetto di bug. Di conseguenza, Excel include una serie di strumenti di debug che possono aiutare a correggere i problemi nel codice VBA.