Inicio / Excel / Excel Avanzado: Power User / VBA: fundamentos de programación en Excel

VBA: fundamentos de programación en Excel

Variables, bucles, condicionales y manipulación de rangos con VBA.

Avanzado
🔒 Solo lectura
📖

Estás en modo lectura

Puedes leer toda la lección, pero para marcar progreso, hacer ejercicios y ganar XP necesitas una cuenta Pro.

Desbloquear por $9/mes

VBA: fundamentos de programación en Excel

Visual Basic for Applications permite automatizar cualquier tarea en Excel con código.

El editor VBA

Alt+F11 abre el editor.

Estructura del proyecto

VBAProject (MiArchivo.xlsm)
├── Microsoft Excel Objects
│   ├── ThisWorkbook (eventos del libro)
│   ├── Hoja1 (eventos de la hoja)
│   └── Hoja2
├── Modules
│   ├── Modulo1 (código general)
│   └── Modulo2
└── Forms (formularios de usuario)

Ventana Inmediato (Ctrl+G)

Ejecuta código línea por línea para pruebas:

? 2 + 2
? Range("A1").Value
? ActiveSheet.Name

Variables y tipos de datos

Dim nombre As String
Dim edad As Integer
Dim precio As Double
Dim activo As Boolean
Dim fecha As Date
Dim rango As Range
Dim hoja As Worksheet
Dim libro As Workbook

Option Explicit

Siempre incluye al inicio del módulo:

Option Explicit

Obliga a declarar todas las variables, previniendo errores de tipeo.

Estructuras de control

IF

If celda.Value > 100 Then
    celda.Interior.Color = RGB(0, 255, 0)
ElseIf celda.Value > 50 Then
    celda.Interior.Color = RGB(255, 255, 0)
Else
    celda.Interior.Color = RGB(255, 0, 0)
End If

Select Case

Select Case calificacion
    Case Is >= 90
        resultado = "A"
    Case Is >= 80
        resultado = "B"
    Case Is >= 70
        resultado = "C"
    Case Else
        resultado = "F"
End Select

For Next

Dim i As Long
For i = 1 To 100
    Cells(i, 1).Value = i * 2
Next i

For Each

Dim celda As Range
For Each celda In Range("A1:A100")
    If celda.Value < 0 Then
        celda.Font.Color = RGB(255, 0, 0)
    End If
Next celda

Do While / Do Until

Dim fila As Long
fila = 1
Do While Cells(fila, 1).Value <> ""
    ' procesar fila
    fila = fila + 1
Loop

Trabajar con rangos

' Seleccionar
Range("A1:D10").Select
Cells(1, 1).Select           ' fila 1, columna 1

' Leer y escribir
valor = Range("A1").Value
Range("B1").Value = "Hola"

' Última fila con datos
ultimaFila = Cells(Rows.Count, 1).End(xlUp).Row

' Última columna con datos
ultimaCol = Cells(1, Columns.Count).End(xlToLeft).Column

' Rango dinámico
Set rng = Range("A1:D" & ultimaFila)

' Región actual (datos contiguos)
Set rng = Range("A1").CurrentRegion

' Copiar y pegar
Range("A1:D10").Copy Destination:=Range("F1")

' Limpiar
Range("A1:D10").ClearContents  ' solo valores
Range("A1:D10").Clear          ' todo (formato incluido)

Trabajar con hojas y libros

' Hojas
Dim ws As Worksheet
Set ws = ThisWorkbook.Sheets("Datos")
ws.Activate
ws.Range("A1").Value = "Test"

' Agregar hoja
Dim nuevaHoja As Worksheet
Set nuevaHoja = ThisWorkbook.Sheets.Add
nuevaHoja.Name = "Resultados"

' Libros
Dim wb As Workbook
Set wb = Workbooks.Open("C:\ruta\archivo.xlsx")
wb.Close SaveChanges:=True

Procedimientos Sub y Function

Sub (no devuelve valor)

Sub FormatearTabla()
    With Range("A1:E1")
        .Font.Bold = True
        .Interior.Color = RGB(0, 102, 204)
        .Font.Color = RGB(255, 255, 255)
    End With
End Sub

Function (devuelve valor)

Function CalcularIVA(monto As Double) As Double
    CalcularIVA = monto * 0.16
End Function

Puedes usar funciones VBA directamente en celdas:

=CalcularIVA(A2)

MsgBox e InputBox

' Mensaje
MsgBox "Proceso completado", vbInformation, "Éxito"

' Confirmación
respuesta = MsgBox("¿Continuar?", vbYesNo + vbQuestion, "Confirmar")
If respuesta = vbYes Then
    ' continuar
End If

' Entrada de usuario
nombre = InputBox("Ingrese su nombre:", "Datos")

Resumen

VBA es el lenguaje de automatización nativo de Excel. Con variables, bucles, condicionales y manipulación de rangos puedes automatizar prácticamente cualquier tarea. La clave es empezar simple, usar Option Explicit, y construir gradualmente.

🔒

Ejercicio práctico disponible

Lógica de programación aplicada a Excel

Desbloquear ejercicios
// Lógica de programación aplicada a Excel
// Desbloquea Pro para acceder a este ejercicio
// y ganar +50 XP al completarlo

function ejemplo() {
    // Tu código aquí...
}

¿Te gustó esta lección?

Con Pro puedes marcar progreso, hacer ejercicios, tomar quizzes, ganar XP y obtener tu constancia.

Ver planes desde $9/mes