Curso Excel VBA y Macros – Cap. 14 – Variables, constantes y tipos de datos
Cuando programamos en VBA, es muy común almacenar valores para luego volver a usarlos. Podemos almacenar valores que irán cambiando conforme se ejecute una macro (Variables) y otros valores que siempre serán fijos durante la ejecución de la macro (Contantes).
Las variables
Una variable es un espacio en memoria donde almacenamos valores que irán cambiando su valor conforme se ejecute una macro. El valor asignado a una variable si bien puede ser fijo, si durante la ejecución de la macro se requiere acceder a ese valor, lo podemos llamar o modificar su valor almacenado. Las variables serán definidas mediante un nombre personalizado.
En el siguiente ejemplo usamos la variable Ventas con el valor de 10. Después de mostrarlo le sumamos 1 al valor inicial y luego lo mostramos.
Ventas = 10
MsgBox Ventas
Ventas = 10 + 1
MsgBox Ventas
Ver video Capítulo 14 Excel VBA & Macros
Suscríbete al canal de EXCELeINFO en YouTube para aprender más de Excel y macros.
Las constantes
Cuando deseamos que un valor o un texto siempre tenga el mismo valor, pero a su vez lo deseamos seguir utilizando en el trascurso de la macro, aquí es donde usamos constantes. En el siguiente ejemplo definimos el texto EXCELeINFO a la contante Titulo.
Const Titulo = “EXCELeINFO”
MsgBox “Prueba”, vbOKOnly, TituloReglas para las variables
Al momento de nombrar las variables y contantes, debemos seguir una serie de reglas para el uso de los nombres:
· La primera letra debe ser una letra.
· Podemos usar letras y número, además de vocales acentuadas.
· Es recomendable usar mayúsculas y minúsculas para una mejor lectura (NombreVendedor).
· No se pueden usar espacios, pero sí el guión bajo (Tipo_venta).
· No se pueden usar caracteres especiales tipo @, &, $ o ¡.
· El límite de caracteres es de 254, pero por practicidad no se recomienda usar nombres largos.
Por qué usar variables en nuestras macros y procedimientos
¿Podemos trabajar en VBA sin variables? Sí. Depende de cómo aprendamos macros es el nivel de pulcritud que tendrá tu código. Lo recomendable es usar variables por varios motivos:
· El código es más legible.
· Es más sencillo mantener un código con variables.
· Podemos reutilizar variables a lo largo del código.
· Podemos reutilizar variables dentro de otras macros (ámbito de las variables).
Asignación de valores
Usaremos el signo de igual “=” para asignar valores a variables, de la misma manera que usamos el signo para asignar valores a celdas.
En el siguiente ejemplo la variable Ventas es igual a 10 y ese valor lo asignamos a la celda A1 de la hoja 1.
Ventas = 10
Sheets(1).Range(“A1”).Value = Ventas
Tipos de valores
Si bien podemos trabajar con variables en nuestras macros, es importante saber que podemos definirle tipos de valores a esas variables, por ejemplo, si una variable será de tipo cadena de texto, número, número con decimales o una fecha.
VBA nos permite trabajar sin necesidad de decirle de qué tipo de datos son nuestras variables, pero eso puede generar que nuestro código corra una poco más lento o no saber exactamente cómo tratar un tipo de variable.
El definir los tipos de datos de las variables, nos permiten hacer un uso adecuado de la memoria en nuestra computadora.
En la siguiente tabla se muestran los tipos de datos incorporados en VBA.
Tipo de dato | Bytes | Rango de valores |
Byte |
1 byte |
0 a 255 |
Boolean |
2 bytes |
Verdadero o falso |
Integer |
2 bytes |
–32,768 a 32,767 |
Long |
4 bytes |
–2,147,483,648 a 2,147,483,647 |
Single (Decimal simple) |
4 bytes |
Números reales de 32 bits y 7 decimales. –3.402823E38 a –1.401298E-45 (para valores negativos); 1.401298E-45 a 3.402823E38 (valores positivos) |
Double (decimal doble) |
8 bytes |
Números de 64 bits y 16 decimales. –1.79769313486232E308 a –4.94065645841247E-324 (valores negativos); 4.94065645841247E-324 a 1.79769313486232E308 (para valores positivos) |
Currency |
8 bytes |
15 dígitos a la izquierda del punto decimal y 4 a la derecha. –922,337,203,685,477.5808 to 922337203685477 |
Date |
8 bytes |
Enero 1, 0100 a Diciembre 31, 9999 |
Object |
4 bytes |
Cualquier referencia a un objeto |
String (variable length) |
10 bytes + 1 byte por cada carácter |
0 a aproximadamente 2 billones de caracteres |
String (longitud fija) |
Tamaño de la cadena |
1 a 65,535 caracteres |
Variant (with numbers) |
16 bytes |
Cualquier valor numérico hasta el rango de un tipo de datos doble. También puede contener valores especiales, como Empty, Error, Nothing y Null. |
Variant |
(con caracteres) 22 bytes + 1 byte por cada carácter |
0 a aproximadamente 2 billones de caracteres |
User-defined |
Varios |
Varía según el elemento |
Declaración de variables
Declarar variables con el tipo de datos correcto nos permite hacer un uso adecuado del espacio almacenado en memoria. Aunque podemos trabajar sin declarar variables, no es recomendable.
Para obligarnos a declarar siempre las variables podemos usar el texto Option Explicit al inicio de cada módulo.
Las siguientes macros son ejemplos de los diferentes tipos de datos asignados a variables.
Option Explicit 'EXCELeINFO 'MVP Sergio Alejandro Campos 'http://www.exceleinfo.com 'https://www.youtube.com/user/sergioacamposh Sub Variables() Dim Ventas As Byte Ventas = 10 MsgBox Ventas Ventas = 10 + 1 MsgBox Ventas Ventas = 10 Sheets("Hoja3").Range("A1").Value = Ventas End Sub Sub Constante() Const Titulo = "EXCELeINFO" MsgBox "Prueba", vbOKOnly, Titulo End Sub Sub tipo_byte() Dim Valor As Byte Valor = 200 MsgBox Valor End Sub Sub tipo_boolean() Dim Decisión As Boolean Decisión = True MsgBox Decisión End Sub Sub tipo_integer() Dim Columnas As Integer Columnas = Cells.Columns.Count MsgBox Columnas End Sub Sub tipo_long() Dim Filas As Long Filas = Cells.Rows.Count MsgBox Filas End Sub Sub tipo_single() Dim Valor As Single Valor = 1.158159 MsgBox Valor End Sub Sub tipo_double() Dim Valor As Double Valor = 1.7976931348623 MsgBox Valor End Sub Sub tipo_currency() Dim Precio As Currency Precio = 123456789.125 MsgBox Precio End Sub Sub tipo_date() Dim Fecha As Date Dim Fecha2 As Date Fecha = Now() Fecha2 = #5/2/2019# MsgBox Fecha MsgBox VBA.Format(Fecha2, "dd/mmm/yyyy") End Sub Sub tipo_objeto() Dim Hoja As Worksheet Set Hoja = Application.ActiveSheet MsgBox Hoja.Name End Sub Sub tipo_string() Dim Cadena As String Cadena = "EXCELeINFO" MsgBox Cadena End Sub Sub tipo_string2() Dim Cadena As String * 5 Cadena = "EXCELeINFO" MsgBox Cadena End Sub Sub tipo_variant() Dim Valor As Variant Dim Valor2 As Variant Valor = 1545487878.35 Valor2 = "Curso de macros EXCELeINFO" MsgBox Valor MsgBox Valor2 End Sub
Descargar archivo de ejemplo
014 – Variables, constantes y tipos de datos.zip
Si te gustó este tutorial por favor regístrate en nuestra Lista de correo y Suscríbete a nuestro canal de YouTube para que estés siempre enterado de lo nuevo que publicamos.