L’app VBA di Excel si arresta spontaneamente con il messaggio “L’esecuzione del codice è stata interrotta”

Da quello che posso vedere sul web, questo è un reclamo abbastanza comune, ma le risposte sembrano essere più rare. Il problema è questo:

Abbiamo un numero di app VBA di Excel che funzionano perfettamente su un numero di macchine degli utenti. Tuttavia su una macchina si fermano su determinate linee di codice. È sempre la stessa linea, ma quelle linee sembrano non avere nulla in comune l’una con l’altra.

Se premi F5 (esecuzione) dopo l’interruzione, l’app continua, quindi è quasi come se fosse stato aggiunto un punto di interruzione. Abbiamo provato a selezionare “Rimuovi tutte le interruzioni” dal menu e persino aggiungere un’interruzione e rimuoverla di nuovo.

Abbiamo riscontrato questo problema con le app singole e l’abbiamo “inciso” tagliando il codice dai moduli, compilando e incollando nuovamente in ecc.

Il problema ora sembra riguardare Excel stesso piuttosto che un singolo .xls, quindi non siamo sicuri di come gestirlo.

Qualsiasi aiuto dovrebbe essere ricevuto con gratitudine 🙂

Grazie,

Philip Whittington

Ho trovato una seconda soluzione.

  1. Premere il pulsante “Debug” nel popup.
  2. Premi Ctrl + Pausa | Interrompi due volte.
  3. Premi il pulsante di riproduzione per continuare.
  4. Salva il file dopo il completamento.

Spero che questo aiuti qualcuno.

Questo problema deriva da una strana stranezza all’interno di Office / Windows.

Dopo aver sviluppato lo stesso pezzo di codice VBA e averlo eseguito centinaia di volte (letteralmente) negli ultimi due giorni, mi sono imbattuto in questo problema proprio ora. L’unica cosa che è stata diversa è che appena prima di sperimentare questo problema imbarazzante ho terminato accidentalmente l’esecuzione del codice VBA con un metodo non ortodosso.

Ho ripulito tutti i file temporanei, riavviato, ecc … Quando ho eseguito nuovamente il codice dopo tutto questo ho ancora avuto il problema – prima di entrare nel primo ciclo. Ha senso che “premi” il pulsante “Debug” nel popup, quindi premi due volte [Ctrl + Break] e dopo questo puoi continuare senza interruzioni “ perché qualcosa nella combinazione di Office / Windows non ha rilasciato l’esecuzione. È bloccato

L’azione Ctrl + Break ridondante risolve probabilmente l’esecuzione prolungata.

Una soluzione è qui :

La soluzione per questo problema è aggiungere la riga di codice “Application.EnableCancelKey = xlDisabled” nella prima riga della tua macro. Questo risolverà il problema e sarai in grado di eseguire correttamente la macro senza ottenere il messaggio di errore “Codice l’esecuzione è stata interrotta “.

Ma, dopo aver inserito questa riga di codice, non ero più in grado di usare Ctrl + Break. Quindi funziona, ma non molto.

Ho trovato colpire ctrl + break mentre la macro non era in esecuzione risolto il problema.

Vorrei provare le solite cose correttive: – Esegui VBA Code Cleaner di Rob Bovey sul tuo codice VBA – rimuovi tutti i componenti aggiuntivi sul PC degli utenti, in particolare i componenti aggiuntivi COM e .NET – Elimina tutti i file .EXD degli utenti (incompatibilità con MSoft Update) – Esegui Excel Rileva e ripara sul sistema degli utenti – controlla la dimensione del file .xlb dell’utente (dovrebbe essere 20-30K) – Riavvia quindi elimina tutti i file temporanei degli utenti

Grazie a tutti per il loro contributo. Questo problema è stato risolto scegliendo REPAIR nel Pannello di controllo. Immagino che questo ri-registri esplicitamente alcuni dei componenti COM nativi di Office e fa cose che REINSTALL non fa. Mi aspetto che quest’ultimo controlli solo una lista di controllo e talvolta accetti cosa c’è se è già installato, forse. Ho quindi avuto un problema separato con la registrazione della mia dll .NET per l’interoperabilità di COM sul computer dell’utente (nonostante questo funzionasse anche su altri computer), anche se penso che questo fosse il mio errore piuttosto che Microsoft. Grazie ancora, lo apprezzo davvero.

Ho trovato questo problema alcune volte durante lo sviluppo di una app VBA Excel complessa. A volte Excel ha iniziato a suddividere l’object VBA in modo piuttosto casuale. E l’unico rimedio era riavviare la macchina. Dopo il riavvio, Excel in genere ha iniziato ad agire normalmente.

Presto ho scoperto che la ansible soluzione a questo problema è di premere CTRL + Break una volta quando la macro NON è in esecuzione. Forse questo può aiutarti anche a te.

Ho avuto questo problema anche usando Excel 2007 con una cartella di lavoro foobar.xlsm (abilitata alla macro) che avrebbe ottenuto “l’esecuzione del codice è stata interrotta” semplicemente tentando di chiudere la cartella di lavoro sulla X rossa nell’angolo destro senza alcuna macro in esecuzione su tutti, o qualsiasi forma di “inizializzazione”, cartella di lavoro o macro del foglio di lavoro. Le opzioni che ho ricevuto erano “End” o “Continue”, Debug era sempre distriggersto. Ho fatto come un poster precedente suggerito Pannello di controllo-> Programmi e funzionalità-> fare clic destro “Microsoft Office Proffesional 2007” (nel mio caso) -> modifica-> riparazione.

