En caso de erro Reanuda a seguinte: Manexo de erros en Excel VBA

  • Comparte Isto
Hugh West

En Microsoft Excel VBA, a xestión de erros é unha das tarefas críticas. Se es un programador, sabes a importancia do tratamento de erros para crear unha aplicación perfecta. Calquera erro nunha declaración pode dificultar o seu código VBA de moitas maneiras. Polo tanto, debes ter coidado ao manexar eses erros ao executar un código VBA. Hai moitos erros de execución que podes enfrontar ao usar o código VBA en Excel. Para resolver un deles, utilizamos a instrución On Error Resume Next .

Neste titorial, aprenderá a utilizar a instrución On Error Resume Next en Excel VBA. Este titorial estará claro con exemplos axeitados e ilustracións adecuadas. Entón, quédese connosco.

Descargar Practice Workbook

VBA On Error Resume Next.xlsm

Tratamento de erros en Excel VBA

Mentres traballa con Microsoft Excel VBA, enfrontarase a moitos erros no seu subprocedemento. Cando VBA non pode executar unha instrución, xera un erro de execución.

Excel trata automaticamente estes erros, polo que cando aparece un erro de execución, mostra unha mensaxe de erro predeterminada como a seguinte:

Agora, pode tratar con isto de varias maneiras con algunhas instrucións VBA. Discutareinos en seccións posteriores.

Ler máis: Como corrixir #REF! Erro en Excel (6 solucións)

Declaracións de erro en VBA

Para xestionar os erros de tempo de execución, instruímoslle a Excel coa instrución de erro. El decidede NAME Error en Excel (10 exemplos)

💬 Cousas para lembrar

✎ En caso de erro Continue Next non corrixe os erros. Basicamente ignora o erro e pasa á seguinte instrución.

Excel captura e almacena os erros de execución no obxecto Err. Cando usamos a instrución On Error Resume Next , borra as propiedades do obxecto Err.

Podes desactivar On Error Continue Next declaración no seu código VBA en Excel engadindo a instrución On Error GoTo 0 .

Conclusión

Para concluír, espero que este tutorial che proporcionou unha peza útil. coñecementos para usar o En caso de erro Resume Next en Excel VBA. Recomendo que aprendas e apliques todas estas instrucións ao teu conxunto de datos. Descarga o caderno de prácticas e proba estes ti mesmo. Ademais, non dubide en enviar comentarios na sección de comentarios. Os teus valiosos comentarios mantéñennos motivados para crear titoriais coma este.

Non esquezas consultar o noso sitio web Exceldemy.com para atopar varios problemas e solucións relacionados con Excel.

Segue aprendendo novos métodos e segue crecendo!

que tipo de operacións queremos facer a continuación inmediatamente. Basicamente, desactivamos estes erros mediante estes tipos de tratamento de erros.

Utilizamos tres tipos de instrucións de erro (sintaxe) en Excel VBA.

  • En caso de erro Ir a liña
  • En caso de erro Continuar Seguinte
  • En caso de erro Ir a 0

Cando atope un erro, use o comando En caso de erro. Porque se non utiliza unha declaración On Error , eses erros en tempo de execución serán desastrosos. Mostrará un aviso de erro e deterase a execución.

Cando usamos unha instrución On Error , activamos un controlador de erros "activado". O controlador de erros "activo" é un controlador habilitado que inicia a operación de tratamento de erros. Se se produce un erro mentres está implicado un controlador de erros, o manejador de erros do método actual non pode soportar o erro. Despois diso, o control volve ao procedemento de chamada.

Se o proceso de chamada ten un controlador de erros activado, activarase para xestionar o erro. Se o manejador de erros do teu sistema de chamada está activado de forma correspondente, o control devolve a través de procedementos de chamada anteriores ata que atopa un controlador de erros activado pero inactivo. Se non pode atopar ningún manejador de erros inactivo, isto significa que o erro é catastrófico no seu momento.

Cada vez que o manejador de erros devolve autoridade a un procedemento de chamada, ese procedemento fai evolucionar o procedemento existente. Reinicia a execución nopresente o procedemento no momento seleccionado pola instrución Resume cando un manejador de erros xestiona os erros en calquera procedemento.

'On Error Continue Next' en VBA

Agora, o

A instrucción 1>On Error Continue Next di a VBA que ignore todas as liñas de código que teñan erros e proceda inmediatamente á seguinte liña de código. Despois diso, os códigos de Excel VBA saltarán a liña ou liñas que conteñen erros neles e pasarán á seguinte secuencia de código.

