sql >> Base de Datos >  >> RDS >> Access

Depuración de procedimientos privados

Una de las ventajas de que VBA sea un lenguaje interpretado es que podemos ejecutar procedimientos individuales sin tener que compilar toda la aplicación. Exploremos exactamente cómo lo hacemos.

Trámites Públicos

Rutinas publicas sin argumentos

En un módulo estándar, puede colocar el cursor dentro de una rutina pública que no tiene argumentos, presionar [F5] y esa rutina se ejecutará inmediatamente.

Si desea recorrer la rutina, puede establecer un punto de interrupción en una de las líneas antes de presionar [F5] o simplemente presionar [F8] ("Pasar a paso") e inmediatamente comenzar a recorrer el código de la rutina.

Funciones publicas sin argumentos

Esto también funciona con funciones públicas en módulos de código estándar. La clave es que la función no puede aceptar ningún argumento, ni siquiera los opcionales.

Trámites Públicos con Argumentos

¿Qué sucede si intenta ejecutar un procedimiento público que toma uno o más argumentos (incluso los opcionales)? El comando "Ejecutar> Ejecutar macro" ejecuta:

Trámites Privados

Procedimientos privados sin argumentos

No puedo atribuirme el mérito de haber descubierto este. Un agradecimiento especial a Terry Chapman por transmitir el hecho de que puede presionar F5 para depurar Private procedimientos vigentes, no solo procedimientos públicos.

Al igual que Terry, solía cambiar temporalmente mis procedimientos privados a públicos mientras los depuraba. Resulta que nunca tuve que hacer eso en absoluto.

Procedimientos Privados Con Argumentos

Una vez que Terry me hizo cuestionar mis suposiciones, decidí ver cuánto podía salirme con la mía. ¡Resulta que mucho más de lo que esperaba!

Lo crea o no, puede depurar procedimientos privados que toman argumentos sin cambiándolos temporalmente a trámites públicos. Para hacer esto, solo necesita llamar al nombre del procedimiento completamente calificado desde la ventana Inmediato. Por "nombre completo", me refiero al nombre en el formato de {ModuleName}.{ProcedureName} .

Mira este ejemplo:

Pero no confíes en mi palabra. ¡Pruébalo!