Las macros en Excel permiten automatizar tareas repetitivas, como el procesamiento de datos, la generación de reportes, o cualquier otra tarea que involucre múltiples pasos manuales. Una macro es esencialmente una secuencia de instrucciones programadas en VBA (Visual Basic for Applications) que puede ejecutarse automáticamente para realizar esas tareas.
Pasos para crear y usar macros en Excel:
Activar la pestaña de Desarrollador
Como habilitar la pestaña programador o desarrollador en Excel
Para trabajar con macros, debes activar la pestaña de Desarrollador:
Ve a Archivo > Opciones > Personalizar cinta de opciones.
En el panel derecho, marca la casilla Desarrollador y haz clic en Aceptar.
Grabar una macro
Si no tienes experiencia programando, puedes usar la función de grabación para crear una macro. Excel registrará todos los pasos que realices.
Ve a la pestaña Desarrollador y haz clic en Grabar macro.
Asigna un nombre a la macro (sin espacios) y, si quieres, un atajo de teclado para activarla rápidamente.
Realiza las acciones que deseas automatizar (por ejemplo, dar formato a celdas, aplicar fórmulas, etc.).
Cuando termines, haz clic en Detener grabación.
Ver y editar el código VBA
Una vez grabada la macro, puedes ver y modificar el código en VBA:
Ve a Desarrollador > Visual Basic o presiona Alt + F11.
En el editor de VBA, encontrarás el módulo de la macro grabada. Aquí puedes refinar o personalizar el código.
Ejecutar la macro
Puedes ejecutar una macro desde la pestaña Desarrollador haciendo clic en Macros, seleccionando la que quieras, y luego en Ejecutar.
También puedes usar el atajo de teclado que configuraste o crear un botón en la hoja de cálculo que active la macro.
Aquí tienes una tabla con los 30 comandos principales que se utilizan comúnmente en macros de Excel mediante VBA. Estos comandos son útiles para seleccionar celdas, manipular datos, formatear hojas, controlar flujos y automatizar tareas repetitivas.
Range("A1").Select | Selecciona una celda o rango en la hoja activa. |
Cells(1, 1).Select | Selecciona una celda usando índices de fila y columna. |
Selection.Copy | Copia el rango seleccionado. |
Selection.Paste | Pega el contenido copiado en el rango seleccionado. |
ActiveSheet.Paste | Pega el contenido en la hoja activa. |
Application.CutCopyMode = False | Cancela el modo de cortar/copiar para liberar el portapapeles. |
ActiveCell.Value = "Text" | Asigna un valor a la celda seleccionada. |
ActiveCell.Offset(1, 0).Select | Mueve la selección de la celda una fila abajo o un número de filas y columnas definidas. |
Range("A1:B2").Copy | Copia un rango de celdas. |
Range("C1").PasteSpecial | Pega con opciones avanzadas, como valores, formato o fórmula. |
ActiveSheet.Name = "NewName" | Cambia el nombre de la hoja activa. |
Sheets("Sheet1").Select | Selecciona una hoja por su nombre. |
Rows(1).Delete | Elimina la fila especificada. |
Columns("A").Delete | Elimina la columna especificada. |
Range("A1").ClearContents | Limpia el contenido de la celda seleccionada sin eliminar el formato. |
ActiveCell.FormulaR1C1 = "=SUM(R[-1]C:R[-2]C)" | Asigna una fórmula en formato R1C1 a la celda activa. |
Range("A1").Font.Bold = True | Aplica formato de texto en negrita a la celda seleccionada. |
Range("A1").Interior.Color = RGB(255, 0, 0) | Cambia el color de fondo de la celda. |
Range("A1").Borders.LineStyle = xlContinuous | Agrega bordes a una celda o rango. |
Range("A1").NumberFormat = "0.00" | Establece el formato numérico de la celda. |
If ... Then ... Else ... End If | Estructura condicional para realizar diferentes acciones según condiciones. |
For Each ... Next | Bucle que recorre una colección de celdas, hojas, o libros. |
Do ... Loop | Bucle que se ejecuta mientras una condición sea verdadera. |
With ... End With | Agrupa una serie de acciones para el mismo objeto o rango. |
MsgBox "Text" | Muestra un cuadro de mensaje con un texto personalizado. |
InputBox("Enter value") | Solicita al usuario ingresar un valor a través de un cuadro de diálogo. |
Application.ScreenUpdating = False | Desactiva la actualización de pantalla para acelerar el procesamiento de la macro. |
Application.DisplayAlerts = False | Desactiva los mensajes de alerta (por ejemplo, para evitar mensajes de confirmación al eliminar). |
Workbooks.Open "C:\File.xlsx" | Abre un archivo de Excel existente. |
Workbooks.Add | Crea un nuevo archivo de Excel. |
ActiveWorkbook.SaveAs "C:\NewFile.xlsx" | Guarda el archivo actual con un nuevo nombre o ubicación. |
Estos comandos son la base para crear macros más complejas en Excel. Con ellos, puedes automatizar una amplia gama de tareas, desde operaciones básicas de celdas hasta la gestión de archivos y hojas.
Proyecto jurisdicciones
Sub Macro1prueba()
'
' Macro1prueba Macro
'
'
Range("T221").Select
ActiveCell.FormulaR1C1 = "903"
Range("T221").Select
Selection.Copy
Range("T221:T223").Select
ActiveSheet.Paste
ActiveSheet.Paste
Application.CutCopyMode = False
Range("T224").Select
ActiveCell.FormulaR1C1 = "906"
Range("T225").Select
ActiveCell.FormulaR1C1 = "906"
Range("T226").Select
ActiveWindow.SmallScroll Down:=6
ActiveCell.FormulaR1C1 = "907"
Range("T226").Select
Selection.Copy
Range("T226:T230").Select
ActiveSheet.Paste
ActiveSheet.Paste
Application.CutCopyMode = False
ActiveWindow.SmallScroll Down:=6
Range("T231").Select
ActiveCell.FormulaR1C1 = "904"
Range("T231").Select
Selection.Copy
Range("T231:T269").Select
ActiveSheet.Paste
Application.CutCopyMode = False
ActiveWindow.SmallScroll Down:=48
Range("T270").Select
ActiveCell.FormulaR1C1 = "905"
Range("T271").Select
ActiveCell.FormulaR1C1 = "905"
Range("T272").Select
ActiveCell.FormulaR1C1 = "908"
Range("T272").Select
Selection.Copy
Range("T272:T278").Select
ActiveSheet.Paste
ActiveSheet.Paste
Application.CutCopyMode = False
ActiveWindow.SmallScroll Down:=6
Range("T279").Select
ActiveCell.FormulaR1C1 = "910"
Range("T280").Select
ActiveCell.FormulaR1C1 = "911"
Range("T280").Select
Selection.Copy
Range("T280:T282").Select
ActiveSheet.Paste
ActiveSheet.Paste
Application.CutCopyMode = False
ActiveWindow.SmallScroll Down:=6
Range("T283").Select
ActiveCell.FormulaR1C1 = "913"
Range("T283").Select
Selection.Copy
Range("T283:T288").Select
ActiveSheet.Paste
ActiveSheet.Paste
Application.CutCopyMode = False
ActiveWindow.SmallScroll Down:=3
Range("T289").Select
ActiveCell.FormulaR1C1 = "914"
Range("T289").Select
Selection.Copy
Range("T289:T295").Select
ActiveSheet.Paste
ActiveSheet.Paste
Application.CutCopyMode = False
ActiveWindow.SmallScroll Down:=6
Range("T296").Select
ActiveCell.FormulaR1C1 = "915"
Range("T296").Select
Selection.Copy
Range("T296:T301").Select
ActiveSheet.Paste
ActiveSheet.Paste
Application.CutCopyMode = False
ActiveWindow.SmallScroll Down:=9
Range("T302").Select
ActiveCell.FormulaR1C1 = "916"
Range("T302").Select
Selection.Copy
Range("T302:T312").Select
ActiveSheet.Paste
ActiveSheet.Paste
Application.CutCopyMode = False
ActiveWindow.SmallScroll Down:=6
Range("T313").Select
ActiveCell.FormulaR1C1 = "917"
Range("T313").Select
Selection.Copy
Range("T313:T315").Select
ActiveSheet.Paste
ActiveSheet.Paste
Application.CutCopyMode = False
ActiveWindow.SmallScroll Down:=9
Range("T316").Select
ActiveCell.FormulaR1C1 = "919"
Range("T316").Select
Selection.Copy
Range("T316:T321").Select
ActiveSheet.Paste
ActiveSheet.Paste
Application.CutCopyMode = False
ActiveWindow.SmallScroll Down:=9
Range("T322").Select
ActiveCell.FormulaR1C1 = "920"
Range("T323").Select
ActiveCell.FormulaR1C1 = "921"
Range("T323").Select
Selection.Copy
Range("T324:T357").Select
ActiveSheet.Paste
Application.CutCopyMode = False
ActiveWindow.SmallScroll Down:=39
End Sub
Comandos principales:
Range().Select: Selecciona un rango de celdas.
ActiveCell.FormulaR1C1: Asigna un valor o fórmula a la celda seleccionada.
Selection.Copy: Copia el contenido de la celda o rango seleccionado.
ActiveSheet.Paste: Pega el contenido copiado en el rango seleccionado.
Application.CutCopyMode = False: Cancela el modo de copiar/cortar para evitar mantener activado el portapapeles.
ActiveWindow.SmallScroll: Desplaza la vista de la ventana en la hoja activa.