Como crear una Macro de Excel





Como crear una macro, como crear una macro de Excel, como aprender a crear una macro de Excel con VBA, tutorial gratis sobre como crear una macro, forma de crear una macro de Excel, curso de creación de macros, como crear una macro desde el inicio, Manipular código de VBA, como programar una macro de Excel; como modificar el código de una macroprogramar Excel; todas estas preguntas tienen su respuesta en este post.

Antes de seguir recomiendo leer un excelente libro sobre Excel que te ayudará operar las planillas u hojas de cálculo, haz click acá, si quieres aprender sobre Excel, en inglés, entonces debes hacer click here. Si lo que necesitas es aprender o profundizar sobre la programación de macros con VBA este es unos de los mejores cursos on line que he visto en internet.

  

No se pretende hacer un curso avanzado ni una gran exposición teórica sobre macros de VBA, sino enseñar a crear una macro de Excel desde cero, pero desde un punto de vista totalmente práctico, es muy claro que es necesario algo teoría, pero básicamente voy a dar un enfoque meramente práctico a lo aquí expuesto.

Básicamente existen dos caminos para crear una macro de Excel, el más fácil y por ende más limitado, es utilizar la grabadora de macros que trae incorporada Excel, mediante esta herramienta se está condicionado a los movimiento o acciones que podamos hacer con el mause o teclado; es decir si seleccionamos un rango ese rango se podrá seleccionar nuevamente ya que se grabará un código que así lo determina, pero si quisiéramos hacer algo más complejo con las macros la grabadora de macros queda obsoleta, para ello tenemos que recurrir a la programación en VBA, lo cual es más difícil, ya que requiere un cierto conocimiento sobre macros o programación en VBA para poder realizar o modificar alguna macro ya hecha como por ejemplo las macros de este listado.

Comencemos con la grabadora de macro, para poder grabar una macro con esta herramienta provista por Excel se necesita tener habilitado el menu programador, en caso que no este habilitado se debe ir a la pestaña archivos, luego a opciones y por último personalizar cinta de opciones, ahí se debe tildar donde dice programador en las opciones de la derecha, en la figura siguiente se muestra en forma gráfica los pasos expuestos para que aparezca el menu programador.




Una vez habilitado el menu programandor, al presionarlo aparece en la cinta de opciones un pequeño ícono que dice "grabar macro" (ver la imagen de abajo), si hacemos click en dicho ícono se abre un cuadro de diálogo para que asignemos nombre a la macro, por defecto siempre sale escrito "macro1" si ya grabamos una macro sale "macro2" y así sucesivamente; una vez hecho esto la grabadora queda en funcionamiento y se graban o mejor dicho se codifica todo lo que seleccionemos, escribamos y demás comandos que ejecutemos con el mause y teclado; para detener la grabación se debe presionar el mismo botón que ahora dice "Detener Grabación".


Antes de continuar, recomiendo que leas un excelente libro sobre Excel el que te ayudará operar las planillas de cálculo, haz click acá, si quieres aprender sobre Excel, en inglés, entonces debes hacer click here. Si lo que necesitas es aprender o profundizar sobre la programación de macros con VBA este es unos de los mejores cursos on line que he visto en internet.

Bien ahora te voy a mostrar el código que genera la grabadora de macros, vamos a realizar algo sencillo como es escribir un nombre, cambiar la fuente y su tamaño, poner negrita seleccionar la celda H100, hacer scroll con el mause para ver dicha celda y seleccionar la celda A1, el código de VBA que genera la grabadora de macros es el siguiente:

Sub Macro1()
' Macro1 Macro

    Range("A2").Select
    ActiveCell.FormulaR1C1 = "Dayra Col"
    Range("A3").Select
    ActiveCell.FormulaR1C1 = "Tomy Lee"
    Range("A2:A3").Select
    With Selection.Font
        .Name = "Calibri"
        .Size = 20
        .Strikethrough = False
        .Superscript = False
        .Subscript = False
        .OutlineFont = False
        .Shadow = False
        .Underline = xlUnderlineStyleNone
        .ThemeColor = xlThemeColorLight1
        .TintAndShade = 0
        .ThemeFont = xlThemeFontMinor
    End With
    Selection.Font.Bold = True
    ActiveWindow.SmallScroll Down:=78
    Range("H100").Select
    ActiveWindow.SmallScroll Down:=-111
    Range("A1").Select
End Sub

Ahora explico paso por paso que hace cada parte del código, debes tener en cuenta lo que se expuso más arriba de lo que se iba a realizar para que la grabadora genere el código.

