Pulsando F5 en el editor de vba de access se abre la ventana de macros

Resulta que, cuando quiero depurar un procedimiento, no puedo porque al pulsar F5 o al botón equivalente de la barra de herramientas se abre la ventana de macros.

¿Alguna sugerencia?

1 respuesta

Respuesta
4

Eso es porque F5 no sirve para depurar código, sino para ejecutar un procedimiento Sub, un UserForm o una macro...

Además, si te fijas, está dentro del menú "Ejecutar", y no dentro del de "Depuración"...

Si quieres depurar el código paso a paso, la tecla es F8, una vez que has puesto un punto de interrupción en el código. Si pones un punto de interrupción y pulsas F5, se reanudará la ejecución del código normalmente.

Buenas tardes, sí, estoy de acuerdo contigo de que esa es la teoría, je je. Pero, tanto si pulso F5 como si clickeo en el triángulo verde, como si clickeo en "Ejecutar Sub/UserForm" de la ventana desplegable, se abre la dichosa ventana de "Macros". Yo creo que algo des configuré en su día sin darme cuenta. El caso es que estoy sin depurador. Mala cosa.

Gracias, por contestar.

No, te equivocas, si pulsas F5 en el editor de VBA, lo primero que hace es buscar donde está el cursor situado en el código.

Si no está dentro de un procedimiento sub o function, te abre esa ventana para que indiques el código (macro) que quieres ejecutar.

Sí estás dentro de un sub o function , mira el ámbito en que está declarada. Si es Public lo correrá,  y si no, te saldrá la ventana de marras.

De hecho, en esa ventana solo te aparecen los que son Public.

Matizo, en esa ventana solo te aparecerán los procedimientos declarados como Public en módulos independientes, lo que significa que si declaras alguno como Public en un módulo de formulario o informe no te aparecerán en el listado.

El procedimiento siempre sale private. Creo que donde pone Option Data Base y Option explicit toqueteé. La verdad es que no sé. He sustituido private por public en el nombre del procedimiento pero no va. no sé que puede ser.

Los procedimientos en los eventos de los módulos asociados a formularios o informes son siempre por defecto Private, porque se supone que solo los vas a llamar desde el propio formulario/informe donde los creas. Los que creas tú, por defecto son Public.

Si te fijas en mi última respuesta, te comento que en la ventana de ejecutar macros (le llama macros a procedimientos de código) solo te van a aparecer los procedimientos Public de módulos independientes.

Option Compare Dababase solo sirve para indicar el modo en que hacer comparaciones de cadena (podría ser Binary o Text, en vez de database)

Option Explicit solo sirve para obligarte a declarar las variables que uses en el módulo.

Ni uno ni otro afectan al comportamiento de F5 ni tienen que ver con la depuración de código.

http://www.filebig.net/files/ZZarL4wHQD 

En el ejemplo anterior, si pulsas F5 verás que solo aparece una "macro" llamada Test, que verás que está en el módulo independiente "mdlTest". La "macro" Comando1_Click, Public pero en el módulo del formulario Formulario1 no aparece en la ventana de ejecutar macros al pulsar F5.

(Y no me digas que la BD pesa mucho, porque no llega a 1Mb... jejeje)

Te recomiendo la lectura de esta guía de depuración de Neckkito: http://neckkito.xyz/nck/index.php/manuales/48-mini-guia-depuracion-vba 

Vale, de la otra vez, seguro me la bajé y ni me di cuenta. Por lo que veo me corre bien y no se atranca. Es decir, que para crear código, y poder depurarlos, primero lo escribo sobre un módulo independiente y cuando está bien, lo paso al procedimiento de evento correspondiente. Muchas gracias. ahora te valoro. Por cierto, el botón de dar las gracias, ¿Es para cerrar el hilo? ¿Tiene alguna función? Porque si te las estoy dando por aquí veo un poco raro volver a hacerlo otra vez.

No, puedes crear el código asociado al evento del control directamente (en un procedimiento private). Luego, si lo quieres depurar, puedes hacer cualquiera de las cosas que se explican en el artículo de Neckkito. Por ejemplo, lo primero podría ser ir a Depuración-> Compilar, que te mostrará errores de sintaxis. Lo siguiente sería poner un punto de interrupción y ejecutar el código paso a paso (con F8), con lo que irás viendo si lo que se ejecuta es lo que esperas que haga. Repito, en el artículo lo tienes explicado perfectamente.

El botón de dar las gracias sí sirve en cierto modo para cerrar el hilo (aunque luego puedes seguir preguntando si fuera necesario), te deja escribir un comentario (que será de agradecimiento, no para preguntar nada más) con lo que al experto no le sale que la pregunta requiere más información por parte del usuario. Sin embargo, si usar la opción de pedir más información para dar las gracias, al experto le queda la pregunta pendiente de más información.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas