Declaracions d'error de VBA | 3 maneres principals de tractar els errors

Declaració d'error Excel VBA On

Error VBA activat declaració és un tipus de mecanisme de maneig d'errors que s'utilitza per guiar el codi per fer el que passa si es troba amb qualsevol tipus d'error, generalment quan un codi troba un error, l'execució s'atura, però amb aquesta instrucció al codi, l'execució del codi continua com té un conjunt d’instruccions a fer quan es troba amb un error.

Preveure l’error al codi us convertirà en un professional en la codificació VBA. No podeu fer que el codi sigui 100% eficient, encara que tingueu confiança en el codi d'una manera o d'una altra, i pot provocar un error.

És gairebé una tasca impossible identificar i gestionar tot tipus d'errors, però tenim diferents maneres de gestionar un error a VBA. Mentre escriviu el codi, és possible que no anticipeu el tipus de codi d'error que es pot produir, però si es produeix algun error, passareu més temps en la depuració que escrivint el codi en si.

Què és un error?

Un error no és res, però no es pot executar una línia de codi a causa de la funcionalitat o el codi incorrecte. Per tant, intenteu preveure l’error i gestionar-lo.

Per exemple, si intenteu suprimir el full que no hi és, evidentment no podem executar aquesta línia de codi.

Un error és de tres tipus; es compila un error a causa de variables no declarades. El segon és un error d’entrada de dades a causa d’entrades incorrectes del codificador i el tercer és un error de temps d’execució degut a que VBA no pot reconèixer la línia de codi. Per intentar accedir o treballar en fulls de treball o llibre de treball que no hi són.

Però tenim una declaració a VBA per gestionar tot aquest tipus d'errors, és a dir, la declaració "On Error".

Tipus d’instruccions d’error activades

El punt clau per gestionar els errors a VBA és la declaració "On Error". Per exemple, en cas d'error, "repreneu la línia següent", "aneu o aneu a una altra línia", etc ...

La declaració On Error té tres tipus d’instruccions.

  1. GoTo 0significa que sempre que es produeix un error de temps d'execució excel o VBA ha de mostrar el quadre de missatge d'error que indica el tipus d'error que s'ha trobat. Tan bon punt VBA executa el codi, desactiva tots els gestors d'errors del bloc en concret del codi.
  2. Reprèn el següent significa que sempre que es produeix l'error, aquesta sentència indica a Excel que ignori aquest error i que passi a (reprèn la següent) la següent línia de codi sense mostrar cap missatge d'error. No vol dir que solucioni l'error, sinó que només ignora l'error.
  3. GoTo [etiqueta] significa que cada vegada que VBA troba un error, aneu a l'etiqueta assignada. Això fa que el codi salti a la línia específica proporcionada pel codificador.

3 maneres principals de tractar els errors a VBA

Podeu descarregar aquesta plantilla VBA On Error aquí - Plantilla VBA On Error

# 1: en reprendre l'error següent

Suposem que esteu dividint el valor de 20 per 0 i que heu declarat la variable per assignar-li el resultat de la divisió.

Codi:

 Sub OnError_Example1 () Dim i as Integer i = 20/0 End Sub 

Si executeu aquest codi, llançarà l'error següent.

Per tant, no podeu dividir cap número per valor zero. El número d'error del temps d'execució és 11, és a dir, divisió per zero

Ara afegiré una línia més al codi.

Codi:

 Sub OnError_Example1 () Dim i Integer, j As Integer i = 20/0 j = 20/2 End Sub 

Ara afegiré la declaració On error reprendre el següent a la part superior.

Codi:

 Sub OnError_Example1 () Dim i as Integer, j As Integer On Error Resume Next i = 20/0 j = 20/2 End Sub 

Ara, si executo aquest codi, no em donarà cap missatge d'error, sinó que executarà la següent línia de codi, és a dir, j = 20/2.

# 2: en l'etiqueta GoTo d'error

He declarat tres variables.

Codi:

 Sub OnError_Example1 () Dim i Integer, j As Integer, k As Integer 

Per a totes aquestes tres variables assignaré el càlcul de la divisió.

Codi:

 Sub OnError_Example1 () Dim i com a enter, j Com a enter, k Com a enter i = 20/0 j = 20/2 k = 10/5

El resultat de tots aquests tres càlculs es mostrarà al quadre de missatges.

Codi:

 Sub OnError_Example1 () Dim i As Integer, j As Integer, k As Integer i = 20/0 j = 20/2 k = 10/5 MsgBox "El valor d'i és" & i & vbNewLine & "El valor de j és "& j & _ vbNewLine &" El valor de k és "& k & vbNewLine End Sub 

Ara intentaré executar aquest codi ja que el càlcul de "I" no és correcte, obtindrem l'error de temps d'execució 11.

Ara afegiré la declaració "On Error Resume Next".

Codi:

 Sub OnError_Example1 () Dim i As Integer, j As Integer, k As Integer On Error Resume Next i = 20/0 j = 20/2 k = 10/5 MsgBox "El valor d'i és" & i & vbNewLine & "The el valor de j és "& j & _ vbNewLine &" El valor de k és "& k & vbNewLine End Sub 

Si executo això, saltarà el càlcul "I" i executarà els dos càlculs restants i el resultat serà el següent.

Ara, en lloc de "Continuar amb l'error següent", afegiré "On GoTo KCalculation Error"

Codi:

 Sub OnError_Example1 () Dim i As Integer, j As Integer, k As Integer On Error GoTo KCàlcul: i = 20/0 j = 20/2 KCàlcul: k = 10/5 MsgBox "El valor d'i és" & i & vbNewLine & "El valor de j és" & j & _ vbNewLine & "El valor de k és" & k & vbNewLine End Sub 

Nota: Aquí "KCalculation" és el nom de l'etiqueta que he donat, podeu donar el vostre propi nom d'etiqueta sense cap espai.

Ara, si executo aquesta línia de codi, no passarà a la següent línia, sinó al nom de l'etiqueta que he introduït, és a dir, "KCalcualtion". Aquí ignorarà l'error donat per "I" i tampoc executarà el càlcul "j", però de seguida saltarà a "KCalcualtion".

# 3 - Imprimir el número d'error a VBA

Al final del codi, també podem imprimir el número d'error en un quadre de missatge separat. La següent línia de codi farà aquesta feina.

Codi:

Err.Number

Ara executaré aquest codi: el primer quadre de missatges mostrarà els resultats del càlcul.

Feu clic a D'acord, es mostrarà un quadre de missatge més per mostrar el número d'error.

Anem 11 com a resultat, és a dir, Divisió per zero.

També podem obtenir la descripció de l’error en lloc del número. Només hem de canviar el codi, a continuació es mostra el codi.

Codi:

Err. Descripció

Es mostrarà una descripció com aquesta.

Coses que cal recordar

  • Després d’introduir “On Error Resume Next” al final del codi, no oblideu afegir la declaració “On Error GoTo 0”
  • El nom de l’etiqueta hauria de ser el mateix als dos llocs.
  • No cal definir els noms d’etiquetes amb suficient antelació.
  • Al final, vegeu sempre quin ha estat l’error que s’ha produït a través del quadre de missatges separat.