Variables VBA en EXCEL: tres claves para el éxito, recuérdalo
Recuento difuso
Lista tenue
Dirección difusa
No estudié su código porque afirmó que la forma en que se usan las variables hace que su código sea difícil de entender. De hecho, su problema puede deberse a la forma en que maneja las variables.
Bien, veamos qué debe hacer. ...
Usa la opción explícita
Por defecto, Excel no te obliga a declarar variables. Sin embargo, debe cambiar esta configuración inmediatamente.
En cualquier versión de Excel, presione Alt+F11 para iniciar el Editor de Visual Basic (VBE). Seleccione Herramientas, Opciones. ¿Estás en línea? ¿Opciones? ¿Caja de diálogo? ¿editar? Tabor, ¿estás seguro? ¿Necesita una declaración de variables? Tiene una marca de verificación delante.
Después de seleccionar Aceptar, inserte el nuevo módulo. Cuando hagas esto, verás Option Explicit como la primera línea del módulo. Esta línea le dice a Excel que se deben declarar todas las variables.
Especificar tipo de variable
Para declarar una variable, ingrese Dim. Los nombres de variables son un poco como tipos de variables.
SubFoo()
El recuento de dimensiones es un número entero
Atenuar la lista como un rango
Mostrar direcciones como cadenas
Terminator
¿O este?
SubFoo()
El recuento tenue es un número entero, la lista es un rango y la dirección es una cadena.
Terminator
Si no especifica un tipo de variable, como se muestra en el primer ejemplo al principio de este artículo, VBA declarará la variable como un tipo Variante. Variant puede aceptar variables de cualquier tipo.
En casos excepcionales, tienes buenas razones para utilizar una variante. Pero aproximadamente el 95% de las veces, debes usar tipos de variables explícitos. Una razón es que su código se ejecutará más rápido. Pero la razón principal es que reducirá los errores de codificación, al menos por dos razones.
La primera razón para reducir los errores de codificación es que Excel aplicará los tipos de variables que especifique. Por ejemplo, si ejecuta esta macro.
SubFoo()
El recuento tenue es un número entero, la lista es un rango y la dirección es una cadena.
Contar =? ¿Herrero?
Terminator
Excel inicia un cuadro de diálogo de error porque los tipos de datos enteros no pueden contener texto. (Sin embargo, Excel aceptará una declaración similar.
Address=99
¿Porque qué? 99? se puede representar como texto.)
Declare explícitamente la variable type La segunda razón por la que siempre es una buena idea es que ayuda a documentar su intención al escribir código. Esta documentación es muy importante si mira el código unas semanas después. Saber si una variable contiene un número o texto puede facilitarle la lectura del código antiguo, la búsqueda de errores y la continuación de la codificación.
Entonces, cuando necesites declarar una variable como variable, declárala explícitamente de la siguiente manera:
Haz de MiVariable una variable
Declarando siempre una variable explícitamente y siempre sabrás que tienes la intención de utilizar la variable y no con fines no intencionados.
Usar notación húngara
¿Charles? Charles Simonyi fue un programador húngaro en PARC Xerox en las décadas de 1960 y 1970, y más tarde se convirtió en arquitecto jefe de Microsoft. Recomienda utilizar prefijos en los nombres de las variables para indicar la variable. Según Wikipedia, existen dos versiones del símbolo húngaro.
La versión más fácil de usar, y en mi opinión la más útil, es usar un prefijo para especificar el tipo de datos de la variable. Por ejemplo, aquí uso ? ¿norte? ¿Especifique un número entero y utilícelo? ¿Rng? ¿Especificar alcance y propósito? ¿s? Especifique una cadena.
Dim nCount es un número entero.
Atenuar la lista como un rango
Mostrar la dirección como una cadena
¿Muchos programadores lo hacen? int? ¿aún? ¿I? Para números enteros, ¿Will? cadena? para cuerdas. No importa. No importa qué símbolo utilice, siempre que sea coherente y fácil de entender para los demás.