A instrución On Error Resume Next obriga a implementación a retoma co comando perseguindo ao instante a liña de códigos que provocou o erro de execución. Esta instrución permite omitir unha execución aínda que se produza un erro de execución. Se pensas que unha determinada liña de código pode producir un erro, coloque alí a rutina de tratamento de erros en lugar de colocala noutro lugar dentro do procedemento. A instrución On Error Resume Next queda inactiva cando o teu código chama a outro procedemento. Entón, cando necesites un tratamento de erros coincidente nesa rutina, tes que executar un comando On Error Continue Next en cada patrón nomeado.

É razoable cando a liña de código que queres pode saltar non é necesario para o funcionamento florecente da macro. Pero lembre, pode ser prexudicial se o usa incorrectamente xa que pode proporcionar resultados non desexados.

Lembra:

O On Erro Resume A seguinte declaración noncorrixir os erros de execución. Ignora basicamente os erros nos que se reanudará a execución de VB a partir da instrución que xerou o erro de execución.

Bótalle un ollo ao seguinte código:

5628

Tentamos dividir 5 con 0 e 1. Imos executar o código. Mostrará a seguinte saída:

Produce un erro de execución. Non podemos dividir un número por 0. Cando depure o código, verá o seguinte:

Cando o programa VB atopa un erro, detén inmediatamente o procedemento. Non executa a seguinte liña.

Agora, imos implementar a instrución On Error Resume Next antes da instrución de erro:

9709

Despois de executar o código, consulta o seguinte:

Como podes ver, VBA ignora a liña que produce o erro e pasa inmediatamente á seguinte liña de código. Deste xeito, pode usar a instrución On Error Resume Next para xestionar o erro en Excel VBA.

Exemplos de "On Error Continue Next" en VBA

En nas seguintes seccións, vouche ofrecer dous exemplos da instrución On Error Resume Next que podes implementar na túa folla de cálculo de Excel usando VBA. Recomendo que aprendas e apliques todo isto ao teu caderno de traballo. Definitivamente aumentará os teus coñecementos de Excel.

1. Declaración "On Error Continue Next" para ocultar follas de traballo

Agora, neste exemplo, mostrareiche un código VBA queocultará todas as follas de traballo do seu caderno de traballo activo.

Bótalle un ollo á seguinte captura de pantalla:

Aquí temos catro follas de traballo. Ocultarémolos todos usando o seguinte código VBA:

2502

Cando executes o seguinte código, verás o seguinte erro de execución:

Excel mostra este erro porque non pode ocultar todas as follas dun libro de traballo. Polo tanto, ten que ignorar o erro. Para iso, ten que implementar a instrución On Error Resume Next na súa liña de código.

1152

Despois de completar a execución do código VBA, verá a seguinte saída:

Ao final, non verá ningún erro despois da execución. Entón, a nosa declaración On Error Resume Next funcionou moi ben no código VBA.

Ler máis: Erros en Excel e o seu significado (15 erros diferentes)

2. Función BUSCAR V con 'On Error Continue Next' en VBA

Neste exemplo, mostrarei un exemplo da función BUSCAR VBA en VBA . Agora, este código VBA tamén inclúe a instrución On Error Resume Next .

Bótalle un ollo á seguinte captura de pantalla:

Aquí , podes ver os nomes dalgunhas persoas e as súas idades. Na táboa adxacente, utilizaremos a BUSCAR V para atopar o nome e a idade da persoa.

Escriba o seguinte código para facelo:

7140

Agora, executa a macro . Verá o seguinte erro:

Agora, este é un tempo de execuciónerro. Por que ocorre? Bótalle un ollo ao conxunto de datos de novo:

Como podes ver, non hai datos para "Aaron" e "Emma". É por iso que só executa a VLOOKUP para a primeira entrada. Despois diso, detén a execución. Agora, se queres ignorar o erro e proceder a buscar o resto das idades, utiliza a instrución On Error Resume Next .

4416

Despois de executar o código VBA, verás o seguinte saída:

Como podes ver, ao aplicar o comando On Error Continue Next , ignoramos o erro e atopamos o resto das persoas. idades. O noso código VBA non atopou ningún dato de Aaron e Emma. É por iso que ignorou eses valores e devolveu o resto dos valores da folla de cálculo de Excel.

Ler máis: [Correxido] Excel atopou un problema cunha ou máis referencias de fórmulas nesta folla de traballo

Desactivar "On erro retomar a continuación" con Excel VBA

Agora, pode estar nunha situación na que quere ignorar os erros dun segmento particular do código VBA. Lembre, se usa a instrución On Error Resume Next nun código VBA, omitirá todos os erros despois diso. Agora, se queres desactivalo e activar o tratamento de erros para outro segmento, utiliza On Error GoTo 0 . Activará de novo o tratamento de erros.

Uso xenérico:

Sub error_handling()

Para ignorar erros

En caso de erro Continuar seguinte

// liñas de códigos

Paraactivar o tratamento de erros

En caso de erro Ir a 0

//liñas de códigos

