Técnicas de depuración para excel 2016 vba

Es posible que encuentre algunos problemas con su código VBA, pero ¿cómo encontrar el problema? A veces, su código VBA puede necesitar algo de depuración. Sigue leyendo para descubrir los cuatro métodos más comunes para depurar código VBA de Excel:

  • Examinar el código

    Video: Depurar código VBA en Excel – Ejecutar una macro paso a paso

  • Inserción de funciones MsgBox en varios lugares de su código

  • Inserción de instrucciones Debug.Print

  • Utilizando el Excel integrado en las herramientas de depuración

Examinar su código

Tal vez la técnica de depuración más sencilla es simplemente tomar un vistazo de cerca a su código para ver si puede encontrar el problema. Este método, por supuesto, requiere conocimiento y experiencia. En otras palabras, usted tiene que saber lo que está haciendo. Si tiene suerte, el error salta a la derecha, y una palmada a su frente y decir: “D`oh!” Cuando el dolor disminuye la frente, se puede solucionar el problema.

Observe el uso de las palabras, “Si tiene suerte.” Esto se debe a menudo a descubrir errores cuando se ha estado trabajando en su programa durante ocho horas seguidas, que es de 2 a.m. y está ejecutando el consumo de cafeína y fuerza de voluntad. En esos momentos, estás de suerte si es que se puede ver el código, y mucho menos encontrar los errores. Por lo tanto, no se sorprenda si simplemente examinando su código no es suficiente para que se encuentre y expulsas todos los errores que contiene.

Uso de la función MsgBox

Un problema común en muchos programas implica una o más variables no tomar en los valores esperados. En tales casos, el control de la variable (s), mientras que su código se ejecuta es una técnica de depuración útil. Una forma de hacer esto es mediante la inserción de funciones MsgBox temporales en su rutina. Por ejemplo, si tiene una variable llamada CellCount, puede insertar la siguiente declaración:

MsgBox CellCount

Cuando se ejecuta la rutina, la función MsgBox muestra el valor de CellCount.

A menudo es útil para mostrar los valores de dos o más variables en el cuadro de mensaje. La siguiente declaración muestra el valor actual de dos variables: LoopIndex (1) y CellCount (72), separadas por un espacio.

MsgBox LoopIndex & ““ & Conteo de células

Observe que las dos variables se combinan con el operador de concatenación (&) E insertar un carácter de espacio entre ellos. De lo contrario, el cuadro de mensaje encadena los dos valores juntos, haciendo que se vean como un solo valor. También puede utilizar el built-in constante, vbNewLine, en lugar del carácter de espacio. vbNewLine inserta un salto de avance de línea, que muestra el texto en una nueva línea. La siguiente declaración muestra tres variables, cada uno en una línea separada:

Video: Depuracion de una macro en Vba

El uso de un cuadro de mensaje para visualizar el valor de tres variables.
El uso de un cuadro de mensaje para visualizar el valor de tres variables.
MsgBox LoopIndex & vbNewLine & Conteo de células & vbNewLine & MyVal

Esta técnica no se limita a las variables de seguimiento. Puede utilizar un cuadro de mensaje para mostrar todo tipo de información útil, mientras que su código se ejecuta. Por ejemplo, si su código recorre una serie de hojas, la siguiente declaración muestra el nombre y el tipo de la hoja activa:

MsgBox ActiveSheet.Name & ““ & TypeName (ActiveSheet)

Si el cuadro de mensaje muestra algo inesperado, pulse Ctrl + Pausa, y se ve un cuadro de diálogo que le indica la ejecución de código se ha interrumpido, usted tiene cuatro opciones:

  • Haga clic en el botón Continuar. El código continúa ejecutando.

  • Haga clic en el botón Finalizar. La ejecución se detiene.

  • Haga clic en el botón de depuración. El VBE entra en modo de depuración.

  • Haga clic en el botón Ayuda. Una pantalla de ayuda le indicará que ha pulsado Ctrl + Pausa. En otras palabras, no es muy útil.

    Video: How to recovery or hack VBA Project password in Excel 2016 when forgotten or Unknown

    Al presionar Ctrl + Pausa detiene la ejecución de su código y le da algunas opciones.
    Al presionar Ctrl + Pausa detiene la ejecución de su código y le da algunas opciones.

Si su teclado no tiene una tecla de interrupción, intente presionar Ctrl + ScrollLock.

Siéntase libre de utilizar funciones MsgBox con frecuencia al depurar el código. Sólo asegúrese de que usted los quita después de haber identificado y corregido el problema.

Inserción de instrucciones Debug.Print

Como alternativa al uso de funciones MsgBox en el código, puede insertar una o más instrucciones Debug.Print temporales. Utilice estas declaraciones para imprimir el valor de una o más variables en la ventana Inmediato. He aquí un ejemplo que muestra los valores de tres variables:

Debug.Print LoopIndex, CellCount, MyVal

Tenga en cuenta que las variables están separados por comas. Se pueden visualizar tantas variables como desee con una sola instrucción Debug.Print.

Debug.Print envía la salida a la ventana Inmediato incluso si la ventana está oculta. Si la ventana Inmediato del VBE no está visible, presione Ctrl + G (o seleccione Ver → Ventana Inmediato). Aquí hay un poco de salida en la ventana Inmediato.

Una declaración Debug.Print envía la salida a la ventana Inmediato.
Una declaración Debug.Print envía la salida a la ventana Inmediato.

A diferencia de MsgBox, instrucciones Debug.Print no detienen su código. Así que hay que mantener un ojo en la ventana Inmediato para ver lo que está pasando.

Una vez que haya depurado el código, asegúrese de retirar todas las instrucciones Debug.Print. Incluso las grandes empresas como Microsoft en ocasiones se olvida de quitar sus instrucciones Debug.Print. En varias versiones anteriores de Excel, cada vez que se abre el complemento Herramientas para análisis en, verías varios mensajes extraños en la ventana Inmediato. Ese problema se fijó finalmente en Excel 2007.

Usando el depurador de VBA

Los diseñadores de Excel están íntimamente familiarizados con el concepto de insectos. En consecuencia, Excel incluye un conjunto de herramientas que pueden ayudarle a corregir problemas en su código VBA depuración.

Artículos Relacionados