Depuración de macro de VBA - Consejos de Excel

Cómo depurar una macro de Excel VBA que no funciona. Hay herramientas asombrosas en Excel VBA que le permiten ver el valor actual almacenado en variables mientras recorre el código una línea a la vez. Si tiene una macro que no funciona,

Ver video

  • Tiene una macro de Excel VBA que no funciona
  • VBA tiene increíbles herramientas de depuración
  • En lugar de ejecutar su código, puede recorrer el código usando F8
  • La línea en amarillo es la línea que está a punto de ejecutarse.
  • Desplácese sobre cualquier variable para ver el valor de esa variable.
  • Cambie de un lado a otro a Excel para ver qué está sucediendo

Transcripción del video

Aprenda Excel de Podcast, Episodio 2096: Depuración de macro VBA

Oye, bienvenido de nuevo a Netcast, soy Bill Jelen. Pregunta de hoy: Alguien tenía un código que publiqué en un video antiguo de YouTube y publicó un comentario que decía: “Ah, eso no funciona. No guarda la factura duplicada, pero no arroja un error ". No sé qué pasa con el código. Muy bien, ya sabe, mire, hay excelentes herramientas disponibles cuando su macro VBA no está funcionando. Entonces tenemos un botón aquí que se supone que debe ejecutar algún código. Voy a asignar la macro, se llama SaveInvoice. Haré clic en Editar y terminaremos en VBA. Y normalmente cuando presionamos ese botón, solo se ejecutará este código. ¡BAM! Como si todo hubiera pasado muy rápido pero no puedes ver lo que está sucediendo.

Entonces, en las herramientas de depuración, una de mis cosas favoritas aquí es Debug Step Into, que verá que la tecla de acceso directo es F8, y que nos permite ejecutar el código una línea a la vez. Entonces presioné F8 allí y esta es: la línea en amarillo es la línea que está a punto de ejecutarse. Entonces, si presiono F8, salta esas dos declaraciones y ahora estamos a punto de hacer una ActiveSheet.Copy. Entonces, lo que es realmente hermoso aquí es, ya sabes, especialmente si tienes un monitor grande, que la ventana de Podcast es demasiado pequeña, pero lo que puedes hacer es ver la ejecución de Macro. Así que ahora mismo está a punto de hacer ActiveSheet.Copy. Ahora mismo estoy en un libro de trabajo llamado Podcast 2096. Aquí hay una hoja de trabajo llamada Factura y cuando presiono F8, verán que ahora estoy en un libro de trabajo nuevo llamado Libro2 y tenemos solo la Factura, de acuerdo.

Y ahora estamos a punto de asignar este gran, largo asunto a New FN. Presione F8. Muy bien, no parecía que hubiera pasado nada aquí porque no pasó nada aquí. Pero aquí está lo hermoso, ahora he asignado algo a esa variable llamada New FN y si tomo el mouse y coloco el cursor sobre New FN, aparecerá una pequeña información sobre herramientas que me muestra lo que está almacenado en New FN. Así que está guardando el nombre del archivo, ahí está la carpeta donde va a ir. Se llama Invoice1234 porque tomó el valor de F4 y luego agregó PDF.

Muy bien, una de las cosas más frustrantes de Excel es que si su memoria comienza a agotarse, esta información sobre herramientas no quiere aparecer. Estarás flotando allí y no pasará nada. A veces tienes que hacer clic para hacerlo aquí y, a veces, simplemente no aparecerá en absoluto. Cuando no aparezca en absoluto, lo que podemos hacer es hacer Ctrl + G. Ctrl + G es la ventana inmediata y luego vamos a usar? que es el atajo para Debug.Print, NewFN. En otras palabras, dime qué hay en New FN y te mostrará qué hay en New FN allí mismo.

Muy bien ahora, estamos a punto de ejecutar esta línea de código que creará un PDF. Muy bien, presionaré F8. Muy bien, y en este punto deberíamos tener un nuevo PDF con 1234 y si voy a buscar en la carpeta, seguro que se acaba de crear Inv1234 el 11 de mayo a las 6:25 a.m. Impresionante, ¿verdad?

