Juan Garcés

Personal Blog

Macros en Microsoft Excel

enero 17th, 2013


Forma Manual

La forma manual es un poco más larga y requiere que el usuario comprenda una serie de conceptos de programación básicos para que pueda escribir las instrucciones de la macro.  Para ello se ha dedicado el final de este instructivo a esta misión.

 

Editor de Visual Basic

Cuando queremos programar macros en forma manual debemos utilizar el Editor de Visual Basic, que se muestra en la figura 14 y que se encuentra en el menú Herramientas sub-menú Macro.

tutmac_14  Figura 14:  Muestra el Editor de Visual Basic, donde se programarán las Macros

 

Una vez abierto el editor, debemos crear un nuevo módulo, que como mencionamos anteriormente es donde se guarda el código de la macro, como podemos ver en la imagen 15, donde se muestra la inserción de un nuevo módulo.

 

Insertar un Nuevo Módulo

tutmac_15Figura 15:  Inserción de un nuevo módulo

 

Al hacer click en el menú Insertar opción Módulo se abrirá una nueva ventana en la cual podremos escribir el código de nuestra nueva macro.   Nos debemos fijar que al comenzar a escribir el código lo hagamos en el módulo y no en una de las hojas, es más por un sentido de orden.

Al igual que en la forma automática, usaremos un ejemplo para realizar la explicación de la forma manual.  Así, desarrollaremos los siguientes ejemplos:

a.      Crear una macro que permita sumar 2 números ubicados en las celdas A1 y A2 y, poner el resultado de la suma en la celda A3.

b.      Crear una macro que permita determinar el mayor de 2 números ubicados en la celda A1 y A2 y poner en la celda A3 el resultado de dicha comparación.

c.      Crear una macro que permita realizar las 4 operaciones matemáticas básica (suma, resta, multiplicación y división), ubicando el primer término en la celda A1, el símbolo de la operación (+, -, *, /) en la celda A2 y el segundo término de la operación en la celda A3.  El resultado debe aparecer en la celda A4.

 

Ejemplos de Macros Manuales

 

a.      Crear una macro que permita sumar 2 números ubicados en las celdas A1 y A2 y, poner el resultado de la suma en la celda A3.

 

Insertar un nuevo Procedimiento

Para el desarrollo de este ejercicio deberemos insertar un nuevo módulo, como se muestra en la figura 15.  Posteriormente, deberemos crear el inicio de nuestra macro, dando un nombre a esta, podemos llamarle “Macro_Suma”.  Veamos este proceso en las siguientes figuras, el que implica el insertar un nuevo Procedimiento, que puede hallarse en el menú insertar

tutmac_16

Figura 16: Muestra opción de inserción de Procedimiento

 

Al seleccionar la opción aparecerá en la pantalla una ventana (ver figura 17) en la cual deberemos indicar varias opciones, entre las cuales se encuentra el nombre.

tutmac_17Figura 17: Ventana de inserción de un nuevo Procedimiento

 

Es importante fijarse en las opciones, ya que por ejemplo, si no se selecciona el ámbito de nuestra macro como privado sólo podrá ser utilizada por otros procedimientos dentro del módulo en que nos encontremos.

Veamos en la siguiente figura como queda finalmente todo este proceso

tutmac_18Figura 18: Muestra la creación de la macro Macro_Suma del ejercicio a.

 

Ahora sólo debemos escribir el código que permita sumar ambas celdas.

Para ello haremos uso de los mencionados objetos.  Es decir, deberemos hacer referencia a la hoja (objeto hoja de cálculo Worksheet) y a las celdas en donde se encuentran los valores que deberemos sumar.  Haremos algo bastante sencillo, como sabemos donde están los valores y donde debemos poner el resultado el código quedaría como se ve en la figura 19.  Claramente podemos ver como se ha hecho la referencia respectiva a los valores (propiedad Value) de las celdas en donde ubicaremos los valores a sumar.

