Comprensión de variables y constantes en macros de Excel

En este artículo, aprenderá qué son las constantes y las variables en las macros, dónde se pueden usar y cuál es la principal diferencia entre los diferentes tipos de datos. También se revelará por qué se necesitan constantes, si solo puede escribir una variable y nunca cambiarla.

Al igual que otros lenguajes de programación, los datos se pueden almacenar en variables o constantes (los cuales también se denominan a menudo contenedores de datos). Esta es la principal diferencia entre estos conceptos. El primero puede cambiar dependiendo de lo que suceda en el programa. A su vez, las constantes se establecen una vez y no cambian su valor.

Las constantes pueden ser útiles si necesita usar el mismo valor grande varias veces. En lugar de copiar el número, simplemente puede escribir el nombre de la constante. Por ejemplo, puede usar la constante "Pi" para almacenar Pi, que es un valor constante. Es muy grande, y cada vez es bastante difícil escribirlo o buscarlo y copiarlo. Y así, basta con escribir dos caracteres, y el entorno utiliza automáticamente el número deseado.

El usuario de Excel necesita declarar variables si necesita cambiar el valor almacenado en ellas de vez en cuando. Por ejemplo, puede configurar una variable llamada sVAT_Rate, que almacenará la tasa de IVA actual para el producto. Si cambia, puede corregirlo rápidamente. Esto es especialmente útil para aquellos que hacen negocios en los Estados Unidos, donde algunos bienes pueden no estar sujetos al IVA (y este impuesto también difiere de un estado a otro).

Tipos de datos

Cada contenedor de datos puede ser uno de varios tipos. Aquí hay una tabla que describe los tipos estándar de información procesada. Hay muchos de ellos, y al principio puede parecerle a un principiante que se repiten entre sí. Pero este es un sentimiento ilusorio. Siga leyendo para saber por qué es tan importante especificar el tipo de datos correcto.

No se recomienda utilizar un tipo de datos que ocupe más espacio en la memoria para números pequeños. Por ejemplo, para el número 1 basta con utilizar el tipo Byte. Esto tendrá un efecto positivo en el rendimiento del módulo ejecutable, especialmente en equipos débiles. Pero es importante no ir demasiado lejos aquí. Si utiliza un tipo de datos que es demasiado compacto, es posible que no quepa un valor demasiado grande.

Declaración de constantes y variables

Se desaconseja encarecidamente utilizar un contenedor de datos sin declararlo primero. Entonces pueden surgir una serie de problemas, para evitarlos es necesario escribir unas pocas líneas de código con enumeración de variables o constantes.

Para declarar una variable, se utiliza la instrucción Dim. Por ejemplo, así:

Dim Variable_Name como entero

Variable_Name es el nombre de la variable. A continuación, se escribe el operador As, indicando el tipo de dato. En lugar de las cadenas "Variable_Name" y "Integer", puede insertar su propio nombre y tipo de datos.

También se pueden declarar constantes, pero primero debe especificar su valor. Una de las opciones es:

Constante iMaxCount = 5000

Para ser justos, en algunos casos puede prescindir de declarar una variable, pero en este caso se les asignará automáticamente el tipo Variante. Sin embargo, esto no se recomienda por las siguientes razones:

  1. La variante se procesa mucho más lentamente, y si hay muchas de esas variables, el procesamiento de la información puede ralentizarse significativamente en computadoras débiles. ¿Parecería que esos segundos decidirán? Pero si tiene que escribir una gran cantidad de líneas de código y luego ejecutarlo en computadoras débiles (que todavía se venden, dado que las suites ofimáticas modernas requieren mucha RAM), puede detener el trabajo por completo. Hay casos en los que la escritura mal concebida de macros condujo a la congelación de smartbooks que tienen una pequeña cantidad de RAM y no están diseñados para realizar tareas complejas. 
  2. Se permiten errores tipográficos en los nombres, lo que se puede evitar mediante el uso de la instrucción Option Explicit, que le permite encontrar una variable no declarada, si se encuentra una. Esta es una manera fácil de detectar errores, ya que el más mínimo error tipográfico hace que el intérprete no pueda identificar la variable. Y si activa el modo de declaración de variables, el intérprete simplemente no le permitirá ejecutar la macro si se encuentran contenedores de datos que no se declararon al comienzo del módulo.
  3. Evite errores causados ​​por valores de variables que no coinciden con el tipo de datos. Normalmente, asignar un valor de texto a una variable entera generará un error. Sí, por un lado se asigna un tipo genérico sin declaración, pero si se declaran con anterioridad se pueden evitar errores aleatorios.

Por eso, a pesar de todo, es muy recomendable declarar todas las variables en las macros de Excel.

Hay una cosa más a tener en cuenta al declarar variables. Es posible no asignar ningún valor a una variable al declararla, pero en este caso adquiere un valor por defecto. Por ejemplo:

  1. Las líneas se hacen vacías.
  2. Los números toman el valor 0.
  3. Las variables de tipo booleano se consideran inicialmente falsas.
  4. La fecha predeterminada es el 30 de diciembre de 1899.

Por ejemplo, no necesita asignar el valor 0 a una variable entera si no se especificó ningún valor previamente. Ella ya contiene este número.

Declaración explícita de opción

Esta instrucción le permite declarar todas las variables que se utilizan en el código VBA y determinar la presencia de contenedores no declarados antes de que se ejecute el código. Para usar esta función, simplemente escriba una línea de código de opción explícita en la parte superior del código de la macro.

Si necesita incluir esta declaración en su código cada vez, puede hacerlo usando una configuración especial en el editor de VBA. Para habilitar esta opción, debe:

  1. Vaya al entorno de desarrollo a lo largo de la ruta - Herramientas> Opciones.
  2. En la ventana que se abre después de esto, abra la pestaña Editor.
  3. Y finalmente, marque la casilla junto al elemento Requerir declaración de variable.

Al completar estos pasos, haga clic en el botón "Aceptar". 

Eso es todo, ahora al escribir cada nueva macro, esta línea se insertará en la parte superior del código automáticamente.

Alcance de constantes y variables

Cada variable o constante tiene solo un alcance limitado. Depende donde lo declares.

Supongamos que tenemos una función Coste total(), y utiliza la variable sVAT_Tasa. Dependiendo de la posición en el módulo, tendrá un alcance diferente:

Opción explícita

Dim sVAT_Rate como individual

Función Total_Cost() como doble

.

.

.

Función finales

Si una variable se declara en la parte superior de un módulo, se propaga a lo largo de ese módulo. Es decir, puede ser leído por todos los procedimientos.

Además, si uno de los procedimientos cambió el valor de la variable, el siguiente también leerá este valor corregido. Pero en otros módulos esta variable seguirá sin leerse.

Opción explícita

Función Total_Cost() como doble

Dim sVAT_Rate como individual

   .

   .

   .

Función finales

En este caso, la variable se declara dentro del procedimiento y el intérprete arrojará un error si se usa en otro procedimiento.

Si desea que otros módulos lean la variable, debe usar la palabra clave Public en lugar de la palabra clave Dim. De manera similar, puede limitar el alcance de una variable solo al módulo actual utilizando la instrucción Public, que se escribe en lugar de la palabra Dim.

Puede establecer el alcance de las constantes de manera similar, pero la palabra clave aquí se escribe junto con el operador Const.

Aquí hay una tabla con un buen ejemplo de cómo funciona con constantes y variables.

Opción explícita

sVAT_Rate público como individual

Público Const iMax_Count = 5000

En este ejemplo, puede ver cómo se usa la palabra clave Public para declarar una variable y qué debe escribir en el editor de Visual Basic para declarar una constante pública. El alcance de estos contenedores de valor se aplica a todos los módulos.
Opción explícita

sVAT_Rate privado como soltero

Const privado iMax_Count = 5000

Aquí, las variables y las constantes se declaran mediante la palabra clave Private. Esto significa que solo se pueden ver dentro del módulo actual y los procedimientos en otros módulos no pueden usarlos.

Por qué se necesitan constantes y variables

El uso de constantes y variables permite aumentar el grado de comprensión del código. Y si los principiantes en general no tienen preguntas sobre por qué se necesitan variables, entonces hay muchas ambigüedades con respecto a la necesidad de constantes. Y esta pregunta parece, a primera vista, bastante lógica. Después de todo, puede declarar una variable una vez y nunca volver a cambiarla.

La respuesta resulta estar en algún lugar en el mismo plano en lo que respecta al uso de tipos de datos que ocupan un gran espacio en la memoria. Si estamos tratando con una gran cantidad de variables, podemos cambiar accidentalmente un contenedor existente. Si el usuario prescribe que cierto valor nunca cambiará, entonces el entorno lo controlará automáticamente.

Esto es especialmente importante cuando varios programadores escriben la macro. Uno puede saber que alguna variable no debe cambiar. Y el otro no. Si especifica el operador Const, otro desarrollador sabrá que este valor no cambia.

O bien, si hay una constante con un nombre y la variable tiene un nombre diferente pero similar. El desarrollador puede simplemente confundirlos. Por ejemplo, una variable que no necesita cambiarse se llama Variable11 y otra que se puede editar se llama Variable1. Una persona puede automáticamente, al escribir código, saltarse accidentalmente una unidad extra y no darse cuenta. Como resultado, se cambiará el contenedor de valores, que no debe tocarse.

O el propio desarrollador puede olvidar qué variables puede tocar y cuáles no. Esto sucede a menudo cuando el código se escribe durante varias semanas y su tamaño se vuelve grande. Durante este tiempo, es muy fácil olvidar incluso lo que significa esta o aquella variable.

Sí, puede hacer comentarios en esta situación, pero ¿no es más fácil especificar la palabra Const?

Conclusiones

Las variables son un componente esencial de la programación de macros, que permiten realizar operaciones complejas, desde cálculos hasta informar al usuario sobre ciertos eventos o especificar valores específicos en las celdas de una hoja de cálculo.

Se deben usar constantes si el desarrollador sabe con certeza que el contenido de estos contenedores no cambiará en el futuro. Se recomienda no utilizar variables en su lugar, ya que es posible cometer un error accidentalmente.

Deje un comentario