Questo ha risolto il problema per me. Potrei aggiungere che questo è successo subito dopo l’aggiornamento di MS e ho anche trovato un addin in Excel chiamato “Team Foundation” di Microsoft che non ho installato volontariamente

La mia attuale reputazione non consente ancora di postare questo commento come commento. Stans soluzione per entrare nella modalità di debug, premere due volte Ctrl + Break, giocare, salvare ha risolto il mio problema, ma ho due colpi di scena inaspettati:

  1. Il mio progetto è protetto da password, quindi per entrare nella modalità debug dovevo prima entrare nella modalità sviluppatore, fare clic sulla struttura del progetto e inserire la password.

  2. Il mio progetto è un file modello (.xmtl). Ho aperto il file tramite doppio clic che lo apre come .xml con un “1” alla fine del nome del file precedente. Ho corretto l’errore come da istruzioni Stans e l’ho salvato come quello … 1.xml. Quando ho quindi riaperto il modello, questa volta come modello, e volevo applicare la stessa correzione di bug a quel file, il bug era sparito! Non ho modificato questo file e ancora nessun bug durante l’esecuzione della Macro. Questo significa per me che l’errore non si trova effettivamente nel file, ma in un’impostazione (nascosta) in Excel.

Vorrei aggiungere ulteriori dettagli alla risposta n. 2 di Stan per i seguenti motivi:

  • Ho affrontato questo problema io stesso più di una dozzina di volte e, a seconda delle condizioni del progetto, ho scelto la risposta magica n. 1 o n. 2 di stan. Quando ho continuato a guardarlo di nuovo, divento più curioso sul fatto che ciò accada al primo posto.

  • Vorrei aggiungere una risposta anche agli utenti Mac.

  • Esistono limitazioni con entrambe queste possibili risposte:

    • se il codice è protetto (e non conosci la password), la risposta n. 1 non aiuterà.
    • se il codice non è protetto, la risposta n. 2 non ti consente di eseguire il debug del codice.

  1. Può accadere a causa di uno dei seguenti motivi:

    • Sistema operativo che non assegna risorse di sistema al processo di Excel. ( Soluzione: è sufficiente avviare il sistema operativo – il tasso di successo è molto basso ma è noto che funziona molte volte)

    • P-code è il codice intermedio che è stato utilizzato in Visual Basic (prima di .NET) e quindi è ancora utilizzato in VBA. Ha consentito un eseguibile più compatto a spese di un’esecuzione più lenta. Perché sto parlando di p-code? Perché a volte viene corrotto tra più esecuzioni e file di grandi dimensioni o solo a causa dell’installazione del software (Excel) è andato corrotto da qualche parte. Quando p-code si corrompe. l’esecuzione del codice continua a essere interrotta. Soluzione : In questi casi, si presume che il codice abbia iniziato a corrompere e in futuro le probabilità di corruzione della cartella di lavoro di Excel vengano anch’esse corrotte dando messaggi come “file excel danneggiato e non può essere aperto”. Quindi, come soluzione rapida, puoi contare sulla risposta n. 1 o sulla risposta n. 2 secondo le tue esigenze. Tuttavia, non ignorare mai i segni di corruzione. È meglio copiare i moduli del codice nel blocco note, eliminare i moduli, salvare e chiudere la cartella di lavoro, chiudere l’Excel. A questo punto, riaprire la cartella di lavoro e iniziare a creare nuovi moduli con il codice copiato in precedenza nel blocco note.

  2. Utenti Mac, prova una qualsiasi delle opzioni qui sotto e funzionerà sicuramente a seconda dell’architettura del tuo sistema, ad esempio OS e Office

    • Ctrl + Pausa
    • Ctrl + ScrLk
    • Esc + Esc (premi due volte consecutivamente)

Verrai messo in modalità interruzione utilizzando le combinazioni di tasti sopra indicate, in quanto la macro sospende l’esecuzione immediatamente terminando l’operazione corrente. Questa è la sostituzione del Passaggio 2.

  1. Soluzione: per superare la limitazione dell’uso della risposta n. 1 e della risposta n. 2 , utilizzo xlErrorHandler insieme xlErrorHandler Resume nel gestore degli errori se il codice di errore è 18. Quindi, l’interrupt viene inviato alla procedura in esecuzione come errore, intercettabile da un gestore di errori configurato con un’istruzione On Error GoTo. Il codice di errore intercettabile è 18. La procedura corrente viene interrotta e l’utente può eseguire il debug o terminare la procedura. Microsoft presta attenzione a non utilizzarlo se il gestore degli errori ha l’istruzione di riprendere, altrimenti il ​​gestore degli errori ritorna sempre alla stessa dichiarazione. Questo è esattamente ciò che vogliamo in indesiderate interruzioni senza senso nell’esecuzione del codice.

Il problema ora sembra correlato a Excel stesso

Reinstallare e rattoppare 🙂 Altro che è difficile dirlo.