Finalizar sub

Bótalle un ollo ao seguinte código VBA:

3520

Utilizamos o código anteriormente para a función VLOOKUP . Aquí engadiu un anaco extra de código para demostralo. O noso código ignorará os erros ao realizar a LOOKUP , pero activará o tratamento de erros despois da instrución On Error GoTo 0 .

Ler máis: Excel VBA: desactivar a opción "Continuar en caso de erro seguinte"

VBA "En caso de erro Ir a"

Anteriormente comentei manexar os erros mediante o método On Error. Todo o noso artigo trataba sobre En caso de erro, retomar a continuación. Agora, tamén hai dous tipos de tratamento de erros que comentarei nas seguintes seccións.

1. VBA On Error GoTo 0

O On Error Goto 0 é a configuración integrada de Excel se os teus códigos non teñen un controlador de erros neles. Basicamente implica que cando VBA atopa un erro con En caso de erro GoTo 0 , deixará de executar o código e mostrará a súa caixa de mensaxe de erro tradicional.

En caso de erro GoTo 0 instrucción basicamente desactiva o tratamento de erros no presente procedemento. Non define a liña 0 como o inicio do código de tratamento de erros, aínda que o método incorpore unha liña numerada 0.

Bótalle un ollo ao seguinte código:

1792

Temos xa che mostrou este código. Este código oculta basicamente todas as follas de traballono teu caderno de traballo actual. Agora, realmente teño un anaco de código adicional con On Error GoTo 0 para mostrar o erro. Se executas o código, verás o seguinte:

Mostra este erro porque non podemos ter follas co mesmo nome no libro activo.

2. VBA Liña Ir a un erro

Agora, tamén pode indicarlle a Excel que execute outro segmento de código se atopa algún erro mediante a Liña Ir ao erro . Indícalle a Excel que execute algo despois de atopar un erro.

O argumento da liña é calquera etiqueta de liña ou número de liña. Se o noso código provoca algún erro de execución, moverase á liña, facendo que o manejador de erros estea activo na execución. Lembre, a súa liña definida debe estar no procedemento exacto como a instrución On Error; en caso contrario, provocará un erro de compilación.

Bótalle un ollo ao seguinte código:

5485

Viches o código no exemplo anterior. Cando usamos On Error GoTo 0 , provocou un erro. Pero, aquí substituímos iso pola instrución On Error GoTo line .

Agora, executa o código e verás o seguinte:

Como podes ver, non nos mostra o cadro de diálogo de erro estándar. Pola contra, mostra a caixa de mensaxe personalizada que creamos no segmento error_handler . Cando Excel atopa algún erro, salta ao segmento error_handler e móstranos a caixa de mensaxe.

Tamén utilizamos un Saír Sub no procedemento.Se non hai ningunha folla chamada " VLOOKUP ", o noso código VBA renomeará a folla activa. Entón, temos que rematar aquí a execución porque non necesitamos continuar co manejador de erros e mostrar a caixa de mensaxes.

VBA 'On Erro' non funciona en Excel

Ás veces, por moito que o intentes, o método por erro non funcionará. Anteriormente, implementamos o método En caso de erro para xestionar os erros. Pero, ás veces, mostrará erros aínda que use En caso de reanudar o seguinte ou En caso de erro GoTo 0 . Pode haber varios motivos no teu código que teñas que corrixir. Non che vou mostrar.

O motivo básico para que VBA " En caso de erro" non funcione en Excel é activar a opción "Desactivar todos os erros" en Excel.

Sigue estes pasos para resolver isto:

📌 Pasos

  • Primeiro, preme Alt+F11 no teu teclado para abra o editor VBA.
  • Agora, faga clic en Ferramentas > Opcións.

  • Despois diso, faga clic na pestana Xerais no diálogo Opcións caixa.

  • Aquí podes ver que xa está marcada " Break on All Errors ". Basicamente impídeche xestionar os erros.
  • Para cambialo, selecciona a opción " Desactivar erros non controlados " e fai clic en Aceptar .

Espero que solucione o teu problema de que VBA "Error" non funcione en Excel.

Ler máis: Razóns e Correccións

Hugh West é un adestrador e analista de Excel altamente experimentado con máis de 10 anos de experiencia na industria. É Licenciado en Contabilidade e Finanzas e Máster en Administración de Empresas. Hugh ten unha paixón polo ensino e desenvolveu un enfoque docente único que é fácil de seguir e comprender. O seu coñecemento experto de Excel axudou a miles de estudantes e profesionais de todo o mundo a mellorar as súas habilidades e a destacar nas súas carreiras. A través do seu blog, Hugh comparte os seus coñecementos co mundo, ofrecendo titoriais de Excel gratuítos e formación en liña para axudar ás persoas e ás empresas a alcanzar todo o seu potencial.