VBA On Error Gooto 0 | Com s'utilitza l'error GoTo 0 a Excel VBA?

Excel VBA en error Anar a 0

VBA en error GoTo 0 és una instrucció del controlador d'errors que s'utilitza per desactivar el controlador d'errors habilitat al procediment. Es coneix com a "Desactivador del controlador d'errors".

El tractament d’errors en qualsevol dels llenguatges de programació és una classe magistral que tots els programadors han d’entendre. El llenguatge de programació VBA també, i també tenim tècniques de tractament d’errors en aquest llenguatge de programació. “On Error Resume Next” activa el controlador d’errors i “On Error GoTo 0” desactivarà el controlador d’errors habilitat.

Tant "On Error Resume Next" com "On Error GoTo 0" són parells que s'han d'utilitzar junt per garantir l'eficiència del codi. Per gestionar l'error, hem de començar amb la declaració "On Error Resume Next" i, per acabar aquest gestor d'errors, hem d'utilitzar la declaració "On Error GoTo 0".

Qualsevol codi de línia escrit entre aquestes declaracions ignorarà qualsevol tipus d'error que es produís en el procediment.

Com s'utilitza la declaració On Error GoTo 0?

Podeu descarregar aquesta plantilla Excel VBA On Error Goto 0 aquí - Plantilla Excel VBA On Error Goto 0

Per obtenir un exemple, mireu el codi següent.

Codi:

 Sub On_ErrorExample1 () Fulls de treball ("Full1"). Seleccioneu l'interval ("A1"). Valor = 100 fulls de treball ("Full2"). Seleccioneu l'interval ("A1"). Valor = 100 Finalització final 

El que fa el codi anterior és que primer seleccionarà el full de treball anomenat "Full1" i a la cel·la A1 inserirà el valor 100.

Codi:

Fulls de treball ("Full1"). Seleccioneu l'interval ("A1"). Valor = 100

A continuació, seleccionarà el full de treball anomenat "Full2" i inserirà el mateix valor.

Codi:

Fulls de treball ("Full2"). Seleccioneu l'interval ("A1"). Valor = 100

Ara tinc a continuació fulls al meu llibre.

No hi ha fulls anomenats "Full1" i "Sheet2", quan executem el codi, es produirà un error com el següent.

Com que no hi ha cap full anomenat "Full1", s'ha produït un error "Subscript fora del rang". Per gestionar aquest error, afegiré una declaració de controlador d'errors "On Error Resume Next" a la part superior de la macro.

Codi:

 Sub On_ErrorExample1 () En cas d'error Reprendre els fulls de treball següents ("Full1"). Seleccioneu l'interval ("A1"). Valor = 100 fulls de treball ("Full2"). Seleccioneu l'interval ("A1"). Valor = 100 Finalització sub 

Ara executeu el codi i veureu què passa.

No mostrarà cap missatge d'error perquè la declaració del gestor d'errors Si hi ha un error, repreneu el següent està habilitat.

Imagineu l’escenari en què hem d’ignorar l’error en cas de no disposar del full de treball “Full1”, però cal notificar-ho si no hi ha cap full de treball anomenat “Full2”.

Des que hem afegit Si hi ha un error, repreneu el següent a la part superior, ha començat a gestionar l'error, però al mateix temps, hem d'especificar quantes línies hem d'ignorar aquest error.

En aquest exemple, només hem d’ignorar l’error del primer full de càlcul, però a partir del segon full hem de produir-se l’error si no hi ha cap full de treball “Full2”. Així, després del primer full de càlcul, s’afegeix la línia de desactivació de l’error On Error GoTo 0.

Codi:

 Sub On_ErrorExample1 () En cas d'error Reprèn els fulls de treball següents ("Full1"). Seleccioneu l'interval ("A1"). Valor = 100 En cas d'error GoTo 0 fulls de treball ("Full2"). Seleccioneu l'interval ("A1"). Valor = 100 Finalització sub 

Ara executeu el codi línia per línia per veure l’impacte prement la tecla F8.

Ara, si premeu la tecla F8 una vegada que l'execució del codi saltarà a la següent línia i s'executarà la tasca de línia activa. Ara la línia activa (línia de color groc) és el gestor d'errors "On Error Resume Next" i el gestor d'errors estarà habilitat.

Ara es produeix qualsevol error, s'ignorarà fins que s'executi el gestor d'errors que inhabilita el codi "En error GoTo 0”Declaració.

En l’intent anterior, hem trobat errors, però premeu la tecla F8 una vegada més i veieu la màgia.

Sense donar cap tipus d'error, ha reprès l'execució del codi tot i que no hi ha cap full de treball "Full2" per seleccionar. Ara torneu a prémer F8.

Com que no hi havia Sheet1, no pot inserir el valor a la cel·la A1 com a 500, però el que fa és inserir el valor de 500 a la cel·la A1 del full de treball que estigui actiu. El meu full actiu quan executava el codi era "Full3", de manera que el valor de 100 s'insereix a la cel·la A1.

Ara la línia de codi activa és "En error GoTo 0", Prement la tecla F8 s'executarà aquesta tasca de línia.

Com que s'executa "On Error GoTo 0", ha aturat el procés de gestió d'errors i, de nou, comença a mostrar errors si n'hi ha. Premeu la tecla F8 i veureu l'error.

En el cas anterior sense On Error GoTo 0, també ha ignorat aquest error, però com que hem afegit un desactivador del controlador d'errors, ha començat a mostrar l'error de nou.

Coses que cal recordar aquí

  • S’ha d’utilitzar tant l’error Resume Next com l’error GoTo 0 com a “Habilitador del controlador d'errors"I"Desactivador del gestor d'errors”.
  • Qualsevol línia de codis entre aquestes dues sentències té un error que s'ignorarà.
  • Si hi ha instrucció On Error GoTo 0, després de la sortida del gestor d'errors del subprocediment es desactivarà.