Se define como Macro al conjunto de acciones que se realizan repetitivamente que, al ser almacenadas en un procedimiento, pueden ser activadas con simplemente pulsar una tecla.
Ahora, si hablamos únicamente de Macros en MS Excel, podemos de decir que una macro es una aplicación o subrutina hecha en Visual Basic for Applications, (VBA) que es almacenada en nuestra Hoja de Cálculo que al ser activa produce un resultado.
El objetivo de este post, es iniciarte en el mundo de macros en VBA, para que las grabes y posteriormente las uses en tus hojas de cálculo. En esta ocasión, el único software que necesito es MS Excel, en este caso la versión 2007, yo tengo la versión en inglés, pero funciona en español de la misma forma. Bueno, necesito que inicialices MS Excel.
Activar la Opción de Developer en MS Excel
Luego de iniciada la aplicación, debes de comprobar que tienes activada la opción de Developer, si no la tienes activada debes de activar el menú de opciones, dando clic en :

Luego, en la ventana que obtienes, ingresar a Excel Options,
Por último, en la ventana Popular, activar el check box de Show Developer tab in the Ribbon.
Pulsas Ok y en tu menú aparecerá la opción de Developer.
Creando un método
Lo que voy a hacer es acceder a la primera opción Visual Basic, donde podré codificar lo que necesite grabar como macro.
Cuando ingresamos a la opción anterior, accedemos a un editor, donde aparece sobre el lado izquierdo referencia a las Hojas (Sheets) que tenemos activas y también referencia a todo el libro (Workbook). Esto lo muestra por el siguiente motivo: Una macro puede ser definida para una hoja en especial (Sheet) o para todos las hojas (Workbook).
Yo voy a escoger ThisWorkBook y dar doble clic sobre el mismo para que se habilite la opción de crear una rutina.
Empezaremos programando una rutina bastante sencilla, como por ejemplo que muestre un mensaje.
Sub MensajeBienvenida()
MsgBox ("Hola, desde VBA")
End Sub
Si alguna vez programaste en Visual Basic, puedes apreciar que es bastante parecido.
Invocando el método creado
Para poder probar nuestro código creado, debemos de regresar a nuestro libro en Excel y vamos a colocar un botón, el cual estará asociado al método MensajeBienvenida.
Para regresar al libro de Excel, basta con pulsar la combinación de teclas Alt+F11.
Estando en el libro, accedemos al menú Developer y en la opción Insert, buscamos un botón para insertarlo en nuestra hoja.
Luego de colocar el botón y darle una dimensión (ancho y alto) con el mouse, inmediatamente te va a solicitar que lo asocies a una rutina, ya sea una nueva o una existente. En nuestro caso lo asociaremos a MensajeBienvenida.
Pulsa OK, para asociar el botón a la rutina que seleccionaste.
Una recomendación, si vas a empezar a colocar controles en tus hojas de MS Excel, debes de tener activado el botón de Diseño (Design Mode) de forma que puedas manipular los controles con facilidad, pero recuerda deshabilitarlo si quieres que el componente ejecute el método asociado.
Bueno, voy a ejecutar el botón, pulsando clic sobre el mismo.
Como puedes observar, al pulsar clic se obtiene un mensaje según el código que he colocado en el método MensajeBienvenida.
Algunas Rutinas Básicas
Ahora que ya sabes como asociar como crear tus propias rutinas en MS Excel, te dejo algunas rutinas clásicas para que te ayuden en tu labor.
Sumar los valores de una columna
Sub SumarTodoslosDatosdeUnaColuma() Dim ultimafila As Integer Dim Columna As Integer 'Capturamos en indice de lo Columna, el cual es ingresado en la Celda C1 Columna = Val(Cells(1, "C").Value) 'Calculamos la ultima fila ultimafila = Cells.SpecialCells(xlLastCell).Row Dim i As Integer Dim suma As Double suma = 0 'Sumamos los valores For i = 1 To ultimafila suma = suma + Cells(i, Columna).Value Next i ' Mostramos el resultado en una celda Cells(ultimafila + 1, Columna).Value = suma 'Sombreamos de rojo la Celda con el resultado Cells(ultimafila + 1, Columna).Interior.Color = RGB(255, 0, 0) 'Seleccionamos la celda para asignarle un tipo de borde Cells(ultimafila + 1, Columna).Select 'Cambiamos el borde superior de la celda a uno doble Selection.Borders(xlEdgeTop).LineStyle = xlDouble End Sub
Obtener los datos de la PC
Sub Mostrar_Datos_Del_Usuario() 'Nombre del Usuario Cells(1, 1).Value = Application.UserName 'Nombre de la Empresa Cells(2, 1).Value = Application.OrganizationName 'Sistema Operativo Cells(3, 1).Value = Application.OperatingSystem 'Impresora Activa Cells(4, 1).Value = Application.ActivePrinter End Sub
Eliminar Filas en Blanco
Sub Eliminar_Filas_En_Blanco()
Dim columna As Integer
'Indice de la columna en la que deseamos trabajar
columna = 1
Dim ultimafila As Integer
'Ultima Fila con datos
ultimafila = Cells.SpecialCells(xlCellTypeLastCell).Row
Dim i As Integer
'Seleccionamos una a una las filas de la columna.
Cells(1, columna).Select
For i = 1 To ultimafila
'Si no tiene datos, la eliminamos
If ActiveCell = "" Then
Selection.EntireRow.Delete
' Decrementamos el total de filas en uno
ultimafila = ultimafila - 1
Else
' Seleccionamos la siguiente celda
ActiveCell.Offset(1, 0).Select
End If
Next i
End Sub
Espero que este post sirva para que te inicies en la programación de macros en Excel, incrementando la funcionalidad de tus hojas de cálculo

Excelente Post, voy iniciando en esto de la programación en Excel y tambien on VBA.
Solo había programado en PHP y esto del Excel se me hace algo muy interesante.
Había leído otros foros, que aunque buenos, omiten cosas como estas… el simple hecho de como iniciar la función de programación.
La verdad que ni eso sabía.
Muchas gracias!
Saludos desde México.
Supririsgnly well-written and informative for a free online article.
como desplego un resultado en un formulario es decir que salga el total solamente en un formulario
Hola,
A qué te refieres con solamente en un formulario?, Me puedes dar mayor detalle.