Variables y constantes en VBA

En VBA, como en cualquier otro lenguaje de programación, se utilizan variables y constantes para almacenar cualquier valor. Como su nombre lo indica, las variables pueden cambiar, mientras que las constantes almacenan valores fijos.

Por ejemplo, una constante Pi almacena el valor 3,14159265... El número "Pi" no cambiará durante la ejecución del programa, pero aún es más conveniente almacenar dicho valor como una constante.

Al mismo tiempo, podemos usar la variable sVAT_Tasa para almacenar la tasa de IVA en los bienes comprados. Valor variable sVAT_Tasa puede variar dependiendo del producto adquirido.

Tipos de datos

Todas las variables y constantes son de un tipo de datos particular. La siguiente tabla enumera los tipos de datos utilizados en VBA con una descripción y un rango de valores posibles:

Tipo de datos TamañoDescripciónRango de valores
ByteBytes 1enteros positivos; a menudo se utiliza para datos binariosde 0 a 255
BooleanBytes 2Puede ser verdadero o falsoVerdadero o falso
EnteroBytes 2Números enteros (sin parte fraccionaria)de -32 a +768
LargoBytes 4Números enteros grandes (sin parte fraccionaria)от -2 147 483 648 до +2 147 483 647
solteroBytes 4Número de punto flotante de precisión simplede -3.4e38 a +3.4e38
DobleBytes 8Número de punto flotante de precisión doblede -1.8e308 a +1.8e308
MonedaBytes 8Número de punto flotante, con un número fijo de lugares decimalesот -922 337 203 685 477.5808 до +922 337 203 685 477.5807
FechaBytes 8Fecha y hora: los datos de tipo Fecha se representan mediante un número de punto flotante. La parte entera de este número expresa la fecha y la parte fraccionaria expresa la hora.del 1 de enero de 100 al 31 de diciembre de 9999
ObjetoBytes 4Referencia de objetoCualquier referencia de objeto
Cordónestá cambiandoConjunto de caracteres. El tipo String puede ser de longitud fija o variable. Más comúnmente utilizado con longitud variableLongitud fija: hasta aproximadamente 65 caracteres. Longitud variable: hasta aproximadamente 500 mil millones de caracteres
Varianteestá cambiandoPuede contener una fecha, un flotante o una cadena de caracteres. Este tipo se utiliza en los casos en que no se sabe de antemano qué tipo de datos se ingresarán.Número – Doble, cadena – Cadena

Obviamente, usando la tabla anterior y eligiendo el tipo de datos correcto, puede usar la memoria de manera más económica (por ejemplo, elija el tipo de datos Entero Largo or soltero Doble). Sin embargo, al usar tipos de datos más compactos, debe tener cuidado de que su código no intente encajar valores desproporcionadamente grandes en ellos.

Declaración de variables y constantes

Nota del traductor: Hablando de variables en VBA, vale la pena mencionar otro punto muy importante. Si declaramos una variable pero no le asignamos ningún valor, entonces se inicializa con un valor predeterminado:

• las cadenas de texto se inicializan con cadenas vacías;

• números — valor 0;

• variables de tipo Boolean - Falso;

• fechas – 30 de diciembre de 1899.

Antes de que se pueda usar una variable o constante, se debe declarar. Para hacer esto, agregue la siguiente línea de código simple a la macro:

Dim Имя_Переменной As Тип_Данных

En la línea de código anterior Nombre de la variable es el nombre de la variable que se utilizará en el código, y Tipo de datos es uno de los tipos de datos de la tabla proporcionada un poco antes en este artículo. Por ejemplo:

Dim sVAT_Rate como único Dim i como entero

Las constantes se declaran de manera similar, pero al declarar constantes, su valor debe indicarse inmediatamente. Por ejemplo, así:

Const iMaxCount = 5000 Const iMaxScore = 100

No es necesario declarar variables en Excel. Por defecto, todas las variables ingresadas pero no declaradas en Excel tendrán el tipo Variante y podrá aceptar valores numéricos y de texto.

Así, el programador puede utilizar la nueva variable en cualquier momento (aunque no haya sido declarada), y Excel la tratará como una variable de tipo Variante. Sin embargo, hay varias razones por las que esto no debe hacerse:

  1. Uso de memoria y velocidad computacional. Si no declara una variable con una indicación del tipo de datos, por defecto se establecerá en el tipo Variante. Este tipo de datos utiliza más memoria que otros tipos de datos. Unos pocos bytes adicionales por variable pueden no parecer mucho, pero en la práctica, los programas pueden tener miles de variables (especialmente cuando se trabaja con matrices). Por lo tanto, la memoria adicional utilizada por variables como Variante, en comparación con variables de tipo Entero or soltero, puede sumar una cantidad significativa. Además, las operaciones con variables de tipo Variante se ejecutan mucho más lentamente que con variables de otros tipos, respectivamente, mil variables extra de tipo Variante puede ralentizar significativamente los cálculos.
  2. Prevención de errores tipográficos en nombres de variables. Si se declaran todas las variables, se puede usar la instrucción VBA: Opción explícita (hablaremos de ello más adelante) para identificar todas las variables no declaradas. Esto elimina la aparición de un error en el programa como resultado de un nombre de variable escrito incorrectamente. Por ejemplo, usando una variable llamada sVAT_Tasa, puede cometer un error tipográfico y, asignando un valor a esta variable, escribir: “IVARate = 0,175”. Se espera que a partir de ahora la variable sVAT_Tasa debería contener el valor 0,175, pero por supuesto no lo contiene. Si está habilitado el modo de declaración obligatoria de todas las variables utilizadas, entonces el compilador de VBA indicará inmediatamente un error, ya que no encontrará la variable Tipo de IVA entre los anunciados.
  3. Resaltar valores que no coinciden con el tipo declarado de una variable. Si declara una variable de cierto tipo e intenta asignarle datos de un tipo diferente, obtendrá un error que, si no se corrige, puede hacer que el programa se bloquee. A primera vista, esto puede parecer una buena razón para no declarar variables, pero de hecho, antes resulta que una de las variables recibió los datos incorrectos que se suponía que debía recibir, ¡mucho mejor! De lo contrario, si el programa continúa ejecutándose, los resultados pueden ser incorrectos e inesperados, y será mucho más difícil encontrar la causa de los errores. También es posible que la macro se ejecute "con éxito". ¡Como resultado, el error pasará desapercibido y el trabajo continuará con datos incorrectos!