Toda macro empieza con "Sub nombremacro()" y termina con "End Sub", en el código anterior todo texto que tenga apostrofe ( ' ) es un comentario solamente y no incide en el código; nuestra macro empieza con

Sub Macro1()

Debes notar que en el nombre de la macro está escrito el nombre que le dimos en el cuadro de diálogo que salió al presionar grabar macro; la macro  termina con

End Sub

Esta parte del código  nos dice que seleccionemos la celda A2 luego escribamos en ella "Dayra Col"; luego seleccionemos la celda A3 y escribamos "Tomy Lee"; posteriormente seleccionamos el rango A2:A3.

    Range("A2").Select
    ActiveCell.FormulaR1C1 = "Dayra Col"
    Range("A3").Select
    ActiveCell.FormulaR1C1 = "Tomy Lee"
    Range("A2:A3").Select

Si se quisiera cambiar el rango seleccionado, se podría manipular el código y cambiar el rango donde se escribe por ejemplo el código establece que se debe seleccionar el rango A2, pero si quisiéramos que "Dayra Col" se escriba en el rango E15, deberíamos usar cambiar el siguiente código:

 Range("A2").Select
 ActiveCell.FormulaR1C1 = "Dayra Col"

Por este otro código:

 Range("E15")= "Dayra Col"


Luego de la selección se elige la fuente denominada"Calibri" y le da un tamaño 20, posteriormente pone en negrita el texto del rango seleccionado, esto es lo que está ordenando entre otras cosas hacer en el siguiente código.

With Selection.Font
        .Name = "Calibri"
        .Size = 20
        .Strikethrough = False
        .Superscript = False
        .Subscript = False
        .OutlineFont = False
        .Shadow = False
        .Underline = xlUnderlineStyleNone
        .ThemeColor = xlThemeColorLight1
        .TintAndShade = 0
        .ThemeFont = xlThemeFontMinor
    End With
Selection.Font.Bold = True


Para finalizar se da un scroll de 78 y seleccionamos la celda H100, el scroll se hace con la rueda del mause, permite para bajar las celdas y poder visualizar donde esta la celda H100, por último se selecciona la celda A1, dando un scroll de -111 es decir llevamos la página hacia arriba para poder ver la celda A1; esto es lo que ordena hacer el código que está más abajo.

    ActiveWindow.SmallScroll Down:=78
    Range("H100").Select
    ActiveWindow.SmallScroll Down:=-111
    Range("A1").Select

Para terminar con el tema de la grabadora de macros y pasar a ver como se puede escribir o manipular el código de una macro, cabe aclarar que la grabadora genera aveces un código demasiado largo que puede ser simplificado si es escrito en vez de usar el código que genera la grabadora.

Seguidamente vamos a realizar lo mismo que se hizo con la grabadora es decir escribir en la celda A2 "Dayra Col" en la celda A3 "Tomy Lee", darle un tamaño de 20 y fuente "Calibri", poner el texto en negrita; posteriormente seleccionar la celda H100 y luego A1.

Para escribir el código debemos presionar Alt+F11 con ello se muestra el editor de VBA, tal cual se muestra en la imagen de abajo; una vez cargado el editor de VBA debemos insertar un módulo, para ello vamos al menu insertar, se despliega un submenu, desde ahí debemos insertar módulo, luego en la parte derecha comenzamos a escribir el código que sigue:



Sub Macro2()
Range("A2") = "Dayra Col"
Range("A3") = "Tomy Lee"
Range("A2:A3").Font.Size = 20
Range("A2:A3").Font.Name = "Calibri"
Range("A2:A3").Font.Bold = True
Range("H100").Select
Range("A1").Select
End Sub


Como podemos observar el código escrito directamente en el editor de VBA hace lo mismo que el realizado con la grabadora de macros, sin embargo la codificación de la macro es mucho más simple, desde aquí puedes descargar el ejemplo y ver como funciona.


Para terminar vamos a mostrar un código un poquito más complejo, es bastante útil ya que se presenta un formulario para introducir datos en la celda, primero se va a mostrar el código completo y luego se va a desglosar para explicar paso a paso que realiza cada parte del código o macro.

El vídeo que sigue muestra una explicación más detallada y gráfica de la macro presentada, recomiendo observar para una más fácil comprensión de la macro; suscribe a nuestra web desde la parte superior derecha de la página ingresando tu mail y a nuestro canal de You Tube para recibir en tu correo vídeos explicativos sobre macros interesantes, como  por ejemplo formulario que crea un listado de todas las hojas para poder luego seleccionarlasbuscar en listbox mientras escribes en textboxordenar hojas libro excel por su nombreconectar Excel con Access y muchos ejemplos más.





Código que se inserta en un módulo

Sub CargaFormulario()
    Load UserForm1
    UserForm1.Show
End Sub


Código que se inserta en un formulario



Private Sub CommandButton1_Click()
'Inserta fila
Selection.EntireRow.Insert
'LimpiaLimpia Los Textbox
TextBox1 = Empty
TextBox2 = Empty
TextBox3 = Empty
TextBox4 = Empty
TextBox5 = Empty
'Envia el cursor al Textbox1 para volver a capturar los datos
TextBox1.SetFocus
End Sub

Private Sub CommandButton2_Click()
Unload Me
End Sub

Private Sub TextBox1_Change()
Range("a2").Select
ActiveCell.FormulaR1C1 = TextBox1
End Sub

Private Sub TextBox2_Change()
Range("b2").Select
ActiveCell.FormulaR1C1 = TextBox2
End Sub

Private Sub TextBox3_Change()
Range("c2").Select
ActiveCell.FormulaR1C1 = TextBox3
End Sub
Private Sub TextBox4_Change()
Range("d2").Select
ActiveCell.FormulaR1C1 = TextBox4
End Sub
Private Sub TextBox5_Change()
Range("e2").Select
ActiveCell.FormulaR1C1 = TextBox5
End Sub


Bien ahora explicaré que realiza cada parte del código presentado, este código se debe insertar en un módulo, lo que hace es cargar el formulario1 o Userform1 y mostrarlo, para ello en el ejemplo encontrarás un botón que tiene asignada esta macro y que permite mostrar el formulario al presionar el mismo.

Sub CargaFormulario()
    Load UserForm1
    UserForm1.Show
End Sub

La siguiente codificación va en un formulario, para insertar un formulario se debe seguir los mismos pasos para insertar un módulo, pero en vez de módulo elegir userform.

El código que se muestra a continuación pertenece al botón insertar del formulario, lo que hace es insertar una fila entera en el rango seleccionado actualmente; luego limpia los textbox del 1 al 5 y deja listo para ingresar el nuevo registro, por último hace que el cursor se posicione en el textbox1.


Private Sub CommandButton1_Click()
'Inserta fila
Selection.EntireRow.Insert
'LimpiaLimpia Los Textbox
TextBox1 = Empty
TextBox2 = Empty
TextBox3 = Empty
TextBox4 = Empty
TextBox5 = Empty
'Envia el cursor al Textbox1 para volver a capturar los datos
TextBox1.SetFocus
End Sub


Código que se asigna al botón cancelar, al presionarlo hace que se oculte o cierre el formulario.

Private Sub CommandButton2_Click()
Unload Me
End Sub


Código que maneja el textbox1, lo que realiza lo hace justo en el evento change o cuando cambia se modifica el textbox1, en este caso selecciona la celda A2 y luego hace que el valor del textbox1 se copie en la celda A2.

Private Sub TextBox1_Change()
Range("a2").Select
ActiveCell.FormulaR1C1 = TextBox1
End Sub


Esta codificación se inserta en el textbox2, selecciona la celda B2 y luego hace que el valor del textbox2 se copie en la celda B2.

Private Sub TextBox2_Change()
Range("b2").Select
ActiveCell.FormulaR1C1 = TextBox2
End Sub


Esta código se inserta en el textbox3, selecciona la celda C2 y luego hace que el valor del textbox3 se copie en la celda C2.

Private Sub TextBox3_Change()
Range("c2").Select
ActiveCell.FormulaR1C1 = TextBox3
End Sub


Esta código se inserta en el textbox4, selecciona la celda D2 y luego hace que el valor del textbox4 se copie en la celda D2.

Private Sub TextBox4_Change()
Range("d2").Select
ActiveCell.FormulaR1C1 = TextBox4
End Sub


Esta código se inserta en el textbox5, selecciona la celda E2 y luego hace que el valor del textbox5 se copie en la celda E2.

Private Sub TextBox5_Change()
Range("e2").Select
ActiveCell.FormulaR1C1 = TextBox5
End Sub


Te invito, desde el link del final, a descargar el archivo de ejemplo de esta manera podrás ver su funcionamiento en forma más detallada. Resumiendo, el código de VBA o Macro de Excel presentado al último muestra un formulario desde el cual se pueden ingresar datos a una base de datos de Excel, desde ya que está a modo de ejemplo y admite muchas mejoras, pero es un buen punto de partida si estás por programar algún formulario que permita manipular e ingresar datos, en el sitio encontrarás muchos ejemplos que te ayudarán a programar tu macro, en los links siguientes hay otros post de utilidad y ejemplos que te servirán mucho.



Si te fue de utilidad puedes INVITARME UN CAFÉ y de esta manera ayudar a seguir manteniendo la página, CLICK para descargar en ejemplo en forma gratuita.



If this post was helpful INVITE ME A COFFEE and so help keep up the page, CLICK to download free example.


Si te gustó por favor compártelo con tus amigos
If you liked please share it with your friends