certmundo.
es‑mx

6 min de lectura

¿Cómo usar variables y tipos de datos en VBA?

Una variable en VBA es un espacio en memoria donde guardas un valor temporal para usarlo dentro de tu código.

Declararlas correctamente evita errores difíciles de detectar y hace que tus macros corran más rápido. En esta lección aprenderás a declarar variables con Dim, elegir el tipo de dato correcto y aplicarlos en cálculos reales de nómina e IVA.

Cómo declarar una variable con Dim

La palabra clave Dim (abreviatura de Dimension) reserva espacio en memoria para tu variable. La sintaxis básica es:

Dim nombreVariable As TipoDeDato

Siempre escribe Dim al inicio de tu procedimiento, antes de cualquier cálculo. Esto se llama declaración explícita y es la mejor práctica en VBA.

Ejemplo mínimo:

Sub EjemploBasico()
    Dim nombreEmpleado As String
    Dim salarioMensual As Double
    nombreEmpleado = "Ana Torres"
    salarioMensual = 18500
    MsgBox nombreEmpleado & " gana $" & Format(salarioMensual, "#,##0")
End Sub

El resultado en pantalla sería: Ana Torres gana $18,500.

Tipos de datos principales en VBA

Elegir el tipo correcto reduce el consumo de memoria y previene errores de cálculo. La siguiente tabla resume los más usados:

Tipo Uso típico Rango / Notas
Integer Números enteros pequeños -32,768 a 32,767
Long Números enteros grandes -2,147,483,648 a 2,147,483,647
Double Decimales (montos, porcentajes) Alta precisión
Currency Cantidades monetarias exactas Hasta 4 decimales fijos
String Texto Longitud variable o fija
Boolean Verdadero / Falso True o False
Date Fechas y horas 1/ene/100 a 31/dic/9999
Variant Cualquier tipo Más lento; evítalo cuando puedas

Regla práctica: usa Currency o Double para pesos mexicanos. Usa Long para contadores de filas en hojas con miles de registros.

Ejemplo 1 — Cálculo de IVA para una venta en Liverpool

Supón que tienes el precio antes de IVA de un artículo vendido en Liverpool y necesitas calcular el total.

Sub CalcularIVA()
    Dim precioBase    As Currency
    Dim tasaIVA       As Double
    Dim montoIVA      As Currency
    Dim precioTotal   As Currency

    precioBase  = 1200
    tasaIVA     = 0.16
    montoIVA    = precioBase * tasaIVA
    precioTotal = precioBase + montoIVA

    MsgBox "Precio base:  $" & Format(precioBase, "#,##0") & Chr(13) & _
           "IVA (16 %):   $" & Format(montoIVA, "#,##0") & Chr(13) & _
           "Total:        $" & Format(precioTotal, "#,##0")
End Sub

Salida simulada:

Precio base:  $1,200
IVA (16 %):   $192
Total:        $1,392

Nota el uso de Format(valor, "#,##0"). Esa función formatea el número con separador de miles para que la salida se vea profesional.

Ejemplo 2 — Nómina semanal en Bimbo

Ahora calcula el pago semanal de un repartidor que trabaja por hora. Este ejemplo usa tres tipos de datos distintos.

Sub NominaSemanal()
    Dim nombreRepartidor As String
    Dim horasTrabajadas  As Integer
    Dim pagoXHora        As Currency
    Dim totalSemanal     As Currency
    Dim esSindicalizado  As Boolean
    Dim bonoBienestar    As Currency

    nombreRepartidor = "Carlos Medina"
    horasTrabajadas  = 48
    pagoXHora        = 75
    esSindicalizado  = True
    bonoBienestar    = 0

    totalSemanal = horasTrabajadas * pagoXHora

    If esSindicalizado Then
        bonoBienestar = 350
        totalSemanal  = totalSemanal + bonoBienestar
    End If

    MsgBox "Empleado: " & nombreRepartidor & Chr(13) & _
           "Horas:    " & horasTrabajadas & Chr(13) & _
           "Bono:     $" & Format(bonoBienestar, "#,##0") & Chr(13) & _
           "Total:    $" & Format(totalSemanal, "#,##0")
End Sub

Salida simulada:

Empleado: Carlos Medina
Horas:    48
Bono:     $350
Total:    $3,950

El tipo Boolean controla la lógica sin necesitar números. Eso hace el código más legible y fácil de mantener.

Ejemplo 3 — Reporte de comisiones en FEMSA

Este ejemplo más completo combina variables de distintos tipos y escribe resultados directamente en celdas de Excel.