En este sentido, es deseable detectar un tipo de datos incorrecto y corregir dichos errores en el código lo antes posible. Por estos motivos, se recomienda declarar todas las variables al escribir una macro de VBA.

Opción explícita

Operador Opción explícita hace que se declaren todas las variables que se usarán en el código VBA y marca todas las variables no declaradas como errores durante la compilación (antes de que comience la ejecución del código). Aplicar este operador no es difícil, simplemente escriba esta línea en la parte superior del archivo VBA:

Option Explicit

Si desea insertar siempre Opción explícita en la parte superior de cada nuevo módulo VBA creado, esto se puede hacer automáticamente. Para hacer esto, debe habilitar la opción Requerir declaración de variable en la configuración del editor de VBA.

Esto se hace así:

  • En el menú Editor de Visual Basic, haga clic en > Opciones
  • En el cuadro de diálogo que aparece, abra la pestaña Editora
  • Revisa la caja Requerir declaración de variable y pulse OK

Cuando está habilitada, la cadena Opción explícita se insertará automáticamente al principio de cada nuevo módulo creado.

Alcance de Variables y Constantes

Cada variable o constante declarada tiene su propio alcance limitado, es decir, una parte limitada del programa en el que existe esta variable. El alcance depende de donde se hizo la declaración de la variable o constante. Tomemos, por ejemplo, la variable sVAT_Tasa, que se utiliza en la función Coste total. La siguiente tabla analiza dos opciones para el alcance variable sVAT_Tasadeclarado en dos posiciones diferentes en el módulo:

Opción Dim explícito sVAT_Rate Como función única Costo_total() Como doble ... Función final
Si la variable sVAT_Tasa declarado al principio del módulo, entonces el alcance de esta variable será todo el módulo (es decir, la variable sVAT_Tasa serán reconocidos por todos los procedimientos de este módulo).

Por tanto, si en la función Coste total variable sVAT_Tasa se le asignará algún valor, luego la próxima función ejecutada dentro del mismo módulo usará la variable sVAT_Tasa con el mismo significado.

Sin embargo, si se llama a alguna función ubicada en otro módulo, entonces para ello la variable sVAT_Tasa no se sabrá

Opción Función explícita Total_Cost() Como doble Dim sVAT_Rate Como simple ... Función final
Si la variable sVAT_Tasa declarado al comienzo de la función Coste total, entonces su alcance se limitará solo a esta función (es decir, dentro de la función Coste total, puedes usar la variable sVAT_Tasa, pero no fuera).

Al intentar usar sVAT_Tasa en otro procedimiento, el compilador de VBA informará un error porque esta variable no se declaró fuera de la función Coste total (siempre que se utilice el operador Opción explícita).

En el ejemplo que se muestra arriba, la variable se declara a nivel de módulo con la palabra clave Oscuro. Sin embargo, puede ser necesario que las variables declaradas puedan usarse en otros módulos. En tales casos, para declarar una variable en lugar de una palabra clave Oscuro se debe utilizar la palabra clave Público.

Por cierto, para declarar una variable a nivel de módulo, en lugar de la palabra clave Oscuro se puede usar la palabra clave Privado, lo que indica que esta variable está diseñada para usarse solo en el módulo actual.

También puede usar palabras clave para declarar constantes. Público и Privado, pero no en lugar de la palabra clave const, junto con eso.

Los siguientes ejemplos muestran el uso de palabras clave Público и Privado aplicado a variables y constantes.

Opción Explícita Pública sVAT_Rate Como única pública Const iMax_Count = 5000 ...    
En este ejemplo, la palabra clave Público se utiliza para declarar una variable sVAT_Tasa y constantes iMax_Count. El alcance de los elementos declarados de esta forma será todo el proyecto actual.

Esto significa que sVAT_Tasa и iMax_Count estará disponible en cualquier módulo de proyecto.

Opción Explícito Privado sVAT_Rate Como Único Privado Const iMax_Count = 5000 ...    
En este ejemplo, para declarar una variable sVAT_Tasa y constantes iMax_Count palabra clave utilizada Privado. El alcance de estos elementos es el módulo actual.

Esto significa que sVAT_Tasa и iMax_Count estará disponible en todos los trámites del módulo actual, pero no estará disponible para los trámites de otros módulos.

Deje un comentario