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.
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
Figura 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
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.
Figura 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
Figura 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
Figura 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
