{"id":1520,"date":"2023-11-18T02:08:34","date_gmt":"2023-11-18T02:08:34","guid":{"rendered":"https:\/\/exceladvisor.org\/it\/gestione-degli-errori\/"},"modified":"2023-12-10T06:28:39","modified_gmt":"2023-12-10T06:28:39","slug":"gestione-degli-errori","status":"publish","type":"page","link":"https:\/\/exceladvisor.org\/it\/gestione-degli-errori\/","title":{"rendered":"Tipi di errori vba: debug e soluzione"},"content":{"rendered":"<div class=\"excel-prima-del-contenuto\" id=\"excel-2939578328\"><script type=\"text\/javascript\">\r\n\tatOptions = {\r\n\t\t'key' : 'c1158f160081d6540a8409e6925dab94',\r\n\t\t'format' : 'iframe',\r\n\t\t'height' : 250,\r\n\t\t'width' : 300,\r\n\t\t'params' : {}\r\n\t};\r\n<\/script>\r\n<script type=\"text\/javascript\" src=\"\/\/www.highperformanceformat.com\/c1158f160081d6540a8409e6925dab94\/invoke.js\"><\/script><\/div> <p>Come qualsiasi altro linguaggio di programmazione, VBA \u00e8 sfortunato quando si tratta di errori e devi affrontarli qualunque cosa accada. Possono provenire da fonti diverse, come codifica errata, operazioni impossibili (come la divisione per zero) o errori imprevisti.<\/p><p> Il modo migliore per gestire questa situazione \u00e8 avere una buona comprensione di tutti i possibili risultati che potresti ottenere con il codice. Guarda l&#8217;esempio qui sotto in cui abbiamo un codice VBA che calcola la radice quadrata del numero utilizzando il valore che hai nella cella selezionata.<\/p><pre class=\"wp-block-code\"> <code class=\"language-visual-basic\" lang=\"visual-basic\">Sub Square_Root() ActiveCell. <strong>Value<\/strong> = ActiveCell. <strong>Value<\/strong> ^ (1 \/ 2) <strong>End<\/strong> Sub<\/code><\/pre><p> Ma se la cella attiva ha un valore diverso da un numero, riceverai un errore di runtime, come di seguito. <\/p><div class=\"wp-block-image\"><figure class=\"aligncenter size-large is-resized\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-58225\" src=\"https:\/\/exceladvisor.org\/wp-content\/uploads\/2023\/08\/01-erreur-dexecution.png\" sizes=\"auto, \" srcset=\"\" alt=\"errore di esecuzione\" width=\"531\" height=\"361\"><\/figure><\/div><h2 class=\"wp-block-heading\"> Parametri di errore in VBA (cattura degli errori)<\/h2><p> Nell&#8217;opzione VBA, puoi configurare l&#8217;impostazione per gestire gli errori prima di iniziare a scrivere i codici. Per aprire le impostazioni VBA, vai su Strumenti \u27a4 Opzioni \u27a4 Generale \u27a4 Rilevamento errori. Qui hai tre opzioni che puoi utilizzare. <\/p><div class=\"wp-block-image\"><figure class=\"aligncenter size-large is-resized\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-58226\" src=\"https:\/\/exceladvisor.org\/wp-content\/uploads\/2023\/08\/02-parametres-derreur-dans-vba.png\" sizes=\"auto, \" srcset=\"\" alt=\"\" width=\"532\" height=\"336\"><\/figure><\/div><ul><li> <strong>Interrompi su tutti gli errori<\/strong> : se hai abilitato questa opzione, VBA interromper\u00e0 il codice per tutti i tipi di errori anche se hai utilizzato tutti i tipi di tecniche di gestione degli errori.<\/li><li> <strong>Modulo classe manomissione<\/strong> : con questa opzione, VBA fermer\u00e0 tutti i tuoi codici che non vengono gestiti da alcuna tecnica. E se usi oggetti come Userforms, si inserir\u00e0 anche in quegli oggetti ed evidenzier\u00e0 la riga esatta in cui si trova l&#8217;errore.<\/li><li> <strong>Interruzione per errori non gestiti<\/strong> : questa \u00e8 l&#8217;impostazione predefinita che ti aiuta a conoscere tutti gli errori per i quali non stai utilizzando tecniche di gestione degli errori e interrompe il codice per tutti gli errori non gestiti. (Ma, se usi oggetti come Userforms, questo non evidenzier\u00e0 la linea che causa l&#8217;errore nell&#8217;oggetto, ma evidenzier\u00e0 solo la linea che fa riferimento a quell&#8217;oggetto).<\/li><\/ul><h2 class=\"wp-block-heading\"> Tipi di errori VBA<\/h2><p> Per comprendere gli errori VBA, puoi dividerli in quattro categorie e di seguito \u00e8 riportata la spiegazione di questi tipi di errori.<\/p><h3 class=\"wp-block-heading\"> 1. Errori di sintassi<\/h3><p> Durante la scrittura del codice VBA, devi seguire una particolare sintassi e quando la ignori o non la scrivi come dovrebbe, potresti riscontrare un errore di SINTASSI (noto anche come errore di lingua). \u00c8 come gli errori di battitura che fai mentre scrivi i tuoi codici.<\/p><p> Bene, VBA ti aiuta segnalando questi errori visualizzando un messaggio di errore. Devi solo assicurarti che &#8220;Controllo automatico della sintassi&#8221; sia abilitato nel tuo editor VB.<\/p><p> Vai su Strumento \u27a4 Opzioni e assicurati di selezionare la casella &#8220;Controllo automatico della sintassi&#8221;. Con questo, ogni volta che si commette un errore di SINTASSI, VBA visualizza un messaggio di errore. <\/p><div class=\"wp-block-image\"><figure class=\"aligncenter size-large is-resized\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-58227\" src=\"https:\/\/exceladvisor.org\/wp-content\/uploads\/2023\/08\/03-erreur-de-syntaxe.png\" sizes=\"auto, \" srcset=\"\" alt=\"\" width=\"533\" height=\"336\"><\/figure><\/div><p> Ma se &#8220;Controllo automatico della sintassi&#8221; \u00e8 disabilitato, VBA evidenzia comunque la riga di codice con l&#8217;errore ma non visualizza il messaggio di errore.<\/p><h3 class=\"wp-block-heading\"> 2. Errori di compilazione<\/h3><p> Ci\u00f2 accade quando si scrive codice per eseguire un&#8217;attivit\u00e0, ma tale attivit\u00e0 non \u00e8 valida o non pu\u00f2 essere eseguita da VBA. L&#8217;esempio migliore \u00e8 quando hai del codice che utilizza l&#8217;istruzione IF ma non hai aggiunto END IF alla fine dell&#8217;istruzione e ora quando esegui questo VBA mostri un messaggio di errore di compilazione. <\/p><div class=\"wp-block-image\"><figure class=\"aligncenter size-large is-resized\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-58228\" src=\"https:\/\/exceladvisor.org\/wp-content\/uploads\/2023\/08\/04-erreur-de-compilation.png\" sizes=\"auto, \" srcset=\"\" alt=\"\" width=\"500\" height=\"251\"><\/figure><\/div><p> Oltre a questo, ci sono altri esempi di errori di compilazione:<\/p><ul><li> Utilizzo di For senza Next ( <a href=\"https:\/\/exceladvisor.org\/it\/per-il-ciclo\/\">For Next<\/a> ).<\/li><li> Selezionare senza selezionare la fine ( <a href=\"https:\/\/exceladvisor.org\/it\/seleziona-il-caso\/\">Seleziona caso<\/a> ).<\/li><li> Non dichiarare una variabile quando hai abilitato \u201c <a href=\"https:\/\/exceladvisor.org\/it\/opzione-esplicita-2\/\">Opzione esplicita<\/a> \u201d.<\/li><li> Chiamare una sottofunzione\/funzione che non esiste.<\/li><\/ul><h3 class=\"wp-block-heading\"> 3. Errori di runtime<\/h3><p> Si verifica un errore di runtime quando il codice viene eseguito. Ricorda l&#8217;esempio che ho condiviso con te sopra quando il codice calcolava la radice quadrata di un numero. <\/p><div class=\"wp-block-image\"><figure class=\"aligncenter size-large is-resized\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-58229\" src=\"https:\/\/exceladvisor.org\/wp-content\/uploads\/2023\/08\/05-erreur-dexecution-lors-de-lexecution-du-code.png\" sizes=\"auto, \" srcset=\"\" alt=\"\" width=\"547\" height=\"372\"><\/figure><\/div><p> Quando si verifica un errore di runtime durante l&#8217;esecuzione del codice, interrompe il codice e mostra la finestra di dialogo di errore e questa finestra di errore parla della natura dell&#8217;errore riscontrato. Supponiamo che tu abbia scritto codice che <a href=\"https:\/\/exceladvisor.org\/it\/schedario-aperto\/\">apre una cartella di lavoro<\/a> dalla posizione specificata, ma che la cartella di lavoro viene ora spostata o eliminata da qualcuno. <\/p><div class=\"wp-block-image\"><figure class=\"aligncenter size-large is-resized\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-58178\" src=\"https:\/\/exceladvisor.org\/wp-content\/uploads\/2023\/08\/6-vba-affiche-une-erreur-dexecution.png\" sizes=\"auto, \" srcset=\"\" alt=\"\" width=\"452\" height=\"149\"><\/figure><\/div><p> Pertanto, quando esegui il codice, VBA ti mostrer\u00e0 un errore di runtime perch\u00e9 non riesce a trovare questo file in questa posizione. Il messaggio che ricevi in un errore di runtime descrive il motivo che ti aiuta a capire il motivo dell&#8217;errore. <\/p><div class=\"wp-block-image\"><figure class=\"aligncenter size-large is-resized\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-58179\" src=\"https:\/\/exceladvisor.org\/wp-content\/uploads\/2023\/08\/7-erreur-dexecution-1004.png\" sizes=\"auto, \" srcset=\"\" alt=\"\" width=\"381\" height=\"215\"><\/figure><\/div><p> E quando si verifica un errore di runtime, interrompe l&#8217;esecuzione del codice. Se fai clic sul pulsante &#8220;Debug&#8221;, ti mostra la riga di codice che contiene questo errore evidenziandola in giallo. Oppure puoi fare clic sul pulsante &#8220;Fine&#8221; per interrompere l&#8217;esecuzione del codice e chiudere il messaggio di errore.<\/p><h3 class=\"wp-block-heading\"> 4. Errore logico<\/h3><p> Questo non \u00e8 un errore ma un errore durante la scrittura del codice. Questi tipi di errori a volte possono causare problemi durante la loro individuazione e correzione.<\/p><p> Supponiamo che tu stia scrivendo del codice e quando dichiari una variabile usi il <a href=\"https:\/\/exceladvisor.org\/it\/variabili\/\">tipo di dati<\/a> sbagliato o hai usato i passaggi di calcolo sbagliati. In questo caso il tuo codice funzioner\u00e0 bene e non troverai facilmente questo errore. Il modo migliore per affrontare questo tipo di problema \u00e8 eseguire ciascuna riga di codice una per una.<\/p><h2 class=\"wp-block-heading\"> Utilizzo degli strumenti di debug in VBA<\/h2><p> VBA ti fornisce una serie di strumenti per eseguire il debug del tuo codice e rimuovere bug dai tuoi codici.<\/p><h3 class=\"wp-block-heading\"> 1. Compilare il progetto VBA<\/h3><p> In Visual Basic Editor \u00e8 disponibile un&#8217;opzione che puoi utilizzare immediatamente dopo aver terminato il codice. Queste opzioni di compilazione analizzano ogni riga del codice e visualizzano una finestra di messaggio se \u00e8 presente un errore nel codice.<\/p><p class=\"qt-tip\"> <strong>Nota:<\/strong> l&#8217;opzione Compila VBA tiene traccia solo degli errori di sintassi e di compilazione, non degli errori di runtime, poich\u00e9 questi errori si verificano solo durante l&#8217;esecuzione di un codice. Per utilizzare Compila progetto VBA, vai a \u27a4 Debug \u27a4 Compila progetto VBA. <\/p><div class=\"wp-block-image\"><figure class=\"aligncenter size-large is-resized\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-58232\" src=\"https:\/\/exceladvisor.org\/wp-content\/uploads\/2023\/08\/08-compiler-le-projet-vba.png\" sizes=\"auto, \" srcset=\"\" alt=\"\" width=\"366\" height=\"352\"><\/figure><\/div><p> Una volta eseguito &#8220;Compile VBA Project&#8221; e non sono presenti errori nel codice, le opzioni saranno disattivate.<\/p><h3 class=\"wp-block-heading\"> 2. Esegui ciascuna riga di codice una per una<\/h3><p> Ecco come lo faccio. Quando completo un codice, lo eseguo semplicemente riga per riga per verificare se c&#8217;\u00e8 un errore. Questo potrebbe richiedere tempo, ma ti aiuta a risolvere tutti gli errori (sintassi, compilazione ed esecuzione).<\/p><p> Sulla &#8220;Barra degli strumenti Debug&#8221; \u00e8 presente un pulsante &#8220;Passa in avanti&#8221; che puoi utilizzare per eseguire il codice riga per riga oppure puoi semplicemente premere F8 per eseguire una singola riga e quindi premerlo di nuovo per eseguire la riga successiva nel codice. <\/p><div class=\"wp-block-image\"><figure class=\"aligncenter size-large is-resized\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-58233\" src=\"https:\/\/exceladvisor.org\/wp-content\/uploads\/2023\/08\/09-executer-chaque-ligne-de-code.png\" sizes=\"auto, \" srcset=\"\" alt=\"\" width=\"338\" height=\"387\"><\/figure><\/div><h2 class=\"wp-block-heading\"> Utilizzo dell&#8217;istruzione &#8220;On ERROR&#8221; per gestire gli errori VBA<\/h2><p> \u00c8 importante controllare i tuoi codici e trovare possibili errori in tutti i metodi di debug che hai a disposizione. Ma il modo migliore e pi\u00f9 efficiente \u00e8 creare istruzioni di gestione degli errori in grado di gestire un errore e rendere il codice impeccabile una volta eseguito. Esploriamo queste affermazioni. Quando si verifica un errore in un codice VBA, il modo migliore per gestire questo errore pu\u00f2 essere:<\/p><ul><li> Lascia che VBA ignori l&#8217;errore ed esegua il codice<\/li><li> Lascia che uno speciale set di istruzioni venga eseguito quando si verifica un errore.<\/li><\/ul><p> In entrambe le soluzioni \u00e8 possibile utilizzare le istruzioni &#8220;On Error&#8221;. Di seguito sono riportate quattro dichiarazioni &#8220;On Error&#8221; che \u00e8 possibile utilizzare. E ora diamo un&#8217;occhiata a ciascuna affermazione una per una.<\/p><h3 class=\"wp-block-heading\"> 1. Se commetti un errore, ricomincia<\/h3><p> Questa semplice riga di codice consente a VBA di continuare l&#8217;esecuzione del codice nonostante si verifichi un errore. <strong>L&#8217;IDEA \u00e8 semplice:<\/strong> passare alla riga successiva di codice se viene rilevato un errore in qualsiasi punto durante l&#8217;esecuzione.<\/p><p> Nel codice seguente, hai due righe di codice:<\/p><ul><li> La prima riga indica che il valore nella cella A1 \u00e8 25 diviso 0<\/li><li> E la seconda riga dice che il valore della cella A2 \u00e8 10 diviso 5<\/li><\/ul><p> Ora c&#8217;\u00e8 un problema con il codice che hai online. Come sai, se dividi qualcosa per 0, il risultato sar\u00e0 un errore. Pertanto, quando si esegue questo codice, VBA visualizza un messaggio di errore <strong>&#8220;Errore di runtime &#8217;11&#8217; Divide per zero&#8221;<\/strong> e interrompe l&#8217;esecuzione.<\/p><p> Ma quando aggiungi &#8220;On Error Resume Next&#8221; all&#8217;inizio del codice ed esegui il codice, VBA ignora semplicemente la riga di codice in cui si verifica l&#8217;errore e continua con la seconda riga e aggiunge quel valore nella cella A2.<\/p><pre class=\"wp-block-code\"> <code class=\"language-visual-basic\" lang=\"visual-basic\">Sub myDivide() <strong>On<\/strong> Error Resume <strong>Next<\/strong> <strong>Range<\/strong> (\"A1\"). <strong>Value<\/strong> = 25 \/ 0 <strong>Range<\/strong> (\"A2\"). <strong>Value<\/strong> = 10 \/ 5 <strong>End<\/strong> Sub<\/code><\/pre><p> Pertanto, ogni volta che desideri che il tuo codice venga eseguito nonostante un errore si verifichi ovunque, utilizza semplicemente l&#8217;istruzione &#8220;On Error Resume Next&#8221; nel tuo codice.<\/p><p> <strong>Ma c&#8217;\u00e8 un&#8217;altra cosa che dovresti notare:<\/strong> ignorer\u00e0 solo gli errori che si verificano in seguito.<\/p><p> Supponiamo che si verifichi un errore alla riga 5 e tu abbia aggiunto &#8220;On Error Resume Next&#8221; alla riga 8, questo errore non verr\u00e0 saltato. Quindi, il modo migliore \u00e8 aggiungerlo come prima riga di codice nella procedura.<\/p><h3 class=\"wp-block-heading\"> 2. In caso di errore GoTo 0<\/h3><p> Questo \u00e8 il comportamento predefinito di VBA che quando si verifica un errore, interrompe l&#8217;esecuzione del codice.<\/p><p> Bene, l&#8217;utilizzo di &#8220;On Error GoTo 0&#8243; non fa alcuna differenza nel codice. VBA interromper\u00e0 semplicemente il codice e visualizzer\u00e0 un messaggio con una descrizione dell&#8217;errore. Allora perch\u00e9 dovrei preoccuparmi di usarlo? Domanda intelligente. Usiamo l&#8217;esempio che hai usato sopra in &#8221; <strong>On Error Resume Next<\/strong> &#8220;.<\/p><p> In questo codice, ogni volta che si verifica un errore, VBA prende la riga di codice successiva e la esegue e non vedrai alcun messaggio di errore. Ma supponiamo che tu abbia pi\u00f9 righe nel codice e non desideri superare tali righe se \u00e8 presente un errore nel codice.<\/p><p> Pertanto, se inserisci <strong>&#8220;On Error GoTo 0&#8221;<\/strong> dopo la seconda riga di codice, verr\u00e0 ripristinato il gestore errori predefinito di VBA che visualizza messaggi di errore ogni volta che si verifica un errore.<\/p><h3 class=\"wp-block-heading\"> 3. In caso di errore GoTo [Etichetta]<\/h3><p> Pensa a un posto all&#8217;interno di un edificio in cui puoi recarti in caso di emergenza. Allo stesso modo, utilizzando &#8220;On Error GoTo [Label]&#8221;, puoi semplicemente creare un blocco di codice separato nel codice principale per gestire un errore.<\/p><p> In effetti, &#8220;On Error GoTo [Label]&#8221; \u00e8 un modo molto migliore e pi\u00f9 conveniente per gestire gli errori. Nel codice seguente hai &#8220;On Error GoTo Oh!&#8221; Error\u201d ora in questa riga della dichiarazione, la parola \u201cOh!\u201d Errore\u201d \u00e8 l&#8217;etichetta.<\/p><p> Se guardi la fine del codice in cui hai un inizio specifico con il nome dell&#8217;etichetta e poi un codice per una finestra di messaggio con un messaggio sul codice.<\/p><p> Ora cosa succede se si verifica un errore, VBA salter\u00e0 all&#8217;etichetta \u201cOh! Error&#8221; ed eseguir\u00e0 il blocco di codice che hai dopo quell&#8217;etichetta.<\/p><p> <strong>Ma c&#8217;\u00e8 una cosa di cui devi occuparti:<\/strong> se non si verifica un errore, verr\u00e0 eseguita l&#8217;etichetta che hai nel tuo codice. Ci sono due cose che devi fare:<\/p><ul><li> Innanzitutto, assicurati di aggiungere il tag di errore alla fine del codice.<\/li><li> In secondo luogo, aggiungi un &#8220;Exit Sub&#8221; prima dell&#8217;etichetta di errore.<\/li><\/ul><p> In questo modo trarrai vantaggio in entrambe le situazioni. Diciamo che se si verifica un errore e VBA passa all&#8217;etichetta specificata, ci sar\u00e0 solo il codice dell&#8217;etichetta stessa da codificare. E se non si verifica un errore, l&#8217;istruzione &#8220;Exit Sub&#8221; che hai prima dell&#8217;etichetta uscir\u00e0 dalla procedura senza eseguire l&#8217;etichetta di errore.<\/p><h3 class=\"wp-block-heading\"> 4. In caso di errore GoTo -1<\/h3><p> Prima di entrare in questo argomento, lasciami condividere qualcosa con te. Quando si verifica un errore in un codice, VBA memorizza questo registro degli errori nella sua memoria e lo cancella solo al termine della routine.<\/p><p> <strong>Oh VBA! Vivi nel presente<\/strong><\/p><p> Per gestire il secondo errore nel codice VBA, \u00e8 necessario cancellare il primo errore dalla memoria VBA. Nel codice seguente sono presenti due istruzioni &#8220;On Error GoTo [Label]&#8221; che gestiscono gli errori da due diversi blocchi di codice.<\/p><p> Ma se esegui questo codice, quando viene visualizzato il secondo errore, VBA non passer\u00e0 all&#8217;etichetta impostata e mostrer\u00e0 invece il messaggio di errore &#8220;Tipo non corrispondente&#8221;.<\/p><pre class=\"wp-block-code\"> <code class=\"language-visual-basic\" lang=\"visual-basic\">Sub Square_Root() <strong>On<\/strong> Error GoTo myError1 <strong>Range<\/strong> (\"A1\"). <strong>Value<\/strong> = <strong>Range<\/strong> (\"A1\"). <strong>Value<\/strong> ^ (1 \/ 2) myError1: MsgBox \"There's some problem with the value you have in the cell A1.\" <strong>On<\/strong> Error GoTo myError2 <strong>Range<\/strong> (\"A2\"). <strong>Value<\/strong> = <strong>Range<\/strong> (\"A2\"). <strong>Value<\/strong> ^ (1 \/ 2) myError2: MsgBox \"There's some problem with the value you have in the cell A2.\" <strong>End<\/strong> Sub<\/code><\/pre><p> Per risolvere questo problema, puoi utilizzare &#8220;On Error GoTo -1&#8221; che consente a VBA di rimuovere l&#8217;errore corrente dalla sua memoria.<\/p><pre class=\"wp-block-code\"> <code class=\"language-visual-basic\" lang=\"visual-basic\">Sub Square_Root() On Error GoTo myError1 Range(\"A1\").Value = Range(\"A1\").Value ^ (1 \/ 2) myError1: MsgBox \"There's some problem with the value you have in the cell A1.\" On Error GoTo -1 On Error GoTo myError2 Range(\"A2\").Value = Range(\"A2\").Value ^ (1 \/ 2) myError2: MsgBox \"There's some problem with the value you have in the cell A2.\" End Sub<\/code><\/pre><p> Ora, quando esegui questo codice, &#8220;On Error GoTo -1&#8221; rimuove l&#8217;errore dalla memoria e VBA gestisce l&#8217;errore nella seconda istruzione come desiderato.<\/p><h2 class=\"wp-block-heading\"> Cos&#8217;altro devo sapere per gestire gli errori in VBA?<\/h2><p> Oltre a utilizzare le tecniche di gestione degli errori, ci sono alcune altre cose che puoi utilizzare per gestire meglio gli errori.<\/p><h3 class=\"wp-block-heading\"> Errore oggetto<\/h3><p> Quando si \u00e8 verificato un errore durante l&#8217;esecuzione del codice, \u00e8 possibile utilizzare l&#8217;oggetto Err per ottenere dettagli sull&#8217;errore. Sono disponibili alcune propriet\u00e0 e metodi che \u00e8 possibile utilizzare con l&#8217;oggetto Err. Impariamoli uno per uno.<\/p><h4 class=\"wp-block-heading\"> <strong>Propriet\u00e0<\/strong><\/h4><p> Ecco le propriet\u00e0 che puoi utilizzare con l&#8217;oggetto Err:<\/p><ul><li> <strong>Err.Number<\/strong> : quando si verifica un errore, un numero viene memorizzato nell&#8217;oggetto Err. Nel codice seguente, quando si verifica, la finestra di messaggio visualizza il numero di errore.<\/li><li> <strong>Err.Description<\/strong> : questa propriet\u00e0 visualizza la descrizione dell&#8217;errore che pu\u00f2 aiutare a comprenderne il motivo.<\/li><li> <strong>Err.Source:<\/strong> questa propriet\u00e0 indica in quale progetto si \u00e8 verificato l&#8217;errore.<\/li><li> <strong>Err.HelpContext:<\/strong> questa propriet\u00e0 restituisce l&#8217;ID del contesto della guida per l&#8217;errore nel file della guida.<\/li><li> <strong>Err.HelpContext:<\/strong> questo \u00e8 un valore stringa per il percorso del file della Guida.<\/li><\/ul><p> Normalmente, quando si gestiscono errori utilizzando tecniche di gestione degli errori, non si utilizza molto l&#8217;oggetto Err nei codici. Ma di seguito \u00e8 riportato un semplice esempio per utilizzarlo.<\/p><pre class=\"wp-block-code\"> <code class=\"language-visual-basic\" lang=\"visual-basic\"><strong>Sub<\/strong> Square_Root() <strong>On<\/strong> <strong>Error<\/strong> <strong>GoTo<\/strong> myError1    Range(\"A1\").Value = Sqr(Range(\"A1\").Value) <strong>Exit<\/strong> <strong>Sub<\/strong> myError1:    MsgBox \"There's some problem with the value you have in the cell A1.\" &amp; vbCrLf &amp; _                \"Error Number: \" &amp; Err.Number  &amp; vbCrLf &amp; _                \"Error Description: \" &amp; Err.Description <strong>End<\/strong> <strong>Sub<\/strong><\/code><\/pre><p> Quando si esegue il codice precedente e se si \u00e8 verificato un errore, verr\u00e0 visualizzata una finestra di messaggio con il numero e la descrizione dell&#8217;errore.<\/p><h4 class=\"wp-block-heading\"> <strong>Metodi<\/strong><\/h4><p> Con Err Object puoi anche utilizzare due metodi.<\/p><ul><li> <strong>Err.Clear:<\/strong> questo metodo cancella il numero di errore e la descrizione dell&#8217;errore dalla memoria VBA (questo \u00e8 diverso da &#8220;On Error GoTo -1&#8221; perch\u00e9 non ripristina completamente l&#8217;errore).<\/li><li> <strong>Err.Raise:<\/strong> con questo metodo puoi <a href=\"https:\/\/docs.microsoft.com\/en-us\/office\/vba\/language\/reference\/user-interface-help\/raise-method\" target=\"_blank\" rel=\"noreferrer noopener\">generare intenzionalmente un errore di runtime<\/a> nel tuo codice, ed ecco la sintassi da seguire:<\/li><\/ul><p> <strong>Err<\/strong> .Raise [numero], [fonte], [descrizione], [file della guida], [contesto della guida]<\/p><h2 class=\"wp-block-heading\"> Suggerimenti rapidi sulla gestione degli errori<\/h2><p> Ecco alcuni suggerimenti rapidi che puoi utilizzare per gestire meglio gli errori VBA.<\/p><ul><li> Utilizza &#8220;On Error Resume Next&#8221; solo quando sei sicuro che si sta verificando un errore ed \u00e8 accettabile saltare la riga di codice con un errore ed \u00e8 sicuro passare alla riga successiva.<\/li><li> Il modo migliore per gestire gli errori di runtime \u00e8 utilizzare &#8220;Gestore errori&#8221; con &#8220;On Error GoTo [Label]&#8221;. Ci\u00f2 garantisce che ogni volta che si verifica l&#8217;errore, riceverai una notifica, ma non verr\u00e0 visualizzato quel brutto messaggio di errore.<\/li><li> Ogni volta che utilizzi il gestore degli errori, assicurati di utilizzare prima &#8220;Exit Sub&#8221;.<\/li><\/ul><div class=\"gb-container gb-container-4db6181c gb-container-mt\"> <a class=\"gb-button gb-button-c5897111 gb-button-text gb-button-mt-button\" href=\"https:\/\/exceladvisor.org\/it\/vba\/\">Cos&#8217;\u00e8 VBA<\/a><h2 class=\"gb-headline gb-headline-665e5f6b gb-headline-text gb-headline-mt-heading\"> Tutorial correlati <\/h2><div class=\"gb-grid-wrapper gb-grid-wrapper-a20baf7c gb-grid-wrapper-mt-grid\"><div class=\"gb-grid-column gb-grid-column-65ddf67e\"><\/div><div class=\"gb-grid-column gb-grid-column-50067b57\"><div class=\"gb-container gb-container-50067b57\"><ul><li> <a href=\"https:\/\/exceladvisor.org\/it\/errore-di-overflow-6\/\">Errore di overflow VBA (errore 6)<\/a><\/li><li> <a href=\"https:\/\/exceladvisor.org\/it\/errore-di-esecuzione-1004\/\">Errore di runtime VBA (errore 1004)<\/a><\/li><li> <a href=\"https:\/\/exceladvisor.org\/it\/errore-indice-fuori-intervallo-9\/\">Errore di esecuzione dell&#8217;indice VBA fuori intervallo (errore 9)<\/a><\/li><li> <a href=\"https:\/\/exceladvisor.org\/it\/errore-di-incompatibilita-tipo-13\/\">Errore di incompatibilit\u00e0 del tipo VBA (errore 13)<\/a><\/li><li> <a href=\"https:\/\/exceladvisor.org\/it\/errore-di-memoria-insufficiente-7\/\">Errore di memoria insufficiente VBA (errore 7)<\/a><\/li><\/ul><\/div><\/div><\/div><\/div>","protected":false},"excerpt":{"rendered":"","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"open","ping_status":"closed","template":"","meta":{"ub_ctt_via":"","footnotes":""},"class_list":["post-1520","page","type-page","status-publish","hentry"],"featured_image_src":null,"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v25.4 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Tipi di errori VBA: debug e soluzione 2023 - Excel Advisor<\/title>\n<meta name=\"description\" content=\"Come qualsiasi altro linguaggio di programmazione, VBA \u00e8 sfortunato quando si tratta di errori e devi affrontarli, qualunque cosa accada...\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/exceladvisor.org\/it\/gestione-degli-errori\/\" \/>\n<meta property=\"og:locale\" content=\"it_IT\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Tipi di errori VBA: debug e soluzione 2023 - Excel Advisor\" \/>\n<meta property=\"og:description\" content=\"Come qualsiasi altro linguaggio di programmazione, VBA \u00e8 sfortunato quando si tratta di errori e devi affrontarli, qualunque cosa accada...\" \/>\n<meta property=\"og:url\" content=\"https:\/\/exceladvisor.org\/it\/gestione-degli-errori\/\" \/>\n<meta property=\"og:site_name\" content=\"Excel Advisor\" \/>\n<meta property=\"article:modified_time\" content=\"2023-12-10T06:28:39+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/exceladvisor.org\/wp-content\/uploads\/2023\/08\/01-erreur-dexecution.png\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Tempo di lettura stimato\" \/>\n\t<meta name=\"twitter:data1\" content=\"13 minuti\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/exceladvisor.org\/it\/gestione-degli-errori\/\",\"url\":\"https:\/\/exceladvisor.org\/it\/gestione-degli-errori\/\",\"name\":\"Tipi di errori VBA: debug e soluzione 2023 - Excel Advisor\",\"isPartOf\":{\"@id\":\"https:\/\/exceladvisor.org\/it\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/exceladvisor.org\/it\/gestione-degli-errori\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/exceladvisor.org\/it\/gestione-degli-errori\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/exceladvisor.org\/wp-content\/uploads\/2023\/08\/01-erreur-dexecution.png\",\"datePublished\":\"2023-11-18T02:08:34+00:00\",\"dateModified\":\"2023-12-10T06:28:39+00:00\",\"description\":\"Come qualsiasi altro linguaggio di programmazione, VBA \u00e8 sfortunato quando si tratta di errori e devi affrontarli, qualunque cosa accada...\",\"breadcrumb\":{\"@id\":\"https:\/\/exceladvisor.org\/it\/gestione-degli-errori\/#breadcrumb\"},\"inLanguage\":\"it-IT\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/exceladvisor.org\/it\/gestione-degli-errori\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"it-IT\",\"@id\":\"https:\/\/exceladvisor.org\/it\/gestione-degli-errori\/#primaryimage\",\"url\":\"https:\/\/exceladvisor.org\/wp-content\/uploads\/2023\/08\/01-erreur-dexecution.png\",\"contentUrl\":\"https:\/\/exceladvisor.org\/wp-content\/uploads\/2023\/08\/01-erreur-dexecution.png\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/exceladvisor.org\/it\/gestione-degli-errori\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/exceladvisor.org\/it\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Tipi di errori vba: debug e soluzione\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/exceladvisor.org\/it\/#website\",\"url\":\"https:\/\/exceladvisor.org\/it\/\",\"name\":\"Excel Advisor\",\"description\":\"Tips, Tricks, and Time-Saving Hacks\",\"publisher\":{\"@id\":\"https:\/\/exceladvisor.org\/it\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/exceladvisor.org\/it\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"it-IT\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/exceladvisor.org\/it\/#organization\",\"name\":\"Excel Advisor\",\"url\":\"https:\/\/exceladvisor.org\/it\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"it-IT\",\"@id\":\"https:\/\/exceladvisor.org\/it\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/exceladvisor.org\/it\/wp-content\/uploads\/2023\/12\/exceladvisor.org_.png\",\"contentUrl\":\"https:\/\/exceladvisor.org\/it\/wp-content\/uploads\/2023\/12\/exceladvisor.org_.png\",\"width\":105,\"height\":36,\"caption\":\"Excel Advisor\"},\"image\":{\"@id\":\"https:\/\/exceladvisor.org\/it\/#\/schema\/logo\/image\/\"}}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Tipi di errori VBA: debug e soluzione 2023 - Excel Advisor","description":"Come qualsiasi altro linguaggio di programmazione, VBA \u00e8 sfortunato quando si tratta di errori e devi affrontarli, qualunque cosa accada...","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/exceladvisor.org\/it\/gestione-degli-errori\/","og_locale":"it_IT","og_type":"article","og_title":"Tipi di errori VBA: debug e soluzione 2023 - Excel Advisor","og_description":"Come qualsiasi altro linguaggio di programmazione, VBA \u00e8 sfortunato quando si tratta di errori e devi affrontarli, qualunque cosa accada...","og_url":"https:\/\/exceladvisor.org\/it\/gestione-degli-errori\/","og_site_name":"Excel Advisor","article_modified_time":"2023-12-10T06:28:39+00:00","og_image":[{"url":"https:\/\/exceladvisor.org\/wp-content\/uploads\/2023\/08\/01-erreur-dexecution.png","type":"","width":"","height":""}],"twitter_card":"summary_large_image","twitter_misc":{"Tempo di lettura stimato":"13 minuti"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/exceladvisor.org\/it\/gestione-degli-errori\/","url":"https:\/\/exceladvisor.org\/it\/gestione-degli-errori\/","name":"Tipi di errori VBA: debug e soluzione 2023 - Excel Advisor","isPartOf":{"@id":"https:\/\/exceladvisor.org\/it\/#website"},"primaryImageOfPage":{"@id":"https:\/\/exceladvisor.org\/it\/gestione-degli-errori\/#primaryimage"},"image":{"@id":"https:\/\/exceladvisor.org\/it\/gestione-degli-errori\/#primaryimage"},"thumbnailUrl":"https:\/\/exceladvisor.org\/wp-content\/uploads\/2023\/08\/01-erreur-dexecution.png","datePublished":"2023-11-18T02:08:34+00:00","dateModified":"2023-12-10T06:28:39+00:00","description":"Come qualsiasi altro linguaggio di programmazione, VBA \u00e8 sfortunato quando si tratta di errori e devi affrontarli, qualunque cosa accada...","breadcrumb":{"@id":"https:\/\/exceladvisor.org\/it\/gestione-degli-errori\/#breadcrumb"},"inLanguage":"it-IT","potentialAction":[{"@type":"ReadAction","target":["https:\/\/exceladvisor.org\/it\/gestione-degli-errori\/"]}]},{"@type":"ImageObject","inLanguage":"it-IT","@id":"https:\/\/exceladvisor.org\/it\/gestione-degli-errori\/#primaryimage","url":"https:\/\/exceladvisor.org\/wp-content\/uploads\/2023\/08\/01-erreur-dexecution.png","contentUrl":"https:\/\/exceladvisor.org\/wp-content\/uploads\/2023\/08\/01-erreur-dexecution.png"},{"@type":"BreadcrumbList","@id":"https:\/\/exceladvisor.org\/it\/gestione-degli-errori\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/exceladvisor.org\/it\/"},{"@type":"ListItem","position":2,"name":"Tipi di errori vba: debug e soluzione"}]},{"@type":"WebSite","@id":"https:\/\/exceladvisor.org\/it\/#website","url":"https:\/\/exceladvisor.org\/it\/","name":"Excel Advisor","description":"Tips, Tricks, and Time-Saving Hacks","publisher":{"@id":"https:\/\/exceladvisor.org\/it\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/exceladvisor.org\/it\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"it-IT"},{"@type":"Organization","@id":"https:\/\/exceladvisor.org\/it\/#organization","name":"Excel Advisor","url":"https:\/\/exceladvisor.org\/it\/","logo":{"@type":"ImageObject","inLanguage":"it-IT","@id":"https:\/\/exceladvisor.org\/it\/#\/schema\/logo\/image\/","url":"https:\/\/exceladvisor.org\/it\/wp-content\/uploads\/2023\/12\/exceladvisor.org_.png","contentUrl":"https:\/\/exceladvisor.org\/it\/wp-content\/uploads\/2023\/12\/exceladvisor.org_.png","width":105,"height":36,"caption":"Excel Advisor"},"image":{"@id":"https:\/\/exceladvisor.org\/it\/#\/schema\/logo\/image\/"}}]}},"yoast_meta":{"yoast_wpseo_title":"","yoast_wpseo_metadesc":"","yoast_wpseo_canonical":""},"_links":{"self":[{"href":"https:\/\/exceladvisor.org\/it\/wp-json\/wp\/v2\/pages\/1520","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/exceladvisor.org\/it\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/exceladvisor.org\/it\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/exceladvisor.org\/it\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/exceladvisor.org\/it\/wp-json\/wp\/v2\/comments?post=1520"}],"version-history":[{"count":1,"href":"https:\/\/exceladvisor.org\/it\/wp-json\/wp\/v2\/pages\/1520\/revisions"}],"predecessor-version":[{"id":2962,"href":"https:\/\/exceladvisor.org\/it\/wp-json\/wp\/v2\/pages\/1520\/revisions\/2962"}],"wp:attachment":[{"href":"https:\/\/exceladvisor.org\/it\/wp-json\/wp\/v2\/media?parent=1520"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}