Debug della macro VBA - Suggerimenti per Excel

Come eseguire il debug di una macro VBA di Excel che non funziona. Esistono strumenti straordinari in Excel VBA che ti consentono di vedere il valore corrente memorizzato nelle variabili mentre passi nel codice una riga alla volta. Se hai una macro che non funziona,

Guarda un video

  • Hai una macro VBA di Excel che non funziona
  • VBA ha incredibili strumenti di debug
  • Anziché eseguire il codice, puoi scorrere il codice utilizzando F8
  • La linea in giallo è la linea che sta per essere eseguita
  • Passa il mouse su una variabile per vedere il valore di quella variabile.
  • Passa avanti e indietro in Excel per vedere cosa sta succedendo

Trascrizione del video

Impara Excel da Podcast, episodio 2096: debug di VBA Macro

Ehi, bentornato al netcast, sono Bill Jelen. Domanda di oggi: qualcuno aveva un codice che ho pubblicato su un vecchio video di YouTube e ha pubblicato un commento dicendo: "Ah, non funziona. Non salva la fattura duplicata ma non genera un errore. " Non so cosa c'è che non va nel codice. Va bene, sai, guarda, ci sono ottimi strumenti disponibili quando VBA Macro non funziona. Quindi abbiamo un pulsante qui che dovrebbe eseguire del codice. Assegnerò la macro, si chiama SaveInvoice. Faccio clic su Modifica e siamo finiti in VBA. E normalmente quando premiamo quel pulsante verrà eseguito solo questo codice. BAM! Come se fosse successo tutto molto velocemente ma non puoi guardare cosa sta succedendo.

Quindi, sotto gli strumenti di debug, una delle mie cose preferite qui è Debug Step Into, in cui vedrai il tasto di scelta rapida F8 e che ci consente di eseguire il codice una riga alla volta. Quindi ho premuto F8 lì e questo è- la linea in giallo è la linea che sta per eseguire. Quindi se premo F8, salta su queste due dichiarazioni e ora stiamo per fare un ActiveSheet.Copy. Quindi ciò che è veramente bello qui è, sai, specialmente se hai un monitor grande che la finestra del Podcast è troppo piccola ma quello che puoi fare è guardare la Macro in esecuzione. Quindi in questo momento sta per eseguire ActiveSheet.Copy. In questo momento sono in una cartella di lavoro chiamata Podcast 2096. Ecco un foglio di lavoro chiamato Fattura e quando premo F8, vedrai che ora sono su una cartella di lavoro nuova di zecca chiamata Book2 e abbiamo solo la Fattura, va bene.

E ora stiamo per assegnare questa cosa grande e lunga a New FN. Premi F8. Va bene ora, non sembrava che fosse successo niente qui perché non è successo niente qui. Ma ecco la cosa bella, ora ho assegnato qualcosa a quella variabile chiamata New FN e se prendo il mouse e passo il mouse su New FN, apparirà un piccolo suggerimento che mi mostra cosa è memorizzato in New FN. Quindi sta salvando il nome del file, c'è la cartella in cui andrà. Si chiama Invoice1234 perché ha preso il valore da F4 e poi ha aggiunto PDF.

Va bene ora, una delle cose più frustranti di Excel è che se la tua memoria inizia a scarseggiare, questo suggerimento non vuole apparire. Rimarrai lì e non accadrà nulla. A volte devi fare clic per farlo qui ea volte semplicemente non apparirà affatto. Quando non apparirà affatto, quello che possiamo fare è fare Ctrl + G. Ctrl + G è la finestra immediata e quindi useremo? che è la scorciatoia per Debug.Print, NewFN. Quindi, in altre parole, dimmi cosa c'è in New FN e ti mostrerà cosa c'è in New FN proprio lì.

Va bene così ora, stiamo per eseguire questa riga di codice che creerà un PDF. Va bene, quindi premerò F8. Va bene, ea questo punto dovremmo avere un nuovo PDF là fuori con 1234 e se vado a cercare nella cartella, abbastanza sicuro che Inv1234 dell'11 maggio alle 6:25 è stato appena creato. Fantastico, vero?

