En cas d'error Reprèn Següent: Gestió d'errors a Excel VBA

  • Comparteix Això
Hugh West

A Microsoft Excel VBA, la gestió d'errors és una de les tasques crítiques. Si sou un programador, coneixeu la importància de la gestió d'errors per crear una aplicació perfecta. Qualsevol error en una declaració pot dificultar el vostre codi VBA de moltes maneres. Per tant, heu de tenir cura de gestionar aquests errors mentre executeu un codi VBA. Hi ha molts errors en temps d'execució que podeu enfrontar mentre feu servir el codi VBA a Excel. Per resoldre un d'ells, utilitzem la instrucció On Error Resume Next .

En aquest tutorial, aprendràs a utilitzar la instrucció On Error Resume Next a Excel VBA. Aquest tutorial serà adequat amb exemples adequats i il·lustracions adequades. Així doncs, quedeu-vos amb nosaltres.

Baixeu el quadern de pràctiques

VBA On Error Resume Next.xlsm

Gestió d'errors a Excel VBA

Mentre treballeu amb Microsoft Excel VBA, us trobareu amb molts errors en el vostre subprocediment. Quan VBA no pot executar una instrucció, genera un error en temps d'execució.

Excel s'encarrega automàticament d'aquests errors, de manera que quan apareix un error en temps d'execució, mostra un missatge d'error predeterminat com el següent:

Ara, podeu tractar-los de manera diferent amb algunes declaracions de VBA. En parlaré en seccions posteriors.

Llegir més: Com solucionar #REF! Error a Excel (6 solucions)

Declaracions d'error a VBA

Per gestionar els errors de temps d'execució, indiquem a Excel la instrucció d'error. Ell decideixd'Error de NOM a Excel (10 exemples)

💬 Coses a recordar

✎ En cas d'error Resume Next no soluciona els errors. Bàsicament ignora l'error i passa a la següent instrucció.

Excel atrapa i emmagatzema els errors en temps d'execució a l'objecte Err. Quan utilitzem la instrucció On Error Resume Next , esborra les propietats de l'objecte Err.

Podeu desactivar On Error Resume Next declaració al vostre codi VBA a Excel afegint la instrucció On Error GoTo 0 .

Conclusió

Per concloure, espero que aquest tutorial us hagi proporcionat una part útil. coneixements per utilitzar En cas d'error Resume Next a Excel VBA. Us recomano que apreneu i apliqueu totes aquestes instruccions al vostre conjunt de dades. Descarrega el quadern de pràctiques i prova-los tu mateix. A més, no dubteu a fer comentaris a la secció de comentaris. Els vostres valuosos comentaris ens mantenen motivats per crear tutorials com aquest.

No oblideu consultar el nostre lloc web Exceldemy.com per trobar diversos problemes i solucions relacionats amb Excel.

Segueix aprenent nous mètodes i segueix creixent!

quin tipus d'operacions volem fer immediatament. Bàsicament, desactivem aquests errors mitjançant aquest tipus de gestió d'errors.

Utilitzem tres tipus de sentències On Error (sintaxi) a Excel VBA.

  • En cas d'error Anar a línia
  • En cas d'error Reprendre Següent
  • En cas d'error Anar a 0

Quan trobeu un error, utilitzeu l'ordre En cas d'error. Perquè si no feu servir una declaració On Error , aquests errors en temps d'execució seran desastrosos. Mostrarà un missatge d'error i aturarà l'execució.

Quan fem servir una instrucció On Error , activem un gestor d'errors "habilitat". El gestor d'errors "actiu" és un gestor habilitat que inicia l'operació de gestió d'errors. Si es produeix un error mentre hi ha un gestor d'errors implicat, el gestor d'errors del mètode actual no pot suportar l'error. Després d'això, el control torna al procediment de trucada.

Si el procés de trucada té un controlador d'errors habilitat, s'activa per gestionar l'error. Si el gestor d'errors del vostre sistema de trucades està activat de manera corresponent, el control retorna mitjançant procediments de trucada anteriors fins que troba un gestor d'errors habilitat però inactiu. Si no pot trobar cap gestor d'errors habilitat inactiu, això significa que l'error és catastròfic en el moment en què es produeix.

Cada vegada que el gestor d'errors retorna l'autoritat a un procediment de crida, aquest procediment fa evolucionar el procediment existent. L'execució es reinicia alel procediment actual en el moment seleccionat per la instrucció Resume quan un gestor d'errors gestiona els errors en qualsevol procediment.

"En cas d'error Resume Next" a VBA

Ara, el

La instrucció 1>On Error Resume Next diu a VBA que ignori qualsevol línia de codi que tingui errors i que passi immediatament a la següent línia de codi. Després d'això, els codis d'Excel VBA saltaran la línia o línies que contenen errors i passaran a la següent seqüència de codi.

