La página Web de Emilio Sancha - MVP 2006/11
La página Web de Emilio Sancha

Inicio    |   Access    |   Excel    |    Visual Script    |   Enlaces    |   Búsquedas    |   Apuntes    |   Libro de Visitas

Suscripcion RSS

Depurar código Visual Basic para Aplicaciones en Microsoft Office

 

Para depurar el código VBA de una aplicación Microsoft Office, cualquiera que sea esta, iremos al Editor de Visual Basic, mediante Alt + F11 por ejemplo; buscaremos el procedimiento o función que queramos depurar, haremos click sobre una línea de código, cualquiera que no sea un comentario, una etiqueta o una declaración de variable y, o bien pulsamos F9 o bien hacemos click sobre el margen izquierdo del código, la línea se pondrá en vídeo inverso color granate, de este modo hemos establecido un punto de interrupción.

Ahora podemos ejecutar el código ya sea por su ruta normal, pulsación de un botón, eventos varios, o bien podemos intentarlo, no siempre funciona según de que se trate el procedimiento a depurar, pulsando F5 o F8.

F5 Ejecuta el código de un tirón, si no hemos establecido ningún punto de interrupción se ejecutará hasta acabar o encontrar un error.

F8 Lo hace línea a línea, paso a paso por instrucciones.

Shift + F8 ejecuta los procedimientos de un tirón, es decir si en la línea en que estamos detenidos hay un procedimiento, si pulsáramos F8 entraríamos en el y seguiríamos línea a línea, mientras que con Shift + F8 la ejecutaremos de un tirón.

Ctrl + F8 ejecuta el código hasta la posición del cursor, se comporta igual que si hubiéramos establecido en esa línea un punto de interrupción.

 

Cuando el código está detenido, la línea se vuelve amarilla, si colocamos el cursor sobre una variable, veremos que nos muestra un "tip" con el contenido de esa variable, lo que nos va a dar una idea muy clara de cual es el comportamiento del proceso.

Al mismo tiempo podremos realizar cambios en el contenido de las variables para analizar el comportamiento del proceso, ¿qué pasaría si ...?
Para ello iremos a la ventana Inmediato (menú Ver > Ventana Inmediato), allí podremos pedir el valor de cualquier variable e incluso modificarlo.

Mientras esté detenida la ejecución del proceso, podremos desplazar el cursor a una línea anterior o posterior a la actual, para ello solo tendremos que posicionar el cursor del ratón sobre la flecha amarilla del margen izquierdo, en ese momento cambiará la forma del cursor, pulsando y manteniendo pulsado el ratón podremos desplazar el cursor hasta donde deseemos, dentro del procedimiento actual, excepción hecha de declaraciones de variables, comentarios o etiquetas.

 

El objeto Debug envía la salida a la ventana Depuración en tiempo de ejecución

Tiene dos métodos:

Print:   Envía texto a la ventana Inmediato

Assert: Detiene de forma condicional la ejecución de la línea en la que aparece el método.

Ejemplo:

Private Sub PruebaAssert()
Dim i As Long
For i = 1 To 10
&nbsp;&nbsp;&nbsp;Debug.Assert (i < 5)
Next i
End Sub
 

Otro método de compilación condicional

#If Win64 Then

&nbsp;&nbsp;&nbsp;Public Declare PtrSafe Sub ReleaseCapture Lib "user32" ()
#Else
&nbsp;&nbsp;&nbsp;Public Declare Sub ReleaseCapture Lib "user32" ()
#End If

de esta manera podremos incluir líneas de código que no serían aceptables para el compilador, en este ejemplo concreto la primera declaración de la API ReleaseCapture, para Office de 64 bits, produciría un error al ser compilada por un Office de 32 bits, sin embargo al estar incluida entre almohadillas el compilador ignora esa instrucción y la deja pasar.

 


  • NOTA: La información contenida en esta página, así como el código fuente incluido en la misma, se proporciona TAL CUAL, sin garantías de ninguna clase, y no otorga derecho alguno. Usted asume cualquier riesgo al poner en práctica, utilizar o ejecutar lo explicado, recomendado o sugerido en la presenta página.

    This page is provided AS IS with no warranties, and confers no rights. You assume all risk for your use.

    Ultima actualización:  Sábado, 15 de Octubre de 2016
    © Emilio Sancha 2.004-2.016