Bene, ora stiamo arrivando al punto in cui abbiamo il problema. Va bene, quindi premiamo F8 qui e viene visualizzato come Duplicate Copy. Va bene, ha funzionato. E poi F8, e possiamo vedere cosa c'è in New FN. Va bene, quindi ha DupInv1234.pdf e puoi anche tornare qui e fare clic dopo Print NewFN e poi vedrai che abbiamo cambiato il nome del file, ok. Quindi va tutto bene. Quindi premiamo F8 per eseguire la creazione del PDF. Eccezionale! Sembra tutto fantastico, vero?

Quindi torna ai nostri file Podcast. Va bene, ma invece di avere qualcosa chiamato DupInv1234, non so come qualcosa chiamato Book2. Va bene, è stato creato solo un minuto fa. Questo deve essere l'unico ma accidenti! Sembra essere il nome sbagliato. Va bene, quindi torniamo a VBA e so che ho appena assegnato il valore giusto a New FN in questo modo, va bene. E vediamo come lo stiamo salvando. Lo stiamo salvando come NewFN1 che è vuoto; e poiché è vuoto significa che sta prendendo il nome del file che in questo caso è Book2 poiché ne ho fatto una copia. E l'ha cambiato - Oh guarda! Quindi qui, stavo assegnando il nome a NewFN e poi salvavo questo NewFN1, e ora, poiché sto eseguendo il debug e hovering, hovering è la cosa più grande di sempre. Spero di riuscire a capire cosa sta succedendo.Quindi torno e cambio il NewFN1. Ora, ecco la cosa fantastica. Va bene, quindi ho già passato questa riga in Macro ma posso trascinarla di nuovo e dire, va bene, eseguiamola di nuovo F8. E ora creiamo il PDF. Va bene, e lì si presenta con il nome giusto e tutto è fantastico.

Va bene, ora che so che ho finito, è tutto fantastico. Tutto funzionerà da qui. Faccio semplicemente clic su Esegui e verrà eseguito fino alla fine del codice. Va bene, a volte avrai una lunga Macro con, sai, centinaia di righe di codice che funzionano e poi una parte in particolare che non funziona, va bene? Quindi un paio di altri strumenti sono stati appena menzionati qui. Se hai bisogno di saltare un intero gruppo di codice ed eseguire tutto fino a quel punto, beh, un modo per farlo è fare clic qui e creare un punto di interruzione. Va bene, quindi ora quando eseguo questo, verrà eseguito tutto fino a quel punto. Posso semplicemente fare clic su Esegui e si fermerà, o se non vuoi nemmeno impostare un punto di interruzione, faremo semplicemente clic qui e diremo Debug, Esegui al cursore. Avvia dal Cursore.Ora so che questo causerà un problema qui perché il codice per cambiare questo numero di fattura, non l'ho ancora collegato. Quindi inserirò un nuovo numero di fattura e adesso sono su quella riga. Debug, Esegui al cursore che è Ctrl + F8. Va bene, quindi ora ha eseguito tutto fino a quel punto e quello che dovremmo avere è che dovremmo essere in grado di vedere che ha appena creato Inv1235, ok. E ora si tratta di … siamo su questa riga di codice. Posso semplicemente premere F8 per eseguire una riga o semplicemente eseguire il resto del percorso. E c'è il nostro DupInv1235, va bene? Quindi, gli strumenti di debug qui in VBA sono fantastici. Consente di eseguire un codice una riga alla volta, disporre lo schermo in modo da poter vedere sia il codice in esecuzione che i risultati del codice sulla sinistra. E sai, si spera, che tu possa capire cosa non va nel codice.

Va bene, quindi riepilogo dell'episodio: avere una macro VBA di Excel che non funziona. Ha incredibili strumenti di debug. Piuttosto che eseguire il codice, puoi scorrere il codice utilizzando F8. La linea in giallo è la linea che sta per essere eseguita. Puoi passare con il mouse sulla variabile per vedere il valore di quella variabile, passare avanti e indietro su Excel per vedere cosa sta succedendo.

Beh, ehi, voglio ringraziarti per essere passato. Ci vediamo la prossima volta per un altro netcast da.

Download file

Scarica il file di esempio qui: Podcast2096.xlsm

Articoli interessanti...