Aplicación a base de Macros


    Siguiendo con nuestros ejemplos sobre las macros, vamos a realizar una serie de tareas más complejas utilizando varias macros. Para ello, utilizaremos un ejemplo de hoja de excel que puedes observar debajo.
 
 
    Supongamos una empresa ficticia llamada "Libros Gromepeich" la cual se dedica a repartir en las 4 provincias de Catalunya (Barcelona, Tarragona, Lérida y Gerona) sus libros, clasificados por módulos (Venta minorista y venta mayorista), dentro de cada módulo por categorías (Infantil, Arte, etc) y dentro de cada categoría por distintos niveles de precios (Bajo, medio y alto) tal y como se muestra en la figura de la derecha. Tenemos, aparte una pequeña hoja con los tres tipos de precios.

    Vamos a automatizar una serie de tareas a base de macros para recoger un informe de los pedidos del mes anterior extrayéndolo del sistems de proceso de pedidos. El secreto de un buen sistema de macros no está en crear una súper-macro largísima, sino en crear pequeñas macros que realicen tareas y luego unirlas.

    Si intentamos hacer toda la macro seguida, habrá que realizar cuatrocientos pasos, cruzar los dedos, desearse lo mejor, y.... que no hayan demasiados fallos.

    Para las macros que vamos a practicar, recomendamos siempre hacer una copia de la hoja para practicar con la copia... (por si acaso). Vamos con las tareas....
 

 

Tarea UNO: Rellenar celdas vacías

    Cuando el sistema de pedidos produce un informe, introduce una etiqueta en una columna la primera vez que aparece la etiqueta. Vamos a rellenar las celdas vacías con el contenido de la etiqueta superior.

 

- Accede a Herramientas - Macro - Grabar nueva macro y dale el nombre RellenarEtiquetas. Acepta.

- Pulsa Ctrl+Inicio para situarte en la celda A1

- Pulsa Ctrl+Shift+* para seleccionar todo el rango de celdas

- Accede a Edición - Ir a... (o bien pulsa F5), Especial... activa la casilla Celdas en blanco y acepta.

- Escribe =C2 y pulsa Ctrl+Intro

- Pulsa Ctrl+Inicio para ir a la celda A1 y vuelve a pulsar Ctrl+Shift+*

- Accede a Edición - Copiar y luego a Edición - Pegado especial

- Selecciona la opción Valores y acepta

- Finaliza la grabación de la macro (botón Detener grabación o Herramientas - Macro - Detener grabación).
 

 

Observar la macro

   Vamos a ver cómo es el código de nuestra macro:

 

- Accede a Herrramientas - Macro - Macros - Modificar y observaremos el código generado:
 

   
Sub RellenarEtiquetas()
'
' RellenarEtiquetas Macro
' Macro grabada el 22/07/98 por x
'
Range("A1").Select
Selection.CurrentRegion.Select
Selection.SpecialCells(xlCellTypeBlanks).Select
Selection.FormulaR1C1 = "=R[-1]C"
Range("A1").Select
Selection.CurrentRegion.Select
Selection.Copy
Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _
False, Transpose:=False
End Sub
      Como siempre, la macro comienza con Sub y finaliza con EndSub, y en su interior están las sentencias que corresponden a las tareas.

 
 

La sentencia:

      Range("A1").Select sitúa el cursor en la celda A1

        Selection.CurrentRegion.Select selecciona la región actual de la selección original. Las sentencias de una macro deben leerse siempre de derecha a izquierda.

Selection.SpecialCells(xlCellTypeBlanks).Select selecciona las celdas en blanco de la selección original.

Selection.FormulaR1C1 = "=R[-1]C" significa: "La fórmula para todo lo seleccionado es... =R[-1]C (leer el valor de la celda que se encuentra justo encima de mi)". Cuando utilizamos Ctrl+Intro para rellenar celdas, la macro tendrá la palabra Selection delante de la palabra Formula. Cuando sólo se introduce Intro para rellenar una celda, la macro tendrá la palabra ActiveCell delante de la palabra Formula.

      Las restantes sentencias de la macro, convierten las fórmulas en valores.
 

 

Ejecución de la macro

    Para probar la macro, realiza una copia de la hoja original y accede a Herramientas - Macro - Macros... y pulsa el botón Ejecutar. La macro se ejecuta llenando las celdas vacías.

    Observa que al finalizar la ejecución de la macro, aún existe un rango de celdas que queda seleccionado en color negro. Podríamos haber pulsado la tecla Esc y un click en cualquier celda para desactivar esta zona, pero lo hemos hecho así porque vamos a ver cómo podemos modificar y "tocar" el código de la macro.

 

- Accede a Herramientas - Macros - Macro y pulsa en Modificar

- Añade estas líneas antes de la sentencia final EndSub:
 

 
Application.CutCopyMode = False

Range("A1").Select
        Con esto le decimos a la macro que desactive el modo Copiar y salte a la celda A1.

 

- Haz una copia más de la hoja original y ejecuta ahora la macro. La selección final desaparece



|Índice| - |Anterior| - |Siguiente|