{"id":48,"date":"2023-11-18T02:08:34","date_gmt":"2023-11-18T02:08:34","guid":{"rendered":"https:\/\/exceladvisor.org\/es\/manejo-de-errores\/"},"modified":"2023-12-25T10:33:52","modified_gmt":"2023-12-25T10:33:52","slug":"manejo-de-errores","status":"publish","type":"page","link":"https:\/\/exceladvisor.org\/es\/manejo-de-errores\/","title":{"rendered":"Tipos de errores de vba: depuraci\u00f3n y soluci\u00f3n"},"content":{"rendered":"<div class=\"excel-antes-del-contenido\" id=\"excel-2479899954\"><script type=\"text\/javascript\">\r\n\tatOptions = {\r\n\t\t'key' : 'c1158f160081d6540a8409e6925dab94',\r\n\t\t'format' : 'iframe',\r\n\t\t'height' : 250,\r\n\t\t'width' : 300,\r\n\t\t'params' : {}\r\n\t};\r\n<\/script>\r\n<script type=\"text\/javascript\" src=\"\/\/www.highperformanceformat.com\/c1158f160081d6540a8409e6925dab94\/invoke.js\"><\/script><\/div><p>Como cualquier otro lenguaje de programaci\u00f3n, VBA tiene mala suerte cuando se trata de errores y hay que lidiar con ellos pase lo que pase. Pueden provenir de diferentes fuentes, como una mala codificaci\u00f3n, operaciones imposibles (como dividir por cero) o errores inesperados.<\/p>\n<p> La mejor manera de manejar esto es tener una buena comprensi\u00f3n de todos los resultados posibles que podr\u00eda lograr con el c\u00f3digo. Mire el ejemplo a continuaci\u00f3n donde tenemos un c\u00f3digo VBA que calcula la ra\u00edz cuadrada del n\u00famero usando el valor que tiene en la celda seleccionada.<\/p>\n<pre class=\"wp-block-code\"> <code class=\"language-visual-basic\" lang=\"visual-basic\">Sub Square_Root() ActiveCell. <strong>Value<\/strong> = ActiveCell. <strong>Value<\/strong> ^ (1 \/ 2) <strong>End<\/strong> Sub<\/code><\/pre>\n<p> Pero si la celda activa tiene un valor distinto de un n\u00famero, obtendr\u00e1 un error de tiempo de ejecuci\u00f3n, como se muestra a continuaci\u00f3n. <\/p>\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large is-resized\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-58225\" src=\"https:\/\/exceladvisor.org\/wp-content\/uploads\/2023\/08\/01-erreur-dexecution.png\" sizes=\"auto, \" srcset=\"\" alt=\"Error de tiempo de ejecuci\u00f3n\" width=\"531\" height=\"361\"><\/figure>\n<\/div>\n<h2 class=\"wp-block-heading\"> Par\u00e1metros de error en VBA (captura de errores)<\/h2>\n<p> En la opci\u00f3n VBA, puede configurar la configuraci\u00f3n para manejar errores antes de comenzar a escribir c\u00f3digos. Para abrir la configuraci\u00f3n de VBA, vaya a Herramientas \u27a4 Opciones \u27a4 General \u27a4 Detecci\u00f3n de errores. Aqu\u00ed tienes tres opciones que puedes utilizar. <\/p>\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large is-resized\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-58226\" src=\"https:\/\/exceladvisor.org\/wp-content\/uploads\/2023\/08\/02-parametres-derreur-dans-vba.png\" sizes=\"auto, \" srcset=\"\" alt=\"\" width=\"532\" height=\"336\"><\/figure>\n<\/div>\n<ul>\n<li> <strong>Detener en todos los errores<\/strong> : si ha habilitado esta opci\u00f3n, VBA detendr\u00e1 el c\u00f3digo para todo tipo de errores, incluso si ha utilizado todo tipo de t\u00e9cnicas de manejo de errores.<\/li>\n<li> <strong>M\u00f3dulo de clase de manipulaci\u00f3n<\/strong> : con esta opci\u00f3n, VBA detendr\u00e1 todos sus c\u00f3digos que no sean manejados por ninguna t\u00e9cnica. Y si usa objetos como formularios de usuario, tambi\u00e9n dividir\u00e1 esos objetos y resaltar\u00e1 la l\u00ednea exacta donde est\u00e1 el error.<\/li>\n<li> <strong>Interrumpir en errores no controlados<\/strong> : esta es la configuraci\u00f3n predeterminada que le ayuda a conocer todos los errores para los que no est\u00e1 utilizando ninguna t\u00e9cnica de manejo de errores y detiene el c\u00f3digo para todos los errores no controlados. (Pero, si usa objetos como formularios de usuario, esto no resaltar\u00e1 la l\u00ednea que causa el error en el objeto, sino que solo resaltar\u00e1 la l\u00ednea que hace referencia a ese objeto).<\/li>\n<\/ul>\n<h2 class=\"wp-block-heading\"> Tipos de errores de VBA<\/h2>\n<p> Para comprender los errores de VBA, puede dividirlos en cuatro categor\u00edas y a continuaci\u00f3n se encuentra la explicaci\u00f3n de este tipo de errores.<\/p>\n<h3 class=\"wp-block-heading\"> 1. Errores de sintaxis<\/h3>\n<p> Al escribir c\u00f3digo VBA, debe seguir una sintaxis particular y, cuando la ignora o no la escribe como deber\u00eda, puede enfrentar un error de SYNTAX (tambi\u00e9n conocido como error de idioma). Son como errores tipogr\u00e1ficos que cometes al escribir tus c\u00f3digos.<\/p>\n<p> Bueno, VBA le ayuda informando estos errores mostrando un mensaje de error. S\u00f3lo necesita asegurarse de que la \u00abVerificaci\u00f3n autom\u00e1tica de sintaxis\u00bb est\u00e9 habilitada en su editor VB.<\/p>\n<p> Vaya a Herramienta \u27a4 Opciones y aseg\u00farese de marcar la casilla \u00abVerificaci\u00f3n autom\u00e1tica de sintaxis\u00bb. Con esto, cada vez que comete un error de SINTAXIS, VBA muestra un mensaje de error. <\/p>\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large is-resized\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-58227\" src=\"https:\/\/exceladvisor.org\/wp-content\/uploads\/2023\/08\/03-erreur-de-syntaxe.png\" sizes=\"auto, \" srcset=\"\" alt=\"\" width=\"533\" height=\"336\"><\/figure>\n<\/div>\n<p> Pero si la \u00abVerificaci\u00f3n autom\u00e1tica de sintaxis\u00bb est\u00e1 deshabilitada, VBA a\u00fan resalta la l\u00ednea de c\u00f3digo con el error pero no muestra el mensaje de error.<\/p>\n<h3 class=\"wp-block-heading\"> 2. Errores de compilaci\u00f3n<\/h3>\n<p> Esto sucede cuando escribe c\u00f3digo para realizar una actividad, pero esa actividad no es v\u00e1lida o no puede realizarse mediante VBA. El mejor ejemplo es cuando tiene algo de c\u00f3digo usando la declaraci\u00f3n IF pero no agreg\u00f3 END IF al final de la declaraci\u00f3n y ahora, cuando ejecuta este VBA, muestra un mensaje de error de compilaci\u00f3n. <\/p>\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large is-resized\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-58228\" src=\"https:\/\/exceladvisor.org\/wp-content\/uploads\/2023\/08\/04-erreur-de-compilation.png\" sizes=\"auto, \" srcset=\"\" alt=\"\" width=\"500\" height=\"251\"><\/figure>\n<\/div>\n<p> Aparte de esto, existen otros ejemplos de errores de compilaci\u00f3n:<\/p>\n<ul>\n<li> Usando For sin Next ( <a href=\"https:\/\/exceladvisor.org\/es\/para-el-bucle\/\">Para Siguiente<\/a> ).<\/li>\n<li> Seleccionar sin seleccionar el final ( <a href=\"https:\/\/exceladvisor.org\/es\/seleccione-el-caso\/\">Seleccionar caso<\/a> ).<\/li>\n<li> No declare una variable cuando haya habilitado la \u00bb <a href=\"https:\/\/exceladvisor.org\/es\/opcion-explicita-2\/\">Opci\u00f3n expl\u00edcita<\/a> \u00ab.<\/li>\n<li> Llamar a una sub\/funci\u00f3n que no existe.<\/li>\n<\/ul>\n<h3 class=\"wp-block-heading\"> 3. Errores de tiempo de ejecuci\u00f3n<\/h3>\n<p> Se produce un error de tiempo de ejecuci\u00f3n cuando se ejecuta el c\u00f3digo. Recuerde el ejemplo que compart\u00ed con usted arriba cuando el c\u00f3digo calcul\u00f3 la ra\u00edz cuadrada de un n\u00famero. <\/p>\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large is-resized\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-58229\" src=\"https:\/\/exceladvisor.org\/wp-content\/uploads\/2023\/08\/05-erreur-dexecution-lors-de-lexecution-du-code.png\" sizes=\"auto, \" srcset=\"\" alt=\"\" width=\"547\" height=\"372\"><\/figure>\n<\/div>\n<p> Cuando se produce un error de tiempo de ejecuci\u00f3n al ejecutar el c\u00f3digo, lo detiene y le muestra el cuadro de di\u00e1logo de error y este cuadro de error habla sobre la naturaleza del error que tiene. Supongamos que escribi\u00f3 un c\u00f3digo que <a href=\"https:\/\/exceladvisor.org\/es\/archivador-abierto\/\">abre un libro de trabajo<\/a> desde la ubicaci\u00f3n que especific\u00f3, pero ahora alguien mueve o elimina ese libro de trabajo. <\/p>\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large is-resized\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-58178\" src=\"https:\/\/exceladvisor.org\/wp-content\/uploads\/2023\/08\/6-vba-affiche-une-erreur-dexecution.png\" sizes=\"auto, \" srcset=\"\" alt=\"\" width=\"452\" height=\"149\"><\/figure>\n<\/div>\n<p> Entonces, cuando ejecute el c\u00f3digo, VBA le mostrar\u00e1 un error de tiempo de ejecuci\u00f3n porque no puede encontrar este archivo en esta ubicaci\u00f3n. El mensaje que recibe en un error de tiempo de ejecuci\u00f3n describe el motivo, lo que le ayuda a comprender el motivo del error. <\/p>\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large is-resized\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-58179\" src=\"https:\/\/exceladvisor.org\/wp-content\/uploads\/2023\/08\/7-erreur-dexecution-1004.png\" sizes=\"auto, \" srcset=\"\" alt=\"\" width=\"381\" height=\"215\"><\/figure>\n<\/div>\n<p> Y cuando ocurre un error de tiempo de ejecuci\u00f3n, detiene la ejecuci\u00f3n del c\u00f3digo. Si hace clic en el bot\u00f3n \u00abDepurar\u00bb, le muestra la l\u00ednea de c\u00f3digo que contiene este error resalt\u00e1ndola en amarillo. O puede hacer clic en el bot\u00f3n \u00abFinalizar\u00bb para detener la ejecuci\u00f3n del c\u00f3digo y cerrar el mensaje de error.<\/p>\n<h3 class=\"wp-block-heading\"> 4. Error l\u00f3gico<\/h3>\n<p> Esto no es un error sino un error al escribir el c\u00f3digo. Este tipo de errores a veces pueden causarle problemas para encontrarlos y corregirlos.<\/p>\n<p> Supongamos que est\u00e1 escribiendo alg\u00fan c\u00f3digo y al declarar una variable utiliza el <a href=\"https:\/\/exceladvisor.org\/es\/variables\/\">tipo de datos<\/a> incorrecto o ha utilizado los pasos de c\u00e1lculo incorrectos. En este caso, su c\u00f3digo funcionar\u00e1 bien y no encontrar\u00e1 este error f\u00e1cilmente. La mejor manera de solucionar este tipo de problemas es ejecutar cada l\u00ednea de c\u00f3digo una por una.<\/p>\n<h2 class=\"wp-block-heading\"> Usando herramientas de depuraci\u00f3n en VBA<\/h2>\n<p> VBA le proporciona un conjunto de herramientas para depurar su c\u00f3digo y eliminar errores de sus c\u00f3digos.<\/p>\n<h3 class=\"wp-block-heading\"> 1. Compile el proyecto VBA.<\/h3>\n<p> En el Editor de Visual Basic, hay una opci\u00f3n que puedes usar instant\u00e1neamente despu\u00e9s de terminar tu c\u00f3digo. Estas opciones de compilaci\u00f3n analizan cada l\u00ednea de su c\u00f3digo y muestran un cuadro de mensaje si hay un error en su c\u00f3digo.<\/p>\n<p class=\"qt-tip\"> <strong>Nota:<\/strong> La opci\u00f3n Compilar VBA solo rastrea errores de sintaxis y compilaci\u00f3n, no errores de tiempo de ejecuci\u00f3n, porque estos errores solo ocurren cuando se ejecuta un c\u00f3digo. Para utilizar Compilar proyecto VBA, vaya a \u27a4 Depurar \u27a4 Compilar proyecto VBA. <\/p>\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large is-resized\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-58232\" src=\"https:\/\/exceladvisor.org\/wp-content\/uploads\/2023\/08\/08-compiler-le-projet-vba.png\" sizes=\"auto, \" srcset=\"\" alt=\"\" width=\"366\" height=\"352\"><\/figure>\n<\/div>\n<p> Una vez que haya ejecutado \u00abCompilar proyecto VBA\u00bb y no tenga errores en su c\u00f3digo, las opciones aparecer\u00e1n atenuadas.<\/p>\n<h3 class=\"wp-block-heading\"> 2. Ejecute cada l\u00ednea de c\u00f3digo una por una.<\/h3>\n<p> As\u00ed es como lo hago. Cuando completo un c\u00f3digo, simplemente lo ejecuto l\u00ednea por l\u00ednea para comprobar si hay alg\u00fan error. Esto puede llevar tiempo, pero le ayudar\u00e1 a resolver todos los errores (sintaxis, compilaci\u00f3n y ejecuci\u00f3n).<\/p>\n<p> En la \u00abBarra de herramientas de depuraci\u00f3n\u00bb hay un bot\u00f3n \u00abPaso a paso\u00bb que puede usar para ejecutar el c\u00f3digo l\u00ednea por l\u00ednea o simplemente puede presionar F8 para ejecutar una sola l\u00ednea y luego presionarlo nuevamente para ejecutar la siguiente l\u00ednea del c\u00f3digo. <\/p>\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large is-resized\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-58233\" src=\"https:\/\/exceladvisor.org\/wp-content\/uploads\/2023\/08\/09-executer-chaque-ligne-de-code.png\" sizes=\"auto, \" srcset=\"\" alt=\"\" width=\"338\" height=\"387\"><\/figure>\n<\/div>\n<h2 class=\"wp-block-heading\"> Uso de la declaraci\u00f3n \u00abOn ERROR\u00bb para manejar errores de VBA<\/h2>\n<p> Es importante revisar tus c\u00f3digos y encontrar posibles errores en todos los m\u00e9todos de depuraci\u00f3n que tienes disponibles. Pero la mejor y m\u00e1s eficiente manera es crear instrucciones de manejo de errores que puedan manejar un error y hacer que su c\u00f3digo sea perfecto cuando se ejecute. Exploremos estas declaraciones. Cuando ocurre un error en un c\u00f3digo VBA, las mejores formas de manejar este error pueden ser:<\/p>\n<ul>\n<li> Deje que VBA ignore el error y ejecute el c\u00f3digo<\/li>\n<li> Deje que se ejecute un conjunto especial de instrucciones cuando se produzca un error.<\/li>\n<\/ul>\n<p> En ambas soluciones, puede utilizar declaraciones \u00abEn caso de error\u00bb. A continuaci\u00f3n se muestran cuatro declaraciones de \u00abEn caso de error\u00bb que puede utilizar. Y ahora veamos cada afirmaci\u00f3n una por una.<\/p>\n<h3 class=\"wp-block-heading\"> 1. Si te equivocas, empieza de nuevo<\/h3>\n<p> Esta simple l\u00ednea de c\u00f3digo permite que VBA contin\u00fae ejecutando el c\u00f3digo a pesar de que ocurra un error. <strong>La IDEA es simple:<\/strong> pasar a la siguiente l\u00ednea de c\u00f3digo si se detecta un error en alg\u00fan lugar durante la ejecuci\u00f3n.<\/p>\n<p> En el c\u00f3digo siguiente, tiene dos l\u00edneas de c\u00f3digo:<\/p>\n<ul>\n<li> La primera l\u00ednea indica que el valor en la celda A1 es 25 dividido por 0<\/li>\n<li> Y la segunda l\u00ednea dice que el valor de la celda A2 es 10 dividido por 5<\/li>\n<\/ul>\n<p> Ahora hay un problema con el c\u00f3digo que tienes en l\u00ednea. Como sabes, si divides algo entre 0, el resultado ser\u00e1 un error. Entonces, cuando ejecuta este c\u00f3digo, VBA muestra un mensaje de error <strong>\u00abError de tiempo de ejecuci\u00f3n &#8217;11&#8217; Dividir por cero\u00bb<\/strong> y detiene la ejecuci\u00f3n.<\/p>\n<p> Pero cuando agrega \u00abEn caso de error, reanudar a continuaci\u00f3n\u00bb al principio del c\u00f3digo y ejecuta el c\u00f3digo, VBA simplemente ignora la l\u00ednea de c\u00f3digo donde ocurre el error y contin\u00faa con la segunda l\u00ednea y agrega ese valor en la celda A2.<\/p>\n<pre class=\"wp-block-code\"> <code class=\"language-visual-basic\" lang=\"visual-basic\">Sub myDivide() <strong>On<\/strong> Error Resume <strong>Next<\/strong> <strong>Range<\/strong> (\"A1\"). <strong>Value<\/strong> = 25 \/ 0 <strong>Range<\/strong> (\"A2\"). <strong>Value<\/strong> = 10 \/ 5 <strong>End<\/strong> Sub<\/code><\/pre>\n<p> Entonces, siempre que desee que su c\u00f3digo se ejecute a pesar de que ocurra un error en cualquier lugar, simplemente use la instrucci\u00f3n \u00abEn caso de error, reanudar a continuaci\u00f3n\u00bb en su c\u00f3digo.<\/p>\n<p> <strong>Pero aqu\u00ed hay una cosa m\u00e1s que debes tener en cuenta:<\/strong> s\u00f3lo ignorar\u00e1 los errores que ocurran despu\u00e9s.<\/p>\n<p> Digamos que ocurre un error en la l\u00ednea 5 y agreg\u00f3 \u00abEn caso de error, reanudar a continuaci\u00f3n\u00bb en la l\u00ednea 8, no omitir\u00e1 este error. Entonces, la mejor manera es agregarlo como la primera l\u00ednea de c\u00f3digo del procedimiento.<\/p>\n<h3 class=\"wp-block-heading\"> 2. En caso de error GoTo 0<\/h3>\n<p> Este es el comportamiento predeterminado de VBA: cuando ocurre un error, detiene la ejecuci\u00f3n del c\u00f3digo.<\/p>\n<p> Bueno, usar \u00abOn Error GoTo 0&#8243; no hace ninguna diferencia en su c\u00f3digo. VBA simplemente detendr\u00e1 el c\u00f3digo y mostrar\u00e1 un mensaje con una descripci\u00f3n del error. Entonces, \u00bfpor qu\u00e9 deber\u00eda molestarme en usarlo? Pregunta inteligente. Usemos el ejemplo que us\u00f3 anteriormente en \u00bb <strong>En caso de error, reanudar a continuaci\u00f3n<\/strong> \u00ab.<\/p>\n<p> En este c\u00f3digo, cada vez que ocurre un error, VBA toma la siguiente l\u00ednea de c\u00f3digo y la ejecuta y no ver\u00e1 ning\u00fan mensaje de error. Pero digamos que tiene m\u00e1s l\u00edneas en su c\u00f3digo y no desea exceder esas l\u00edneas si hay un error en el c\u00f3digo.<\/p>\n<p> Por lo tanto, si ingresa <strong>\u00abEn caso de error, Ir a 0\u00bb<\/strong> despu\u00e9s de la segunda l\u00ednea de c\u00f3digo, restaurar\u00e1 el controlador de errores predeterminado de VBA, que muestra mensajes de error cada vez que ocurre un error.<\/p>\n<h3 class=\"wp-block-heading\"> 3. En caso de error GoTo [Etiqueta]<\/h3>\n<p> Piense en un lugar de un edificio al que pueda acudir en caso de emergencia. De manera similar, al usar \u00abEn caso de error, Ir a [Etiqueta]\u00bb, puede simplemente crear un bloque de c\u00f3digo separado en su c\u00f3digo principal para manejar un error.<\/p>\n<p> De hecho, \u00abEn caso de error, ir a [Etiqueta]\u00bb es una forma mucho mejor y m\u00e1s conveniente de manejar los errores. En el c\u00f3digo siguiente aparece \u00abEn caso de error, Ir a Oh!\u00bb Error\u201d ahora en esta l\u00ednea de declaraci\u00f3n, la palabra \u201c\u00a1Oh!\u201d Error\u201d es la etiqueta.<\/p>\n<p> Si observa el final del c\u00f3digo, tiene un comienzo espec\u00edfico con el nombre de la etiqueta y luego un c\u00f3digo para un cuadro de mensaje con un mensaje en el c\u00f3digo.<\/p>\n<p> Ahora, \u00bfqu\u00e9 sucede si ocurre un error? VBA saltar\u00e1 a la etiqueta \u201c\u00a1Oh! Error\u201d y ejecutar\u00e1 el bloque de c\u00f3digo que tienes despu\u00e9s de esa etiqueta.<\/p>\n<p> <strong>Pero hay una cosa de la que debes cuidar:<\/strong> si no ocurre ning\u00fan error, se ejecutar\u00e1 la etiqueta que tienes en tu c\u00f3digo. Hay dos cosas que debes hacer:<\/p>\n<ul>\n<li> Primero, aseg\u00farese de agregar su etiqueta de error al final del c\u00f3digo.<\/li>\n<li> En segundo lugar, agregue un \u00abSubt\u00edtulo de salida\u00bb antes de la etiqueta de error.<\/li>\n<\/ul>\n<p> Con esto, te beneficiar\u00e1s en ambas situaciones. Digamos que si ocurre un error y VBA cambia a la etiqueta que usted especific\u00f3, solo habr\u00e1 c\u00f3digo de la propia etiqueta para codificar. Y si no ocurre un error, la instrucci\u00f3n \u00abSalir Sub\u00bb que tiene antes de la etiqueta saldr\u00e1 del procedimiento sin ejecutar la etiqueta de error.<\/p>\n<h3 class=\"wp-block-heading\"> 4. En caso de error GoTo -1<\/h3>\n<p> Antes de entrar en esto, perm\u00edtanme compartir algo con ustedes. Cuando ocurre un error en un c\u00f3digo, VBA almacena este registro de errores en su memoria y solo lo borra cuando se completa la rutina.<\/p>\n<p> <strong>\u00a1Oh VBA! Vive en el presente<\/strong><\/p>\n<p> Para manejar el segundo error en el c\u00f3digo VBA, debe borrar el primer error de la memoria de VBA. En el c\u00f3digo siguiente, tiene dos declaraciones \u00abEn caso de error, Ir a [Etiqueta]\u00bb que manejan errores de dos bloques de c\u00f3digo diferentes.<\/p>\n<p> Pero si ejecuta este c\u00f3digo, cuando aparezca el segundo error, VBA no saltar\u00e1 a la etiqueta que configur\u00f3 y, en su lugar, mostrar\u00e1 el mensaje de error \u00abTipo no coincide\u00bb.<\/p>\n<pre class=\"wp-block-code\"> <code class=\"language-visual-basic\" lang=\"visual-basic\">Sub Square_Root() <strong>On<\/strong> Error GoTo myError1 <strong>Range<\/strong> (\"A1\"). <strong>Value<\/strong> = <strong>Range<\/strong> (\"A1\"). <strong>Value<\/strong> ^ (1 \/ 2) myError1: MsgBox \"There's some problem with the value you have in the cell A1.\" <strong>On<\/strong> Error GoTo myError2 <strong>Range<\/strong> (\"A2\"). <strong>Value<\/strong> = <strong>Range<\/strong> (\"A2\"). <strong>Value<\/strong> ^ (1 \/ 2) myError2: MsgBox \"There's some problem with the value you have in the cell A2.\" <strong>End<\/strong> Sub<\/code><\/pre>\n<p> Para resolver este problema, puede utilizar \u00abOn Error GoTo -1\u00bb, que permite a VBA eliminar el error actual de su almacenamiento.<\/p>\n<pre class=\"wp-block-code\"> <code class=\"language-visual-basic\" lang=\"visual-basic\">Sub Square_Root() On Error GoTo myError1 Range(\"A1\").Value = Range(\"A1\").Value ^ (1 \/ 2) myError1: MsgBox \"There's some problem with the value you have in the cell A1.\" On Error GoTo -1 On Error GoTo myError2 Range(\"A2\").Value = Range(\"A2\").Value ^ (1 \/ 2) myError2: MsgBox \"There's some problem with the value you have in the cell A2.\" End Sub<\/code><\/pre>\n<p> Ahora, cuando ejecuta este c\u00f3digo, \u00abOn Error GoTo -1\u00bb elimina el error de la memoria y VBA maneja el error en la segunda declaraci\u00f3n como se desee.<\/p>\n<h2 class=\"wp-block-heading\"> \u00bfQu\u00e9 m\u00e1s necesito saber para manejar errores en VBA?<\/h2>\n<p> Adem\u00e1s de utilizar t\u00e9cnicas de manejo de errores, hay algunas otras cosas que puede utilizar para manejar mejor los errores.<\/p>\n<h3 class=\"wp-block-heading\"> error de objeto<\/h3>\n<p> Cuando ocurre un error al ejecutar el c\u00f3digo, puede usar el objeto Err para obtener detalles sobre el error. Hay algunas propiedades y m\u00e9todos que puedes usar con el objeto Err. Aprendamos uno por uno.<\/p>\n<h4 class=\"wp-block-heading\"> <strong>Propiedades<\/strong><\/h4>\n<p> Estas son las propiedades que puede utilizar con el objeto Err:<\/p>\n<ul>\n<li> <strong>Err.Number<\/strong> : cuando se produce un error, se almacena un n\u00famero en el objeto Err. En el c\u00f3digo siguiente, cuando ocurre, el cuadro de mensaje muestra el n\u00famero de error.<\/li>\n<li> <strong>Err.Description<\/strong> : esta propiedad muestra la descripci\u00f3n del error que puede ayudarle a comprender el motivo del error.<\/li>\n<li> <strong>Err.Source:<\/strong> esta propiedad le indica en qu\u00e9 proyecto ocurri\u00f3 el error.<\/li>\n<li> <strong>Err.HelpContext:<\/strong> esta propiedad devuelve el ID del contexto de ayuda para el error en el archivo de ayuda.<\/li>\n<li> <strong>Err.HelpContext:<\/strong> este es un valor de cadena para la ubicaci\u00f3n del archivo de ayuda.<\/li>\n<\/ul>\n<p> Normalmente, cuando tratas errores usando t\u00e9cnicas de manejo de errores, no usas mucho el objeto Err en tus c\u00f3digos. Pero a continuaci\u00f3n se muestra un ejemplo sencillo de c\u00f3mo usarlo.<\/p>\n<pre class=\"wp-block-code\"> <code class=\"language-visual-basic\" lang=\"visual-basic\"><strong>Sub<\/strong> Square_Root() <strong>On<\/strong> <strong>Error<\/strong> <strong>GoTo<\/strong> myError1    Range(\"A1\").Value = Sqr(Range(\"A1\").Value) <strong>Exit<\/strong> <strong>Sub<\/strong> myError1:    MsgBox \"There's some problem with the value you have in the cell A1.\" &amp; vbCrLf &amp; _                \"Error Number: \" &amp; Err.Number  &amp; vbCrLf &amp; _                \"Error Description: \" &amp; Err.Description <strong>End<\/strong> <strong>Sub<\/strong><\/code><\/pre>\n<p> Cuando ejecuta el c\u00f3digo anterior, y si se produce un error, mostrar\u00e1 un cuadro de mensaje con el n\u00famero de error y la descripci\u00f3n del error.<\/p>\n<h4 class=\"wp-block-heading\"> <strong>M\u00e9todos<\/strong><\/h4>\n<p> Con Err Object tambi\u00e9n puedes utilizar dos m\u00e9todos.<\/p>\n<ul>\n<li> <strong>Err.Clear:<\/strong> este m\u00e9todo borra el n\u00famero de error y la descripci\u00f3n del error de la memoria VBA (esto es diferente de \u00abOn Error GoTo -1\u00bb porque no restablece completamente el error).<\/li>\n<li> <strong>Err.Raise:<\/strong> con este m\u00e9todo, puedes <a href=\"https:\/\/docs.microsoft.com\/en-us\/office\/vba\/language\/reference\/user-interface-help\/raise-method\" target=\"_blank\" rel=\"noreferrer noopener\">generar intencionalmente un error de tiempo de ejecuci\u00f3n<\/a> en tu c\u00f3digo, y aqu\u00ed est\u00e1 la sintaxis a seguir:<\/li>\n<\/ul>\n<p> <strong>Err<\/strong> .Raise [n\u00famero], [fuente], [descripci\u00f3n], [archivo de ayuda], [contexto de ayuda]<\/p>\n<h2 class=\"wp-block-heading\"> Consejos r\u00e1pidos sobre el manejo de errores<\/h2>\n<p> A continuaci\u00f3n se ofrecen algunos consejos r\u00e1pidos que puede utilizar para manejar mejor los errores de VBA.<\/p>\n<ul>\n<li> Utilice \u00abEn caso de error, reanudar a continuaci\u00f3n\u00bb solo cuando est\u00e9 seguro de que se est\u00e1 produciendo un error y sea aceptable omitir la l\u00ednea de c\u00f3digo con un error y sea seguro pasar a la siguiente l\u00ednea.<\/li>\n<li> La mejor manera de lidiar con los errores de tiempo de ejecuci\u00f3n es usar el \u00abManejador de errores\u00bb con \u00abEn caso de error, Ir a [Etiqueta]\u00bb. Esto garantiza que cada vez que ocurra el error, se le notificar\u00e1, pero no se mostrar\u00e1 ese desagradable mensaje de error.<\/li>\n<li> Cada vez que utilice el controlador de errores, aseg\u00farese de utilizar \u00abSalir Sub\u00bb primero.<\/li>\n<\/ul>\n<div class=\"gb-container gb-container-4db6181c gb-container-mt\"> <a class=\"gb-button gb-button-c5897111 gb-button-text gb-button-mt-button\" href=\"https:\/\/exceladvisor.org\/es\/vba\/\">\u00bfQu\u00e9 es VBA?<\/a><\/p>\n<h2 class=\"gb-headline gb-headline-665e5f6b gb-headline-text gb-headline-mt-heading\"> Tutoriales relacionados <\/h2>\n<div class=\"gb-grid-wrapper gb-grid-wrapper-a20baf7c gb-grid-wrapper-mt-grid\">\n<div class=\"gb-grid-column gb-grid-column-65ddf67e\"><\/div>\n<div class=\"gb-grid-column gb-grid-column-50067b57\">\n<div class=\"gb-container gb-container-50067b57\">\n<ul>\n<li> <a href=\"https:\/\/exceladvisor.org\/es\/error-de-desbordamiento-6\/\">Error de desbordamiento de VBA (Error 6)<\/a><\/li>\n<li> <a href=\"https:\/\/exceladvisor.org\/es\/error-de-ejecucion-1004\/\">Error de tiempo de ejecuci\u00f3n de VBA (Error 1004)<\/a><\/li>\n<li> <a href=\"https:\/\/exceladvisor.org\/es\/error-de-indice-fuera-de-rango-9\/\">Error de ejecuci\u00f3n del \u00edndice VBA fuera de rango (Error 9)<\/a><\/li>\n<li> <a href=\"https:\/\/exceladvisor.org\/es\/error-de-incompatibilidad-tipo-13\/\">Error de incompatibilidad de tipo VBA (Error 13)<\/a><\/li>\n<li> <a href=\"https:\/\/exceladvisor.org\/es\/error-de-memoria-insuficiente-7\/\">Error de VBA sin memoria (Error 7)<\/a><\/li>\n<\/ul>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>Como cualquier otro lenguaje de programaci\u00f3n, VBA tiene mala suerte cuando se trata de errores y hay que lidiar con ellos pase lo que pase. Pueden provenir de diferentes fuentes, como una mala codificaci\u00f3n, operaciones imposibles (como dividir por cero) o errores inesperados. La mejor manera de manejar esto es tener una buena comprensi\u00f3n de [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"open","ping_status":"closed","template":"","meta":{"ub_ctt_via":"","footnotes":""},"class_list":["post-48","page","type-page","status-publish","hentry"],"featured_image_src":null,"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v25.4 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Tipos de errores de vba: depuraci\u00f3n y soluci\u00f3n<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/exceladvisor.org\/es\/manejo-de-errores\/\" \/>\n<meta property=\"og:locale\" content=\"es_ES\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Tipos de errores de vba: depuraci\u00f3n y soluci\u00f3n\" \/>\n<meta property=\"og:description\" content=\"Como cualquier otro lenguaje de programaci\u00f3n, VBA tiene mala suerte cuando se trata de errores y hay que lidiar con ellos pase lo que pase. Pueden provenir de diferentes fuentes, como una mala codificaci\u00f3n, operaciones imposibles (como dividir por cero) o errores inesperados. La mejor manera de manejar esto es tener una buena comprensi\u00f3n de [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/exceladvisor.org\/es\/manejo-de-errores\/\" \/>\n<meta property=\"og:site_name\" content=\"Excel Advisor\" \/>\n<meta property=\"article:modified_time\" content=\"2023-12-25T10:33:52+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/exceladvisor.org\/wp-content\/uploads\/2023\/08\/01-erreur-dexecution.png\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Tiempo de lectura\" \/>\n\t<meta name=\"twitter:data1\" content=\"15 minutos\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/exceladvisor.org\/es\/manejo-de-errores\/\",\"url\":\"https:\/\/exceladvisor.org\/es\/manejo-de-errores\/\",\"name\":\"Tipos de errores de vba: depuraci\u00f3n y soluci\u00f3n\",\"isPartOf\":{\"@id\":\"https:\/\/exceladvisor.org\/es\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/exceladvisor.org\/es\/manejo-de-errores\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/exceladvisor.org\/es\/manejo-de-errores\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/exceladvisor.org\/wp-content\/uploads\/2023\/08\/01-erreur-dexecution.png\",\"datePublished\":\"2023-11-18T02:08:34+00:00\",\"dateModified\":\"2023-12-25T10:33:52+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/exceladvisor.org\/es\/manejo-de-errores\/#breadcrumb\"},\"inLanguage\":\"es\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/exceladvisor.org\/es\/manejo-de-errores\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\/\/exceladvisor.org\/es\/manejo-de-errores\/#primaryimage\",\"url\":\"https:\/\/exceladvisor.org\/wp-content\/uploads\/2023\/08\/01-erreur-dexecution.png\",\"contentUrl\":\"https:\/\/exceladvisor.org\/wp-content\/uploads\/2023\/08\/01-erreur-dexecution.png\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/exceladvisor.org\/es\/manejo-de-errores\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Hogar\",\"item\":\"https:\/\/exceladvisor.org\/es\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Tipos de errores de vba: depuraci\u00f3n y soluci\u00f3n\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/exceladvisor.org\/es\/#website\",\"url\":\"https:\/\/exceladvisor.org\/es\/\",\"name\":\"Excel Advisor\",\"description\":\"Su gu\u00eda para la dominaci\u00f3n de datos!\",\"publisher\":{\"@id\":\"https:\/\/exceladvisor.org\/es\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/exceladvisor.org\/es\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"es\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/exceladvisor.org\/es\/#organization\",\"name\":\"Excel Advisor\",\"url\":\"https:\/\/exceladvisor.org\/es\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\/\/exceladvisor.org\/es\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/exceladvisor.org\/es\/wp-content\/uploads\/2023\/12\/exceladvisor.org_.png\",\"contentUrl\":\"https:\/\/exceladvisor.org\/es\/wp-content\/uploads\/2023\/12\/exceladvisor.org_.png\",\"width\":105,\"height\":36,\"caption\":\"Excel Advisor\"},\"image\":{\"@id\":\"https:\/\/exceladvisor.org\/es\/#\/schema\/logo\/image\/\"}}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Tipos de errores de vba: depuraci\u00f3n y soluci\u00f3n","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/exceladvisor.org\/es\/manejo-de-errores\/","og_locale":"es_ES","og_type":"article","og_title":"Tipos de errores de vba: depuraci\u00f3n y soluci\u00f3n","og_description":"Como cualquier otro lenguaje de programaci\u00f3n, VBA tiene mala suerte cuando se trata de errores y hay que lidiar con ellos pase lo que pase. Pueden provenir de diferentes fuentes, como una mala codificaci\u00f3n, operaciones imposibles (como dividir por cero) o errores inesperados. La mejor manera de manejar esto es tener una buena comprensi\u00f3n de [&hellip;]","og_url":"https:\/\/exceladvisor.org\/es\/manejo-de-errores\/","og_site_name":"Excel Advisor","article_modified_time":"2023-12-25T10:33:52+00:00","og_image":[{"url":"https:\/\/exceladvisor.org\/wp-content\/uploads\/2023\/08\/01-erreur-dexecution.png","type":"","width":"","height":""}],"twitter_card":"summary_large_image","twitter_misc":{"Tiempo de lectura":"15 minutos"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/exceladvisor.org\/es\/manejo-de-errores\/","url":"https:\/\/exceladvisor.org\/es\/manejo-de-errores\/","name":"Tipos de errores de vba: depuraci\u00f3n y soluci\u00f3n","isPartOf":{"@id":"https:\/\/exceladvisor.org\/es\/#website"},"primaryImageOfPage":{"@id":"https:\/\/exceladvisor.org\/es\/manejo-de-errores\/#primaryimage"},"image":{"@id":"https:\/\/exceladvisor.org\/es\/manejo-de-errores\/#primaryimage"},"thumbnailUrl":"https:\/\/exceladvisor.org\/wp-content\/uploads\/2023\/08\/01-erreur-dexecution.png","datePublished":"2023-11-18T02:08:34+00:00","dateModified":"2023-12-25T10:33:52+00:00","breadcrumb":{"@id":"https:\/\/exceladvisor.org\/es\/manejo-de-errores\/#breadcrumb"},"inLanguage":"es","potentialAction":[{"@type":"ReadAction","target":["https:\/\/exceladvisor.org\/es\/manejo-de-errores\/"]}]},{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/exceladvisor.org\/es\/manejo-de-errores\/#primaryimage","url":"https:\/\/exceladvisor.org\/wp-content\/uploads\/2023\/08\/01-erreur-dexecution.png","contentUrl":"https:\/\/exceladvisor.org\/wp-content\/uploads\/2023\/08\/01-erreur-dexecution.png"},{"@type":"BreadcrumbList","@id":"https:\/\/exceladvisor.org\/es\/manejo-de-errores\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Hogar","item":"https:\/\/exceladvisor.org\/es\/"},{"@type":"ListItem","position":2,"name":"Tipos de errores de vba: depuraci\u00f3n y soluci\u00f3n"}]},{"@type":"WebSite","@id":"https:\/\/exceladvisor.org\/es\/#website","url":"https:\/\/exceladvisor.org\/es\/","name":"Excel Advisor","description":"Su gu\u00eda para la dominaci\u00f3n de datos!","publisher":{"@id":"https:\/\/exceladvisor.org\/es\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/exceladvisor.org\/es\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"es"},{"@type":"Organization","@id":"https:\/\/exceladvisor.org\/es\/#organization","name":"Excel Advisor","url":"https:\/\/exceladvisor.org\/es\/","logo":{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/exceladvisor.org\/es\/#\/schema\/logo\/image\/","url":"https:\/\/exceladvisor.org\/es\/wp-content\/uploads\/2023\/12\/exceladvisor.org_.png","contentUrl":"https:\/\/exceladvisor.org\/es\/wp-content\/uploads\/2023\/12\/exceladvisor.org_.png","width":105,"height":36,"caption":"Excel Advisor"},"image":{"@id":"https:\/\/exceladvisor.org\/es\/#\/schema\/logo\/image\/"}}]}},"yoast_meta":{"yoast_wpseo_title":"","yoast_wpseo_metadesc":"","yoast_wpseo_canonical":""},"_links":{"self":[{"href":"https:\/\/exceladvisor.org\/es\/wp-json\/wp\/v2\/pages\/48","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/exceladvisor.org\/es\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/exceladvisor.org\/es\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/exceladvisor.org\/es\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/exceladvisor.org\/es\/wp-json\/wp\/v2\/comments?post=48"}],"version-history":[{"count":1,"href":"https:\/\/exceladvisor.org\/es\/wp-json\/wp\/v2\/pages\/48\/revisions"}],"predecessor-version":[{"id":1501,"href":"https:\/\/exceladvisor.org\/es\/wp-json\/wp\/v2\/pages\/48\/revisions\/1501"}],"wp:attachment":[{"href":"https:\/\/exceladvisor.org\/es\/wp-json\/wp\/v2\/media?parent=48"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}