Macros en Excel

Por 9.99€ al mes tendrás acceso completo a todos los cursos. Sin matrícula ni permanencia.

Una macro es una grabación de acciones que luego podremos reproducir.

Grabar una macro:
View → Macros → Record Macro → Hago las operaciones que quiero grabar → View → Macros → Stop Recording

Reproducir una macro:
Pulso el botón o la combinación de teclas que escogí para reproducir la macro.

Editar macros:
View → Macros → Record Macro →Macros → Edit

Formato

0.00 → Muestra los números con una aproximación determinada.

0,987 → 0,99 0.987 → 0.987

Los números omitidos serán redondeado.

#,# → Omite son decimales innecesarios.
0,0 → ,5

#.# → Introduce separador de miles.
444444444 → 444.444.444

Macros

Grabar una macro:
View → Macros → Record Macro → Hago las operaciones que quiero grabar → View → Macros → Stop Recording

Macro a grabar(introducir formato de miles):
Botón derecho sobre la/s celda/s → Format Cells → Number → Custom → #.##0,00

Reproducir una macro:
Pulso el botón o la combinación de teclas que escogí para reproducir la macro.

Modificación del shortcut y la descripción de una macro:
View → Macros → View macros → Options →
Si mantengo pulsado SHIFT, esta tecla se añadirá a la combinación necesaria para ejecutar la macro.
Si el atajo del teclado introducido ya existe, se sobreescribirá.

Añadir una macro a la barra de herramientas de acceso rápido:
Botón derecho sobre la barra de herramientas de acceso rápido → Customize quick acces toolbar → Choose commands from: macros → add (botón modify para modificar el icono de la macro) → ok

Selección de celdas por criterios

Home → Editing → Find & Select →
– Opciones por defecto.
– Go to special.

Ejercicio

Hacer una macro que coloree celdas en rojo con borde negro y aplicar dicha macro a todos los textos del documento.

Asociar una macro a un componente

Insert → shape → botón derecho sobre el componente → assing Macro

Ejercicio: al pulsar sobre un botón con el texto ordenar alfabéticamente, los empleados deben ordenarse alfabéticamente. Si pulso sobre el botón ordenar por edad, los empleados debe ordenarse de acuerdo a su edad.

VBA

Una macro es un pequeño programa escrito en VBA (visual basic for applications).

Podemos acceder al código fuente de nuestras macros pulsando alt+F11.

Aparecerá un explorador de proyectos (View → proyect explorer) con el proyecto abierto y sus correspondientes hojas, y debajo otro panel con las propiedades del proyecto (View → Properties window).

Código Macro sencilla

	
Sub holaMundo()
    MsgBox(“Hola, buenos días”);
End Sub
	

Mostrar el valor de una celda

	
Sub holaMundo()
   MsgBox ("El valor de la celda D2 es: " & Range("D2"))
End Sub
	

If

Poner expresamente la propiedad Value es opcional.

Sub holaMundo()
   If IsNumeric(Range("D2").Value) = True Then
      MsgBox ("La celda contiene un número")
   End If
End Sub

Else

	
Sub holaMundo()
   If IsNumeric(Range("D2")) = True Then
        MsgBox ("La celda contiene un número")
    Else
        MsgBox ("La celda no contiene un número")
   End If
End Sub
	

Otras condiciones

If Range("D2") > 200 Then 
If Range("D2") > 200 = True Then
						<
						>=
						<=
						==
						<>

And Or

	
 If Range("D2") >= 200 And Range("D2") < 100 Then

 If Range("D2") >= 200 And Range("D2") < 100 Then
	

WITH

Sub holaMundo()
    With Range("D2")
        If .Value >= 200 And .Value < 100 Then
            MsgBox ("La celda D2 contiene un valor mayor de 200")
    End With
End Sub
Sub holaMundo()
    If Range("D2").Value > 100 And Range("D2").Value < 200 Then
        MsgBox ("La celda D2 contiene un valor entre 100 y 200")
    End If
End Sub

Select – Case

Sub holaMundo()
    With Range("A1")
        Select Case .Value
            Case Is > 70
                MsgBox ("Valor mayor que 20")
            Case Is < 10
                MsgBox ("Valor menor que 10")
            Case 40 To 50
                MsgBox ("Valor entre 40 y 50")
            Case Else
                MsgBox ("Ninguno de los anteriores")
        End Select
   End With
End Sub

Cambiar el color de una celda

Range("A1").Interior.ColorIndex = 3
Range("A1").Interior.ColorIndex = xlColorIndexNone

Ejercicio

Al pulsar un botón comprobar el valor de una celda. Si es mayor que 1000, pintar la celda de verde; si es menor que 500, pintarla de rojo, sino, mostrar un mensaje de alerta.

For

For i = 1 To 10
    Cells(1, i) = "Hola mundo!"
Next i

Ejercicio

Pintar las 30 primeras celdas de la tercera columna (D) de rojo.

Ejercicio

Al pulsar un botón comprobar el valor de las 30 primeras celdas de la tercera columna (D). Para cada celda, si es mayor que 1000, pintar la celda de verde; si es menor que 500, pintarla de rojo, sino, mostrar un mensaje de alerta.

Para resolver el ejercicio, mezclar width con select-case.

Selección

Absolute (Selecciona la celda E8):
Sub Macro1()
    Range("E8").Select
End Sub
Relativa:
	
Sub seleccionRelativa()
	ActiveCell.Offset(-2, 4)Range("A1:B3").Select 
End Sub
	

Desplazamiento vertical y horizontal a partit de la celda en la que estoy.

A partir de la celda seleccionada, haremos un cuadro de selección que si comenzase en el origen iría desde la celda A1 a la A3.

Bucle For

Sub BucleFor()
    Range("B1").Select
    For counter = 1 To 50
        ActiveCell.Offset(3, 0).Range("A1").Select
        Selection.Interior.Color = RGB(255, 0, 0)
    Next counter
End Sub

Ejercicio

Macros en Excel 1

Por 9.99€ al mes tendrás acceso completo a todos los cursos. Sin matrícula ni permanencia.