¿Cómo fuerzo VBA / Access para que se definan las variables?

Estoy haciendo algunos cambios significativos en algunos códigos VBA, y algunas variables están siendo eliminadas y / o renombradas. Sería mucho más fácil encontrar todas las ubicaciones que necesito actualizar si el comstackdor se queja de que las variables no existen en lugar de crearlas sobre la marcha.

¿Cómo fuerzo VBA / Access para que se declaren las variables?

Debe usar Option Explicit en la parte superior de cada módulo de código de VBA, incluidos los formularios y los informes.

Puede configurar esto para todos los módulos creados en el futuro y el código de VBA detrás de los formularios y los informes yendo al editor de VBA >> Herramientas >> Opciones >> pestaña del Editor y asegurándose de que se requiere Solicitar Declaración de Variables.

De la ayuda de Access 2003:

Requerir statement de variable: determina si se requieren declaraciones de variables explícitas en los módulos. Al seleccionar esto, se agrega la statement Option Explicit a las declaraciones generales en cualquier módulo nuevo.

También uso camel case cuando reduzco mis variables. ThisIsAnExampleOfCamelCase . Tan pronto como salgo de la línea de código de VBA, si Access no cambia la variable de minúscula al caso de camello, entonces sé que tengo un error tipográfico.

Algo de historia en OPTION EXPLICIT y Access VBA

Para seguir con la respuesta de Tony, aquí hay una explicación de por qué hay problemas con OPTION EXPLICIT que no están en algunos módulos de código de acceso.

En Access 95 y Access 97 (las dos primeras versiones de Office con VBA), Access tenía un editor de código diferente al de los demás progtwigs de oficina. En Access 2000, Microsoft implementó VBE desde otras aplicaciones de Office en Access. Al mismo tiempo, MS optó por hacer que los módulos de Access VBA se comportaran como los módulos en las otras aplicaciones, que de manera predeterminada no tenían OPTION EXPLICIT.

Por lo tanto, en Access 2000, de forma predeterminada, los módulos se crearon sin OPCIÓN EXPLÍCITA.

Esta fue, por supuesto, una decisión de diseño realmente estúpida por parte de MS, y la revertieron más tarde (no recuerdo si fue Access 2002 o 2003 que rectificó el problema y de manera predeterminada optó por OPTION EXPLICIT en todos los módulos nuevos). La razón por la que fue tonto (y MS debería haberlo sabido) es porque Access es una herramienta de DESARROLLO DE APLICACIONES DE BASES DE DATOS, y por lo tanto está operando en datos fuertemente tipados. Por lo tanto, el entorno del código debe estar fuertemente tipado por defecto para que esté en armonía con los datos con los que está trabajando.

En Excel o Word, los datos no están fuertemente tipados, y por lo tanto tiene más sentido utilizar tipos de datos variantes para casi todo, simplemente para que sea más fácil para todos. La desventaja de implementar eso al no usar OPTION EXPLICIT es que puedes terminar con errores tipográficos que introducen automáticamente nuevas variables [como la variable “intrdoduce” – si estuviera escribiendo esta publicación con OPTION EXPLICIT, eso no habría sucedido sin produciendo un error de tiempo de ejecución! :)]. Este es un problema con todos los lenguajes que funcionan de esta manera (me quito el pelo trabajando en PHP, donde los nombres de las variables pueden distinguirse por caso, es decir, $ Var no es la misma variable que $ var, pero estoy divagando), pero MS tomó la decisión de implementarlo de esa manera en Word y Excel con la teoría de que a las personas que escriben códigos allí les resultará más fácil si no están obligados a declarar sus variables.

Entonces, MS cometió el error de hacer la versión de acceso de VBE como las otras aplicaciones, aunque no había una lógica interna para los propósitos de Access que apoyara ese movimiento. Y MS luego retiró ese cambio y volvió al estado actual anterior (es decir, OPCIÓN EXPLÍCITA por defecto en todos los módulos).

Por lo tanto, a menudo verá aplicaciones que comenzaron a funcionar en Access 2000 que tienen módulos en todas partes sin OPCIÓN EXPLÍCITA. Cuando tengo que trabajar en una aplicación de este tipo, mi primera tarea es implementar OPTION EXPLICIT en todos los módulos y luego corregir el problema para que compile (lo que a menudo es bastante difícil, dado que la cosa fue progtwigda sin él).

Esta pregunta fue bastante útil para Excel, puede ver si funciona para Access:

Variables perdidas

Essentialy, MZ-Tools buscará a través de su código y le dirá lo que no se está utilizando. La versión para VBA se puede encontrar aquí . Utilice la función Revisar código fuente .