Muy bien, ahora estamos llegando al punto en el que tenemos el problema. Muy bien, presionamos F8 aquí y aparece como Copia duplicada. Muy bien, eso funcionó. Y luego F8, y podemos ver qué hay en New FN. Muy bien, tiene DupInv1234.pdf e incluso puede volver aquí y hacer clic después de Imprimir NewFN y luego verá que hemos cambiado el nombre del archivo, de acuerdo. Entonces, todo está bien. Y luego presionamos F8 para ejecutar Creando el PDF. ¡Increíble! Todo se ve genial, ¿verdad?

Así que regrese a nuestros archivos de Podcast. Muy bien, pero en lugar de tener algo llamado DupInv1234, simplemente no sé cómo algo llamado Book2. Muy bien, fue creado hace un minuto. Este tiene que ser el indicado, ¡pero caramba! Parece ser el nombre equivocado. Muy bien, volvemos a VBA y sé que acabo de asignar el valor correcto a New FN así, de acuerdo. Y veamos cómo lo estamos guardando. Lo estamos guardando como un NewFN1 que está vacío; y como está vacío, eso significa que está tomando el nombre del archivo, que en este caso es Libro2, ya que hice una copia del mismo. Y lo cambió - ¡Oh, mira! Así que aquí, estaba asignando el nombre a NewFN y luego guardando este NewFN1, y ahora, porque estoy depurando y flotando - Hovering es lo mejor que ha existido. Espero poder averiguar qué está pasando.Así que vuelvo y cambio el NewFN1. Ahora, aquí está lo asombroso. Muy bien, ya pasé esta línea en Macro, pero puedo arrastrar esto hacia arriba y decir, bien, ejecutemos esto nuevamente F8. Y ahora creemos el PDF. Muy bien, y ahí aparece con el nombre correcto y todo está bien.

Muy bien, ahora que sé que he terminado, todo está bien. Todo va a funcionar desde aquí. Simplemente hago clic en Ejecutar y se ejecutará hasta el final del código. Muy bien, a veces tendrás una macro larga con, ya sabes, cientos de líneas de código que funcionan y luego una parte en particular que no funciona, ¿de acuerdo? Así que aquí se mencionaron un par de otras herramientas. Si necesita saltar un montón de código y ejecutar todo hasta ese punto, bueno, una forma de hacerlo es hacer clic aquí y crear un punto de interrupción. Muy bien, ahora cuando ejecuto esto, se ejecutará todo hasta ese punto. Puedo simplemente hacer clic en ejecutar y se detendrá, o si ni siquiera desea establecer un punto de interrupción, simplemente haremos clic aquí y diremos Depurar, Ejecutar al cursor. Ejecutar al cursor.Ahora sé que esto causará un problema aquí porque el código para cambiar este número de factura, aún no lo conecté. Así que pondré un nuevo número de factura y estoy en esa línea ahora mismo. Depurar, ejecutar al cursor, que es Ctrl + F8. Muy bien, ahora corrió todo hasta ese punto y lo que deberíamos tener es que deberíamos poder ver que acaba de crear Inv1235, de acuerdo. Y ahora se trata de … estamos en esta línea de código. Puedo simplemente presionar F8 para ejecutar una línea o simplemente ejecutar el resto del camino. Y ahí está nuestro DupInv1235, ¿de acuerdo? Entonces, las herramientas de depuración aquí en VBA son increíbles. Vamos a ejecutar un código una línea a la vez, organizar la pantalla de modo que podamos ver tanto el código que se está ejecutando como los resultados del código a la izquierda. Y usted sabe, con suerte, puede descubrir qué está mal con el código.

Muy bien, recapitulación del episodio: tenga una macro de Excel VBA que no funcione. Tiene increíbles herramientas de depuración. En lugar de ejecutar su código, puede recorrer el código usando F8. La línea en amarillo es la línea que está a punto de ejecutarse. Puede pasar el cursor sobre la variable para ver el valor de esa variable, alternar entre Excel para ver qué está sucediendo.

Bueno, oye, quiero darte las gracias por pasar. Nos vemos la próxima vez para otro netcast de.

Descargar archivo

Descargue el archivo de muestra aquí: Podcast2096.xlsm

Articulos interesantes...