VBA en error GoTo | Tipus d’instruccions d’error activades a VBA

Excel VBA en error GoTo

Els errors formen part integrant de qualsevol llenguatge de codificació i les macros VBA no són diferents d’aquest. Al meu parer, trobar per què es produeix l'error és el 90% de la feina feta i el 10% es basa en com solucionar aquest error. En tots els llenguatges de codificació, els codificadors utilitzen la seva pròpia manera de tractar els errors en la seva codificació, de manera que també ho fem nosaltres en la codificació VBA. Sovint cal ignorar l’error o sovint volem anar a coses concretes quan es produeix l’error. "On Error" és la declaració que hem d'utilitzar a VBA per gestionar els errors.

Aquesta afirmació té tres tipus d’enunciats i a continuació es mostra la llista.

  1. En l'error Vés al 0
  2. On Error Goto [etiqueta]
  3. Si hi ha un error, repreneu el següent

En aquest article, veurem com s’utilitzen aquestes tres afirmacions a la codificació VBA per manejar qualsevol tipus d’error.

Com s'utilitzen les declaracions d'error de VBA?

Podeu descarregar aquesta plantilla de declaració VBA On Error GoTo aquí - Plantilla de declaració VBA On Error GoTo

# 1: en reprendre l'error següent

Com diu la pròpia afirmació, "En reprendre l'error següent" significa que quan es produeix l'error al codi "repreneu" la següent línia del codi ignorant el codi de la línia d'error. Ara mireu el codi següent.

Al codi següent, he esmentat els noms del full de càlcul i he demanat que introduïu el valor a la primera cel·la com a "Prova d'errors".

Codi:

 Sub On_Error_Resume_Next () Fulls de treball ("Ws 1"). Seleccioneu l'interval ("A1"). Valor = "Prova de l'error" Fulls de treball ("Ws 2"). Seleccioneu l'interval ("A1"). Valor = "Prova de l'error" Fulls de treball ( "Ws 3"). Seleccioneu l'interval ("A1"). Value = "Proves d'errors" Fulls de treball ("Ws 4"). Seleccioneu l'interval ("A1"). Valor = "Proves d'errors" End Sub 

Ara tinc a continuació fulls de treball al meu llibre.

  • Executaré el codi i veuré què passa.

  • Hem rebut l'error "Subscript Out of Range", feu clic a "Depura" per veure en quina línia hem obtingut l'error.

  • Per tant, a la línia "Fulls de treball (" Ws 3 "). Seleccioneu" hem obtingut un error, ja que al nostre llibre no hi ha cap full de treball anomenat "Ws 3", de manera que s'ha produït un error.

En aquests casos, potser voldríem ignorar l’error i reprendre l’execució del codi a la següent línia, aquí és on apareix el nostre gestor d’errors “On Error Resume Next”.

  • Tot el que hem de fer és afegir la línia "On Error Resume Next" a l'inici de la macro.

Ara executeu aquest codi i no mostrarà cap missatge d'error perquè cada vegada que el codi es produeixi un error, ignorarà l'error i es reprendrà a la següent línia de codi.

# 2: error GoTo 0

No es tracta d'un gestor d'errors, sinó d'un habilitador de missatges d'error després de desactivar-lo mitjançant la instrucció "On Error Resume Next".

Un que utilitzeu la instrucció "Reprèn següent" Les macros VBA comencen a ignorar qualsevol tipus d'error que es produeixi i continua amb la següent línia de codis. Però no volem que això passi tot el temps, ja que alguns errors que hem d’ignorar intencionadament i altres necessitem una notificació.

Si algun conjunt de codi específic genera un error en aquest bloc de codi només hem d’ignorar l’error d’altres parts del codi, no volem ignorar-lo.

  • Mireu la imatge següent per a l’ús de la declaració “On Error GoTo 0”.

Per tant, ara s'ignoraran els errors fins que el codi detecti l'error de notificació de l'habilitador "On Error GoTo 0". Un cop aquesta línia de codi torna a executar les macros a la normalitat i comença a llançar missatges d'error com de costum.

# 3: en l'etiqueta GoTo d'error

Hem vist com ignorar l’error i com tornar a activar la notificació d’error. Ara amb aquest mètode podem anar a una línia de codi específica.

En aquest mètode, "Etiqueta" significa que podem donar qualsevol nom a aquesta etiqueta i que s'ha d'indicar la mateixa etiqueta a la línia de codi requerida.

Per exemple, mireu el mateix codi de l'exemple anterior.

Ara executem el codi línia per línia prement la tecla de funció F8.

Ara la macro llegirà la declaració del controlador d'errors; premeu la tecla F8 per executar el primer codi del full de càlcul.

Ara la macro està a punt d'executar el tercer codi del full de treball que no hi ha al llibre, premeu la tecla F8 i veure què passa.

Com que la macro ha detectat un error a la línia de codi següent, ha passat a l'etiqueta del gestor d'errors "Missatge d'error" que es va descriure a través de la declaració "On Error GoTo [Label]".

Ara el quadre de missatge mostrarà el missatge com a "Error ocorregut i sortida de la macro".

Coses que cal recordar

  • VBA On Error GoTo 0 tornarà a habilitar la notificació d'errors, així que no oblideu afegir-lo després de proporcionar un gestor d'errors.
  • Cal estar absolutament segur de quina part del codi voleu ignorar l’error, de manera que inclogueu el gestor d’errors només per a aquest bloc de codi.