Variables VBA Excel

Las variables permiten almacenar cualquier tipo de información.

Por ejemplo:

'Ver el valor de la variable en una ventana emergente
Sub variables()
    'Declarar la variable
    Dim my_variable As Integer
    'Asignar un valor a la variable
    my_variable = 9
    'Mostrar el valor de mi_variable en un MsgBox
    MsgBox my_variable
End Sub

Cómo declarar variables en vba Excel

La primera línea de código declara la variable (generalmente se coloca al principio del procedimiento).

Dim my_variable As Integer

  • Dim: declara la variable
  • mi_variable: el nombre elegido para esta variable (sin espacios)
  • As: declara el tipo de la variable
  • Integer: tipo de variable

Declarar estas variables no es necesario, pero es recomendable. Hace más fácil encontrarlas, puede ayudar a resolver problemas, etc. En resumen, es una bueno acostumbrarse a declarar las variables correctamente.

El tipo de una variable indica la naturaleza de su contenido (texto, números, fecha, etc.).

A continuación, se da un valor a la variable:

my_variable = 9

Por último, el valor de la variable se muestra en una venta emergente:

MsgBox my_variable

MsgBox "value" es la forma más sencilla de mostrar un valor en una ventana emergente.

Entraremos en más detalle sobre los cuadros de diálogo en las próximas lecciones...

El código dará este resultado:

Variables en VBA Excel


Si todavía no entiendes para qué sirve el uso de estas variables, no te preocupes, los ejemplos introducidos en las siguientes lecciones demostrarán su utilidad ...

LOS TIPOS DE VARIABLES

NombreTipoDetalles
StringTextoTexto
IntegerNuméricoNúmero entero entre -32'768 y 32'767.
LongNuméricoNúmero entero entre - 2'147'483'648 y 2'147'483'647.
DoubleNuméricoNúmero decimal flotante entre -1,79769313486232E308 y 1,79769313486232E308.
SingleNuméricoNúmero decimal flotante entre -3,402823E38 y 3,402823E38.
CurrencyNuméricoNúmero decimal fijo entre -922'337'203'685'477.5808 y 922'337'203'685'477.5807.
ByteNuméricoNúmero entero entre 0 y 255.
BooleanBooleanVerdadero o Falso
ObjectObjetoObjeto
DateFechaFecha y Hora
VariantCualquier TipoCualquier tipo de dato (Por defecto si no se declara la variable).

Ejemplos de variables en vba Excel

Algunos ejemplos con diferentes tipos de variables:

'Ejemplo: número entero
Dim nbInteger As Integer
nbInteger = 12345
    
'Ejemplo: número decimal
Dim nbComma As Single
nbComma = 3.14159

'Ejemplo: texto
Dim varText As String
varText = "Excdemy"

'Ejemplo: fecha
Dim varDate As Date
varDate = "26.07.2021"

'Ejemplo: Verdadero/Falso
Dim varBooleano As Boolean
varBooleano = True
    
'Ejemplo: objeto (objeto de hoja de cálculo para este ejemplo)
Dim varSheet As Worksheet
Set varSheet = Sheets("Hoja2") 'Set => asignar un valor a una variable de objeto
    
'Ejemplo de cómo utilizar las variables de objeto: activando la hoja
varSheet.Activate

Podemos utilizar  símbolos que pueden utilizarse para acortar nuestras declaraciones de variables.

Para facilitar la lectura, no los usaremos en las lecciones, pero aquí hay un ejemplo de todos modos:

Dim ejemplo As Integer
Dim ejemplo%

Estas dos líneas son idénticas.

Es posible forzar la declaración de variables poniendo la opción Explicit justo al principio de un módulo (de esta manera se mostrará un mensaje de error si se ha olvidado de declarar alguna variable).

Ejercicio práctico de variables en VBA

Ahora crearemos, paso a paso, una macro que recupere un apellido de la celda A2, un nombre de la celda B2, una edad de la celda C2, y los muestre en una ventna emergente.

Empezaremos declarando las variables (todas en la misma línea, separadas por comas):

Sub variables()
    'Declaración de variables
    Dim Apellido As String, Nombre As String, Edad As Integer
    
End Sub

Posteriormente, asignamos valores a las variables mediante Celdas:

Sub variables()
    'Declaración de variables
    Dim Apellido As String, Nombre As String, Edad As Integer
    
    'Valores de las variables
    Apellido = Cells(21)
    Nombre = Cells(22)
    Edad = Cells(23)
End Sub

Mostrar variables vba en ventana emergente

Por último, mostraremos los resultados en una ventana emergente, utilizando el operador "&" para concatenar los valores (como en Excel).

Sub variables()
    'Declaración de variables
    Dim Apellido As String, Nombre As String, Edad As Integer
    
    'Valores de las variables
    Apellido = Cells(21)
    Nombre = Cells(22)
    Edad = Cells(23)
    
    'Cuadro de diálogo
    MsgBox Nombre & " " & Apellido & "" & Edad & " años de edad"
End Sub

El resultado:


Mostrar resultados en una ventana emergente con VBA


El siguiente paso es mostrar en una ventana emergente la fila de la tabla indicada por el número de la celda D1.

Este es el objetivo, en función del Número introducido en "D1" Obtener el resultado:


Mostrar resultados en un cuadro de diálogo con VBA


Tómate un momento para intentar resolver este problema por si mismo antes de ver la solución de abajo...


La solución:

Sub variables()
    'Declaración de variables
    Dim Apellido As String, Nombre As String, Edad As Integer, Num_fila As Integer
        
    'Valores de las variables
    Num_fila = Range("D1") + 1 
    Apellido = Cells(Num_fila1)
    Nombre = Cells(Num_fila2)
    Edad = Cells(Num_fila3)
    
    'Cuadro de diálogo
    MsgBox Nombre & " " & Apellido & "" & Edad & " años de edad"
End Sub

Agrega una variable:

'Declaración de variables
Dim Apellido As String, Nombre As String, Edad As Integer, Num_fila As Integer

La variable Num_fila tomará ahora el valor de la celda D1, a la que hemos añadido 3 (para no obtener datos de la primera fila, que contiene los títulos de la tabla), de modo que Num_fila tendrá como valor el número de fila de las celdas que nos interesan:

Num_fila = Range("D1") + 1

Sólo nos tenemos que sustituir el número de fila en el comando "Cells" por nuestra variable:

Apellido = Cells(Num_fila1)
Nombre = Cells(Num_fila2)
Edad = Cells(Num_fila3)

Ahora nuestra macro muestra la fila que nos interesa de la tabla.




Desde luego, ten en cuenta que podemos reducir este procedimiento a una sola línea de código:

Sub variables()
    MsgBox Cells(Range("F5")+1,1) & " " & Cells(Range("F5")+1,2) & "" & Cells(Range("F5")+1,3) & " years old"
End Sub

Aunque el código funcionará perfectamente, es mucho menos legible que la versión anterior y más difícil de rehacer (para asegurarnos de que nuestro código es fácil de entender, no lo abreviaremos de esta manera en estas lecciones).