El Código Detrás de la Matriz

Ya sabes grabar, ahora toca crear. En esta lección aprenderemos a manejar la memoria de Excel (Variables), a tomar decisiones lógicas (If/Else) y a crear tus propias fórmulas personalizadas que ni los ingenieros de Microsoft imaginaron.

1. Variables: La Memoria de la Macro

Una variable es un espacio reservado en la memoria para guardar un dato temporalmente. Se declaran usando la palabra Dim.

Tipos de Datos Esenciales:
Tipo ¿Qué guarda? Ejemplo
Integer / Long Números enteros Cant. de hijos, Número de fila [cite: 104]
Double Decimales y moneda Precios, Porcentajes, Impuestos [cite: 104]
String Texto "Juan Pérez", "Calle 123" [cite: 104]
Boolean Lógica (Sí/No) True, False [cite: 104]
Dim precio As Double
Dim nombreCliente As String
precio = 500.50

2. Cerebro Digital: Toma de Decisiones (If)

Las macros no son lineales; pueden tomar decisiones usando If...Then...Else. Esto permite validar datos antes de procesarlos.

Ejemplo: Botón de Seguridad

Preguntar al usuario "¿Estás seguro?" antes de borrar algo.

If MsgBox("¿Borrar?", vbYesNo) = vbYes Then
    Range("A1").Clear
Else
    MsgBox "Cancelado"
End If [cite: 98-101]
¿Por qué es vital?

Sin esta estructura, una macro se ejecutaría ciegamente, pudiendo borrar datos importantes o calcular errores sin avisar.

3. Crea tus propias Fórmulas (UDF)

¿Cansado de anidar 5 funciones SI en Excel? Con VBA puedes crear Funciones Definidas por el Usuario (UDF).

Diferencia Clave: Sub vs Function
Sub (Macro)

Realiza acciones (copiar, pegar, formato). No devuelve valor. [cite: 88]

Function (Fórmula)

Realiza cálculos y devuelve un resultado a una celda. [cite: 89]

Ejemplo: Una función para calcular impuestos complejos.

Function CalcularImpuesto(monto As Double) As Double
    If monto > 1000 Then
        CalcularImpuesto = monto * 0.15
    Else
        CalcularImpuesto = monto * 0.10
    End If
End Function [cite: 93]

Uso en Excel: Escribes =CalcularImpuesto(A1) en cualquier celda.


Proyecto

El "Botón Inteligente"

Vamos a combinar Variables, InputBox y Lógica IF para crear una herramienta que aplique descuentos solo si el usuario tiene el código secreto.

Paso 1: El Código

Copia este código en un Módulo nuevo:

Sub AplicarDescuentoSeguro()
    Dim codigo As String
    Dim precio As Double

    ' 1. Pedir datos
    precio = ActiveCell.Value
    codigo = InputBox("Ingrese código de admin:", "Seguridad")

    ' 2. Validar contraseña
    If codigo = "PRO123" Then
        ActiveCell.Value = precio * 0.90 ' Aplica 10% dcto
        ActiveCell.Interior.Color = vbGreen
        MsgBox "Descuento aplicado", vbInformation
    Else
        MsgBox "Código Incorrecto", vbCritical
    End If
End Sub
Paso 2: La Prueba
  1. Escribe un precio (ej. 100) en la celda B5 y selecciónala.
  2. Inserta un botón (Programador > Insertar) y asígnale la macro AplicarDescuentoSeguro.
  3. Haz clic. Si escribes "PRO123", el 100 bajará a 90 y se pondrá verde. Si fallas, te dará error.
Volver al Temario