La sentència On Error Resume Next obliga la implementació a reprendre amb l'ordre perseguint a l'instant la línia de codis que va induir l'error en temps d'execució. Aquesta instrucció permet ometre una execució encara que hi hagi un error en temps d'execució. Si creieu que una determinada línia de codi pot produir un error, col·loqueu la rutina de gestió d'errors allà en lloc de posar-la en una altra ubicació del procediment. La instrucció On Error Resume Next queda inactiva quan el vostre codi crida a un altre procediment. Per tant, quan necessiteu una gestió d'errors coincident en aquesta rutina, heu d'executar una ordre On Error Resume Next a cada patró anomenat.

És raonable quan la línia de codi que voleu pot saltar no és necessari per al funcionament florent de la macro. Però recordeu que pot ser perjudicial si l'utilitzeu de manera incorrecta, ja que pot donar resultats no desitjats.

Recordeu:

L'activació Error Resume Següent declaració nocorregir els errors de temps d'execució. Bàsicament ignora els errors en què es reprendrà l'execució de VB a partir de la instrucció que ha generat l'error d'execució.

Feu una ullada al codi següent:

6658

Hem intentat dividir 5. amb 0 i 1. Executem el codi. Mostrarà la sortida següent:

Produeix un error en temps d'execució. No podem dividir un nombre per 0. Quan depureu el codi, veureu el següent:

Quan el programa VB troba un error, immediatament atura el procediment. No executa la línia següent.

Ara, implementem la instrucció On Error Resume Next abans de la instrucció d'error:

4282

Després d'executar el codi, vegeu el següent:

Com podeu veure, VBA ignora la línia que produeix l'error i passa immediatament a la següent línia de codi. D'aquesta manera, podeu utilitzar la instrucció En cas d'error Resume Next per gestionar l'error a Excel VBA.

Exemples de "On Error Resume Next" a VBA

En A les seccions següents, us proporcionaré dos exemples de la declaració On Error Resume Next que podeu implementar al vostre full de treball d'Excel mitjançant VBA. Us recomano que apreneu i apliqueu tot això al vostre quadern de treball. Sens dubte augmentarà el vostre coneixement d'Excel.

1. Declaració "En cas d'error Resume Next" per amagar fulls de treball

Ara, en aquest exemple, us mostraré un codi VBA queamagarà tots els fulls de treball del vostre llibre de treball actiu.

Feu una ullada a la captura de pantalla següent:

Aquí tenim quatre fulls de treball. Tots els amagarem amb el següent codi VBA:

8975

Quan executeu el codi següent, veureu el següent error d'execució:

Excel mostra aquest error perquè no podeu amagar tots els fulls d'un llibre de treball. Per tant, heu d'ignorar l'error. Per fer-ho, heu d'implementar la instrucció On Error Resume Next a la vostra línia de codi.

3977

Després de completar l'execució del codi VBA, veureu la sortida següent:

Al final, no veureu cap error després de l'execució. Per tant, la nostra declaració On Error Resume Next va funcionar molt bé al codi VBA.

Llegir més: Errors a Excel i el seu significat (15 errors diferents)

2. Funció BUSCAR V amb "En cas d'error Resume Next" a VBA

En aquest exemple, mostraré un exemple de la funció BUSCAR VBA a VBA . Ara, aquest codi VBA també inclou la declaració On Error Resume Next .

Feu una ullada a la captura de pantalla següent:

Aquí , podeu veure els noms d'algunes persones i les seves edats. A la taula adjacent, farem servir VLOOKUP per trobar el nom i l'edat de la persona.

Escriviu el codi següent per fer-ho:

2830

Ara, executeu la macro . Veureu l'error següent:

Ara, això és un temps d'execucióerror. Per què passa? Torneu a fer una ullada al conjunt de dades:

Com podeu veure, no hi ha dades per a "Aaron" i "Emma". És per això que només executa VLOOKUP per a la primera entrada. Després d'això, atura l'execució. Ara, si voleu ignorar l'error i procedir a trobar la resta de les edats, utilitzeu la instrucció On Error Resume Next .

2474

Després d'executar el codi VBA, veureu el següent sortida:

Com podeu veure, aplicant l'ordre En cas d'error Resume Next , vam ignorar l'error i vam trobar la resta de persones. edats. El nostre codi VBA no ha trobat cap dada d'Aaron i Emma. És per això que va ignorar aquests valors i va retornar la resta dels valors del full de treball d'Excel.

Llegir més: [Solucionat] Excel va trobar un problema amb una o més referències de fórmules en aquest full de treball

Desactiveu l'opció "En cas de reprendre l'error següent" amb Excel VBA

Ara, és possible que us trobeu en una situació en què vulgueu ignorar els errors d'un segment concret del codi VBA. Recordeu que si feu servir la instrucció On Error Resume Next en un codi VBA, es saltarà tots els errors després d'això. Ara, si voleu desactivar-ho i habilitar la gestió d'errors per a un altre segment, utilitzeu On Error GoTo 0 . Tornarà a activar la gestió d'errors.

Ús genèric:

Sub error_handling()

Per ignorar els errors

En cas d'error Reprèn Següent

// línies de codis

Peractiva la gestió d'errors

En cas d'error GoTo 0

//lines of codes

End sub

Fes una ullada a la codi VBA següent:

3940

Vam utilitzar el codi anteriorment per a la funció VLOOKUP . Aquí s'ha afegit un fragment addicional de codi per demostrar-vos-ho. El nostre codi ignorarà els errors mentre es realitza la VLOOKUP , però activarà la gestió d'errors després de la instrucció On Error GoTo 0 .

Llegir més: Excel VBA: desactiveu l'opció "En cas d'error, reprèn següent"

VBA "En cas d'error GoTo"

Anteriorment vaig parlar manejar els errors mitjançant el mètode On Error. Tot el nostre article tractava sobre En cas d'error, reprèn a continuació. Ara, també hi ha dos tipus de gestió d'errors que parlaré a les seccions següents.

1. VBA On Error GoTo 0

El On Error Goto 0 és la configuració integrada d'Excel si els vostres codis no tenen un controlador d'errors. Bàsicament implica que quan VBA troba un error amb En cas d'error GoTo 0 , aturarà l'execució del codi i mostrarà el seu quadre de missatge d'error tradicional.

En cas d'error GoTo 0 La declaració bàsicament desactiva la gestió d'errors en el procediment actual. No defineix la línia 0 com l'inici del codi de gestió d'errors, encara que el mètode incorpori una línia numerada 0.

Mireu el codi següent:

8707

Tenim ja us ha mostrat aquest codi. Aquest codi bàsicament amaga tots els fulls de treballal teu llibre de treball actual. Ara, de fet, tinc un fragment de codi addicional amb On Error GoTo 0 per mostrar l'error. Si executeu el codi, veureu el següent:

Mostra aquest error perquè no podem tenir fulls amb el mateix nom al llibre de treball actiu.

2. Línia VBA On Error GoTo

Ara, també podeu indicar a Excel que executi un altre segment de codi si troba algun error mitjançant la Línia On Error GoTo . Indica a Excel que executi alguna cosa després de trobar un error.

L'argument de línia és qualsevol etiqueta de línia o número de línia. Si el nostre codi provoca algun error en temps d'execució, es mourà a la línia, provocant que el controlador d'errors estigui actiu en l'execució. Recordeu que la vostra línia definida ha d'estar en el procediment exacte com la instrucció On Error; en cas contrari, provocarà un error de compilació.

Feu una ullada al codi següent:

1543

Veu veure el codi a l'exemple anterior. Quan vam utilitzar On Error GoTo 0 , va provocar un error. Però aquí ho hem substituït per la instrucció On Error GoTo line .

Ara, executeu el codi i veureu el següent:

Com podeu veure, no ens mostra el quadre de diàleg d'error estàndard. En canvi, mostra el quadre de missatge personalitzat que hem creat al segment error_handler . Quan l'Excel troba algun error, salta al segment error_handler i ens mostra el quadre de missatge.

També hem utilitzat un Exit Sub al procediment.Si no hi ha cap full anomenat " VLOOKUP ", el nostre codi VBA canviarà el nom del full actiu. Aleshores, hem d'acabar l'execució aquí perquè no necessitem continuar amb el controlador d'errors i mostrar el quadre de missatge.

VBA "En error" no funciona a Excel

De vegades, per molt que ho intenteu, el mètode On Error no funcionarà. Anteriorment, vam implementar el mètode En cas d'error per gestionar els errors. Però, de vegades, mostrarà errors fins i tot si utilitzeu En cas d'error, reprèn següent o En cas d'error GoTo 0 . Pot ser que hi hagi diversos motius al vostre codi que haureu de solucionar. No us ho mostraré.

La raó bàsica per la qual VBA ' En cas d'error' no funciona a Excel és activar l'opció "Desactiva tots els errors" a Excel.

Seguiu aquests passos per resoldre això:

📌 Passos

  • Primer, premeu Alt+F11 al teclat per obriu l'editor de VBA.
  • Ara, feu clic a Eines > Opcions.

  • Després, feu clic a la pestanya General del diàleg Opcions

  • Aquí podeu veure que " Break on All Errors " ja està marcat. Bàsicament us impedeix gestionar els errors.
  • Per canviar-lo, seleccioneu l'opció “ Break on Unhandled Errors ” i feu clic a D'acord .

Espero que solucioni el problema de VBA "En cas d'error" que no funciona a Excel.

Llegir més: Motius i Correccions

Hugh West és un entrenador i analista d'Excel molt experimentat amb més de 10 anys d'experiència en el sector. És llicenciat en Comptabilitat i Finances i Màster en Administració i Direcció d'Empreses. Hugh té una passió per l'ensenyament i ha desenvolupat un enfocament pedagògic únic que és fàcil de seguir i entendre. El seu coneixement expert d'Excel ha ajudat a milers d'estudiants i professionals de tot el món a millorar les seves habilitats i a destacar en les seves carreres. A través del seu bloc, Hugh comparteix els seus coneixements amb el món, oferint tutorials d'Excel gratuïts i formació en línia per ajudar les persones i les empreses a assolir tot el seu potencial.