Sub ReporteComisiones()
    Dim vendedor       As String
    Dim ventasMes      As Currency
    Dim tasaComision   As Double
    Dim comision       As Currency
    Dim fechaCorte     As Date
    Dim filaDestino    As Long

    vendedor      = "Sofía Ramírez"
    ventasMes     = 95000
    tasaComision  = 0.035
    comision      = ventasMes * tasaComision
    fechaCorte    = #5/31/2025#
    filaDestino   = 2

    With ThisWorkbook.Sheets("Comisiones")
        .Cells(filaDestino, 1).Value = vendedor
        .Cells(filaDestino, 2).Value = ventasMes
        .Cells(filaDestino, 3).Value = comision
        .Cells(filaDestino, 4).Value = fechaCorte
    End With

    MsgBox "Comisión de " & vendedor & ": $" & Format(comision, "#,##0")
End Sub

Salida simulada en el mensaje:

Comisión de Sofía Ramírez: $3,325

Fíjate en la sintaxis de fecha: en VBA las fechas literales van entre almohadillas (#), no entre comillas.

Alcance de las variables

El alcance define desde dónde puedes leer o modificar una variable.

  • Local (procedimiento): declarada con Dim dentro de un Sub. Solo existe mientras ese Sub está activo.
  • Módulo: declarada con Dim o Private en la sección Declarations (arriba del primer Sub). Todos los procedimientos del módulo la pueden leer.
  • Global (proyecto): declarada con Public en la sección Declarations de cualquier módulo. Cualquier Sub o Function del libro la puede usar.

Usa el alcance más reducido posible. Esto evita que una variable sea modificada accidentalmente por otro procedimiento.

Constantes: valores que no cambian

Cuando un valor es fijo (como la tasa de IVA), usa Const en lugar de Dim.

Const TASA_IVA As Double = 0.16
Const SALARIO_MINIMO As Currency = 248.93

Las constantes se nombran en MAYÚSCULAS por convención. Si intentas cambiar su valor en tiempo de ejecución, VBA lanza un error de compilación. Eso es exactamente lo que quieres: proteger valores críticos.

Errores comunes

Error 1 — Usar Variant sin necesidad. Si declaras Dim monto As Variant y después asignas un número, VBA no sabe de inmediato si es texto o número. Eso puede causar sumas inesperadas o errores de tipo en cálculos. Siempre declara el tipo explícito.

Error 2 — Mezclar Integer con valores de nómina grandes. Un Integer solo llega hasta 32,767. Si el salario anual de un empleado es $180,000, VBA lanzará un error de desbordamiento (overflow). Usa Long o Currency para cualquier cantidad monetaria en pesos mexicanos.

Error 3 — Omitir Option Explicit. Sin Option Explicit activo, puedes escribir saalrio en lugar de salario y VBA creará una segunda variable vacía en silencio. El resultado del cálculo será $0 y no verás ningún aviso de error. Como viste en la lección anterior, activa esta opción desde Herramientas → Opciones → Requerir declaración de variables.

Error 4 — Formatear números como cadena demasiado pronto. Si conviertes un monto a String antes de terminar los cálculos, la suma aritmética fallará. Primero termina todos los cálculos numéricos; aplica Format() solo en el momento de mostrar o escribir el resultado.

Buenas prácticas para nombrar variables

Una convención clara hace que tu código sea legible para ti y para tus compañeros de equipo.

  • Usa camelCase: precioBase, totalNomina, fechaCorte.
  • Incluye el tipo como prefijo opcional: strNombre, curSalario, blnActivo.
  • Evita nombres de una sola letra, salvo contadores de bucle (i, j).
  • No uses espacios ni acentos en nombres de variables.

Resumen rápido de sintaxis

' Declaración simple
Dim nombreVariable As TipoDeDato

' Múltiples variables en una línea (cada una necesita su tipo)
Dim nombre As String, edad As Integer, salario As Currency

' Constante
Const TASA_ISR As Double = 0.30

' Variable de alcance global (en la sección Declarations del módulo)
Public contadorGlobal As Long

Declarar cada variable con su propio As TipoDeDato es obligatorio. Si escribes Dim a, b As Integer, solo b es Integer; a queda como Variant.

Puntos clave

  • Declara siempre tus variables con `Dim nombreVariable As TipoDeDato` antes de usarlas; esto evita errores silenciosos y mejora el rendimiento de tus macros.
  • Usa `Currency` o `Double` para cantidades en pesos mexicanos; nunca uses `Integer` para montos que puedan superar $32,767 o tendrás un error de desbordamiento.
  • Las constantes (`Const`) protegen valores fijos como la tasa de IVA (0.16) o el salario mínimo; si intentas modificarlos en tiempo de ejecución, VBA lanza un error de compilación de inmediato.
  • El alcance de una variable determina desde dónde puedes usarla: local (solo en su `Sub`), de módulo (todos los `Sub` del módulo) o global (`Public`). Usa siempre el alcance más reducido posible.
  • Aplica `Format(valor, "#,##0")` únicamente al momento de mostrar o imprimir resultados; mantén los cálculos en variables numéricas hasta el último paso.

Comparte esta lección: