Com utilitzar la declaració OnError a Excel 2016 VBA

Quan necessiteu fer front als errors a Excel VBA, podeu utilitzar la instrucció OnError. No obstant això, primer cal saber algunes coses. Podeu utilitzar la instrucció On Error de tres maneres.

Sintaxi Què fa
En cas d'error GoTo etiqueta Després d'executar aquesta instrucció, VBA reprèn l'execució a la
instrucció que segueix l'etiqueta especificada. Heu d'incloure dos punts
després de l'etiqueta perquè VBA la reconegui com a etiqueta.
En cas d'error GoTo 0 Després d'executar aquesta instrucció, VBA reprèn el seu
comportament normal de comprovació d'errors. Utilitzeu aquesta instrucció després d'utilitzar una de les
altres sentències On Error o quan vulgueu eliminar el tractament d'errors
del vostre procediment.
En cas d'error Reprèn Següent Després d'executar aquesta instrucció, VBA simplement ignora tots els errors
i reprèn l'execució amb la següent instrucció.

Es reprèn després d'un error

En alguns casos, simplement voleu que la rutina acabi amb gràcia quan es produeix un error. Per exemple, podeu mostrar un missatge que descrigui l'error i després sortir del procediment. (L'exemple EnterSquareRoot5 mostrat anteriorment utilitza aquesta tècnica.) En altres casos, voleu recuperar-vos de l'error, si és possible.

Per recuperar-se d'un error, heu d'utilitzar una instrucció Resume. Això esborra la condició d'error i us permet continuar amb l'execució en algun lloc. Podeu utilitzar la instrucció Resume de tres maneres.

Sintaxi Què fa
Resum L'execució es reprèn amb la instrucció que va provocar l'error. Utilitzeu-
ho si el vostre codi de gestió d'errors corregeix el problema i
està bé continuar.
Reprendre Següent L'execució es reprèn amb la instrucció immediatament després de la
instrucció que ha provocat l'error. Això bàsicament ignora l'
error.
Etiqueta de currículum L'execució es reprèn a l' etiqueta que especifiqueu.

L'exemple següent utilitza una instrucció Resume després que es produeixi un error:

Sub EnterSquareRoot6()
  Dim Num com a variant
  Atenuar el missatge com a cadena
  Dim Ans com a nombre enter
Torna-ho a provar:
' Configura la gestió d'errors
  En cas d'error GoTo BadEntry
' Demanar un valor
  Num = InputBox("Introdueix un valor")
  Si Num = "" Aleshores Surt Sub
' Insereix l'arrel quadrada
  ActiveCell.Value = Sqr(Num)
  Sortir de Sub
BadEntry:
  Msg = Err.Number & “: “ & Error (Err.Number)
  Msg = Missatge i vbNewLine i vbNewLine
  Msg = Msg & "Assegureu-vos que s'ha seleccionat un interval",
  Msg = Msg & "el full no està protegit",
  Msg = Msg & "i introduïu un valor no negatiu".
  Msg = Msg & vbNewLine & vbNewLine & "Torna-ho a provar?"
  Res = MsgBox(Msg, vbYesNo + vbCritical)
  Si Res = vbSí, reprèn la prova de nou
End Sub

Aquest procediment té una altra etiqueta: TryAgain. Si es produeix un error, l'execució continua a l'etiqueta BadEntry i el codi mostra el missatge següent. Si l'usuari respon fent clic a Sí, s'activa la instrucció Resume i l'execució torna a l'etiqueta TryAgain. Si l'usuari fa clic a No, el procediment finalitza.

Com utilitzar la declaració OnError a Excel 2016 VBA

Si es produeix un error, l'usuari pot decidir si ho torna a provar.

Tingueu en compte que el missatge d'error també inclou el número d'error, juntament amb la descripció de l'error "oficial".

La instrucció Resume esborra la condició d'error abans de continuar. Per veure-ho, proveu de substituir la declaració següent per la penúltima declaració de l'exemple anterior:

Si Res = vbSí, aneu a provar de nou

El codi no funciona correctament si feu servir GoTo en lloc de Resume. Per demostrar-ho, introduïu un nombre negatiu. Obteniu el missatge d'error. Feu clic a Sí per tornar-ho a provar i, a continuació, introduïu un altre número negatiu. Aquest segon error no està atrapat perquè la condició d'error original no s'ha esborrat.

Error de gestió en poques paraules

Per ajudar-vos a mantenir clar tot aquest negoci de gestió d'errors, aquí teniu un resum ràpid i brut. Un bloc de codi de gestió d'errors té les característiques següents:

  • Comença immediatament després de l'etiqueta especificada a la instrucció On Error.

  • La vostra macro només hauria d'arribar-hi si es produeix un error. Això vol dir que heu d'utilitzar una instrucció com Exit Sub o Exit Function immediatament abans de l'etiqueta.

  • Pot requerir una declaració de resum. Si trieu no avortar el procediment quan es produeix un error, heu d'executar una instrucció Resume abans de tornar al codi principal.

Saber quan ignorar els errors

En alguns casos, està perfectament bé ignorar els errors. És llavors quan entra en joc la declaració On Error Resume Next.

L'exemple següent fa un bucle per cada cel·la de l'interval seleccionat i converteix el valor a la seva arrel quadrada. Aquest procediment genera un missatge d'error si alguna cel·la de la selecció conté un número o text negatiu:

Sub SelectionSqrt()
  Atenuar la cel·la com a rang
  Si TypeName(Selection) <> "Range" Aleshores sortiu de Sub
  Per a cada cel·la a la selecció
    cel·la.Valor = Sqr(cel·la.Valor)
  Següent cel·la
End Sub

En aquest cas, potser voldreu ometre qualsevol cel·la que contingui un valor que no podeu convertir en una arrel quadrada. Podeu crear tot tipus de capacitats de verificació d'errors utilitzant estructures If-Then, però podeu idear una solució millor (i més senzilla) simplement ignorant els errors que es produeixen.

La rutina següent ho aconsegueix mitjançant la instrucció On Error Resume Next:

Sub SelectionSqrt()
  Atenuar la cel·la com a rang
  Si TypeName(Selection) <> "Range" Aleshores sortiu de Sub
  En cas d'error Reprèn Següent
  Per a cada cel·la a la selecció
    cel·la.Valor = Sqr(cel·la.Valor)
  Següent cel·la
End Sub

En general, podeu utilitzar una instrucció On Error Resume Next si considereu que els errors són inofensius o no tenen importància per a la vostra tasca.


Com bloquejar Microsoft Word dobrir fitxers en mode només de lectura a Windows

Com bloquejar Microsoft Word dobrir fitxers en mode només de lectura a Windows

Com bloquejar Microsoft Word d'obrir fitxers en mode de només lectura a Windows Microsoft Word obre fitxers en mode de només lectura, cosa que fa que sigui impossible editar-los? No us preocupeu, els mètodes es mostren a continuació

Com solucionar la impressió incorrecta de documents de Microsoft Word

Com solucionar la impressió incorrecta de documents de Microsoft Word

Com corregir errors en imprimir documents incorrectes de Microsoft Word Els errors en imprimir documents de Word amb tipus de lletra canviats, paràgrafs desordenats, falta de text o contingut perdut són força habituals. No obstant això, no

Esborra els dibuixos de llapis i ressaltats a les teves diapositives de PowerPoint

Esborra els dibuixos de llapis i ressaltats a les teves diapositives de PowerPoint

Si heu utilitzat el llapis o el marcador per dibuixar a les vostres diapositives de PowerPoint durant una presentació, podeu desar els dibuixos per a la següent presentació o esborrar-los de manera que la propera vegada que el mostreu, començareu amb diapositives de PowerPoint netes. Seguiu aquestes instruccions per esborrar dibuixos a llapis i ressaltadors: Esborrant línies una a […]

Contingut de la biblioteca destils a SharePoint 2010

Contingut de la biblioteca destils a SharePoint 2010

La biblioteca d'estils conté fitxers CSS, fitxers de llenguatge de full d'estil extensible (XSL) i imatges utilitzades per pàgines mestres predefinides, dissenys de pàgina i controls a SharePoint 2010. Per localitzar fitxers CSS a la biblioteca d'estils d'un lloc de publicació: Trieu Accions del lloc→Visualitza Tot el contingut del lloc. Apareix el contingut del lloc. La biblioteca d'estil es troba a […]

Formateu els números en milers i milions als informes dExcel

Formateu els números en milers i milions als informes dExcel

No desbordeu el vostre públic amb números gigantesques. A Microsoft Excel, podeu millorar la llegibilitat dels vostres taulers i informes formatant els vostres números perquè apareguin en milers o milions.

Com compartir i seguir els llocs de SharePoint

Com compartir i seguir els llocs de SharePoint

Apreneu a utilitzar les eines de xarxes socials de SharePoints que permeten a persones i grups comunicar-se, col·laborar, compartir i connectar-se.

Com convertir les dates a formats Julian a Excel

Com convertir les dates a formats Julian a Excel

Les dates julianes s'utilitzen sovint en entorns de fabricació com a marca de temps i referència ràpida per a un número de lot. Aquest tipus de codificació de dates permet als minoristes, consumidors i agents de serveis identificar quan es va fabricar un producte i, per tant, l'antiguitat del producte. Les dates julianes també s'utilitzen en programació, militars i astronomia. Diferents […]

Com crear una aplicació web daccés

Com crear una aplicació web daccés

Podeu crear una aplicació web a Access 2016. Què és, de totes maneres, una aplicació web? Bé, web vol dir que està en línia i l'aplicació és només una abreviatura de "aplicació". Una aplicació web personalitzada és una aplicació de base de dades en línia a la qual s'accedeix des del núvol mitjançant un navegador. Creeu i manteniu l'aplicació web a la versió d'escriptori […]

Barra dinici ràpid a SharePoint 2010

Barra dinici ràpid a SharePoint 2010

La majoria de les pàgines del SharePoint 2010 mostren una llista d'enllaços de navegació a la barra d'inici ràpid al costat esquerre de la pàgina. La barra d'inici ràpid mostra enllaços al contingut del lloc destacat, com ara llistes, biblioteques, llocs i pàgines de publicació. La barra d'inici ràpid inclou dos enllaços molt importants: Enllaç de tot el contingut del lloc: el […]

Què signifiquen els missatges derror del solucionador a Excel?

Què signifiquen els missatges derror del solucionador a Excel?

Per a problemes senzills, Solver a Excel sol trobar ràpidament els valors òptims de la variable Solver per a la funció objectiu. Però, en alguns casos, Solver té problemes per trobar els valors de la variable Solver que optimitzen la funció objectiu. En aquests casos, Solver normalment mostra un missatge o un missatge d'error que descriu o discuteix el problema que […]