El resultado fue puesto en la celda A3, por medio del uso de la propiedad Value del objeto Range

tutmac_19Figura 19: Muestra la macro del ejercicio a. creada finalmente

 

Como podemos ver, se ha asignado (por medio del signo “=”) a la celda A3 el valor de la suma de las celdas A1 y A2.

Worksheets(1).Range(«A3»).Value   =      Worksheets(1).Range(«A1»).Value + _

Worksheets(1).Range(«A2»).Value

 

Al ejecutar esta macro desde la ventana de macros se sumarán los números de las celdas A1 y A2 de la hoja 1, poniéndose el resultado en la celda A3.

Pero ahora vamos a ver algo muy importante y es el tema de la selección de la hoja.  Worksheets(1) es parte de la instrucción que permite seleccionar la hoja en la cual se tomará la celda.  Si lo omitimos el código quedaría así:

Range(«A3»).Value = Range(«A1»).Value + Range(«A2»).Value

El código anterior funcionaría en cualquier hoja que tengamos activa (esto es, que tengamos seleccionada, que estemos viendo) en el momento que ejecutemos la macro.  Por ejemplo, si tenemos activa la hoja2 y ejecutamos la macro entonces se sumarán los valores que se encuentren en las celdas A1 y A2.  Lo mismo si es la hoja1, hoja3 o la que sea.  (Haga la prueba).

Ya hemos visto hasta aquí algo básico en lo que se refiere a la programación de macros.  Veremos más adelante temas más avanzados y que serán de mucha utilidad para el usuario.

 

Ejercicios Prácticos

Crear una macro que permita determinar el mayor de 2 números ubicados en la celda A1 y A2 y poner en la celda A3 el resultado de dicha comparación.

 

Ejercitación para el lector.

 

Resultado:

 

Public Sub Macro_Compara()

If (Range(«A1»).Value > Range(«A2»).Value) Then

Range(«A3»).Value = «El valor en la celda A1 es mayor.»

Else

Range(«A3»).Value = «El valor en la celda A2 es mayor.»

End If

End Sub

 

c.      Crear una macro que permita realizar las 4 operaciones matemáticas básica (suma, resta, multiplicación y división), ubicando el primer término en la celda A1, el símbolo de la operación (+, -, *, /) en la celda A2 y el segundo término de la operación en la celda A3.  El resultado debe aparecer en la celda A4.

 

Ejercitación para el lector.

Resultado:

 

“Sin validación de división por 0”

 

Public Sub Macro_Calcula()

Select Case Range(«A2»).Value

Case «+»

Range(«A4»).Value = Range(«A1»).Value + Range(«A3»).Value

Case «-»

Range(«A4»).Value = Range(«A1»).Value – Range(«A3»).Value

Case «*»

Range(«A4»).Value = Range(«A1»).Value * Range(«A3»).Value

Case «/»

Range(«A4»).Value = Range(«A1»).Value / Range(«A3»).Value

Case Else

Range(«A4»).Value = «Operación no Válida»

End Select

End Sub

 

“Con validación de división por 0”  >>> Son sutilezas que ayudan al usuario. 😉

 

Public Sub Macro_Calcula()

Select Case Range(«A2»).Value

Case «+»

Range(«A4»).Value = Range(«A1»).Value + Range(«A3»).Value

Case «-»

Range(«A4»).Value = Range(«A1»).Value – Range(«A3»).Value

Case «*»

Range(«A4»).Value = Range(«A1»).Value * Range(«A3»).Value

Case «/»

If (Range(«A3»).Value = 0) Then

Range(«A4»).Value = «Error: Intenta dividir por 0 y no está definido.»

Else

Range(«A4»).Value = Range(«A1»).Value / Range(«A3»).Value

End If

Case Else

Range(«A4»).Value = «Operación no Válida»

End Select

End Sub

 

Juan Garcés

Personal Blog