10*B
NOVIEMBRE 8 2012
CREACIÓN DE MACROS EXCEL
Al desarrollar un libro en Microsoft Excel gran parte del trabajo se realiza utilizando una gran cantidad de tiempo y recursos que terminan por agotarnos.
Hay muchas tareas que deben ser realizadas en forma obligatoria, ya sea porque se requiere un formato de número determinado o se necesita resaltar algún texto o cantidad específica o en su defecto, porque se desea dar una presentación más adecuada al trabajo. Pero algo aquí es muy importante de resaltar y es que gran parte de estas tareas son repetitivas, como por ejemplo, poner el texto en negrita, cursiva y justificado o poner algún formato de número con signo de pesos y si decimales con algún tipo de alineación. Tareas que se repiten infinidad de veces al realizar un libro y que pueden ser reemplazadas por un solo click en lugar de los muchos pasos tediosos y que terminan por agotarnos.
Al hablar de una forma de reemplazar varios pasos por un solo click (o en su defecto muchos menos que los necesarios comúnmente) nos estamos refiriendo a las denominadas MACROS, que corresponden a un medio de automatización de tareas a través de un grupo de instrucciones de programación que son escritas y soportadas por Microsoft Excel.
Tal vez el lector ha oído hablar de las Macros, ya que por lo general se les asocia con los virus y principalmente con los temidos MACROVIRUS, pero no es tan así, pues una macro correctamente programada (y controlada por el usuario) puede ser de mucho beneficio para el que utiliza (en este caso) Microsoft Excel.
No sólo se pueden programar macros en Microsoft Excel, sino que también en las demás aplicaciones del paquete de Microsoft Office como Microsoft Word, Microsoft Power Point y Microsoft Access. En este pequeño instructivo nos enfocaremos en las Macros para Microsoft Excel.
Una macro puede realizar prácticamente cualquier tarea, desde cosas simples como poner el texto en negrita, cursiva y justificado hasta cosas más complejas como validar el RUT y realizar alguna operación con éste.
En sí, la tarea que puede realizar una macro se ve limitada principalmente por la imaginación y capacidad del programador de la misma.
Una macro puede retornar un valor (en tal caso se denomina como “función”) o no (caso en el cual se denominará “procedimiento”). Una función puede ser utilizada directamente en una celda de alguna hoja del libro que estemos desarrollando, de la misma forma que las funciones comunes que ofrece Microsoft Excel como lo son las de SUMA, PROMEDIO, BUSCARV, SI u otra, ya que el valor devuelto por las macros “funciones” es asignado directamente al valor de la celda o puede trabajarse con él en alguna otra fórmula.
Las macros del tipo “procedimiento” son utilizadas principalmente en el cuerpo de las macros como parte de las tareas que se deben realizar y son ejecutadas principalmente por medio de un botón o icono que es insertado directamente en el libro.
En cualquier caso, puede realizarse la misma tarea con ambos tipos de macros y en sí, la diferencia radica en la facilidad de uso, ya que como se dijo, una macro función puede ser utilizada directamente en la hoja por medio de la invocación de su nombre y el pasaje de parámetros respectivo en caso de que lo requiera.
Veremos posteriormente algunos conceptos básicos para comprender la programación de macros en Microsoft Excel.
Conceptos Básicos
Al hablar de Macros en Microsoft Excel debemos ver una serie de conceptos de programación que son fundamentales para su comprensión.
Lo primero es el Lenguaje de Programación Visual Basic, ya que es en el que se programan las Macros y es del tipo de lenguajes Orientado a Objetos, esto es, que se pueden crear o representar cosas (objetos) del mundo real, como por ejemplo desde una simple lista hasta un automóvil, un computador u otro objeto en forma abstracta.
Objetos y Clases
Un objeto es cualquier cosa que tenga un comportamiento y corresponde a una ocurrencia de una clase. Por ejemplo, la clase Automóvil sería la que represente a todos los automóviles del mundo y el objeto automóvil sería un automóvil en específico.
En lo sucesivo no nos referiremos a las clases ni estudiaremos mayormente su representación ni programación, sólo haremos mención de los objetos y cómo afectarán la programación de las macros.
Atributos o Propiedades
Los objetos, entre otras cosas están compuestos por un conjunto de atributos o características que denominaremos Propiedades las cuales tendrán un valor determinado. Por ejemplo, en el caso de que deseemos representar un computador podríamos decir que sus propiedades son: Color, Memoria, Procesador, Pantalla, etc. Y cada una de esas propiedades tendrán un valor, como por ejemplo: Color=Blanco; Memoria=10 GB; Procesador=Pentium IV, etc.
Métodos o Acciones
Además de las propiedades los objetos poseen métodos, que corresponden a comportamientos o acciones que en algún momento realiza algún objeto. Por ejemplo, una acción común que realiza un objeto automóvil es el moverse, ya sea hacia delante o hacia atrás, desde un punto A hasta un punto B.
Los métodos son definidos en las clases, para que así puedan ser utilizados por cualquiera de los objetos derivados de éstas. De nuestro ejemplo, se debe definir un método que permita al automóvil moverse entre los dos puntos, indicándose cada uno de los pasos o tareas que se deban llevar a cabo para que dicho proceso se lleve a cabo sin problemas.
Luego de estar definido en la clase Automóvil el método Mover, los objetos que se deriven de dicha clase podrán invocar al método Mover y hacer que de esta forma el objeto automóvil pueda moverse cualquiera sean los puntos iniciales y finales.
Ahora bien, ¿para qué ver todos estos conceptos?, pues bien, la respuesta es que la orientación a objetos es la base de la programación hoy en día, y Microsoft Excel no escapa a esto. Así, en Excel nos podemos encontrar con dos objetos muy importantes que son WorkSheet (objeto “Hoja de Cálculo”) y el objeto Range que corresponde a una celda o un rango de celdas.
Analicemos un poco más en profundidad el objeto Range, que es el que principalmente usaremos para el trabajo con las macros. Por ejemplo, cuando hablábamos de las propiedades, éstas las podemos observar en el objeto Range, ya que éste contiene, entre otras, las propiedades Value, que es la que contiene el valor de la celda, la propiedad Column, que es la que indica la columna de la celda, la propiedad Row, que nos indica la fila de la celda, la propiedad Font, que indica el tipo de letra, la propiedad Borders, que indica el tipo, color, estilo de línea, etc. etc.
Por otro lado, podemos observar en el objeto Range los métodos, que entre otros se encuentran: el método Copy, que permite copiar el contenido de una cela o un rango de ellas, el método Clear, que permite borrar el contenido de una celda o un rango de ellas, el método Cut, que permite cortar el contenido de una celda o un rango de ellas, etc.
Veamos en las siguientes imágenes los métodos y propiedades que posee el objeto Range.

Figura 1: Métodos que posee el objeto Range.

Figura 2: Propiedades del objeto Range.

Figura 3: Propiedades, Métodos y Eventos del Objeto WorkSheet
Eventos
Como vemos en la imagen 3 acaba de aparecer un nuevo tipo de acciones que ocurren dentro de las clases y que son los eventos. Los eventos se desencadenan cuando ocurre algún tipo de acción en el objeto, como pueden ser el activarse (Activate) o cuando ocurre algún tipo de cambio (Change) entre algunos de los eventos.
Los eventos son muy importantes, ya que gracias a ellos podemos tomar decisiones (principalmente) acerca de las acciones que el usuario realice, ya sea presionando algún botón o al mover el mouse. Ya veremos más adelante la utilidad de los eventos.
Ya hemos revisado varios elementos fundamentales a tener en cuenta en la programación de Macros en Microsoft Excel. Ahora vamos a dar un paso más en nuestro aprendizaje y es el de la forma en que se puede crear una macro. Una de ellas es en forma automática y la otra (un poco más tediosa y larga) programando línea a línea cada una de las tareas que se deseen.
Veamos en la siguiente sección ambas formas de programación de macros. Será en forma práctica, para lo cual el lector podrá abrir Microsoft Excel y crear un nuevo libro y probar cada uno de los ejercicios que se presentarán.
Formas de Crear una Macro
Forma Automática
Grabar Nueva Macro
La forma automática (por llamarla de alguna forma) corresponde a lo que en el menú se denomina “Grabar nueva macro...” (como podemos ver en la figura 4) y corresponde a un procedimiento en el cual, al seleccionar la opción en el menú, se comienzan a interpretar cada una de las operaciones que realiza el usuario en forma de instrucciones de programación. Estas instrucciones son escritas en un módulo dentro del libro que puede ser visualizado desde el Editor de Visual Basic.

Figura 4: Muestra la opción de Grabar nueva macro.
Como se mencionó anteriormente, veremos todo el proceso de aprendizaje por medio de ejemplos, para lo cual realizaremos la siguientes macros:
a. Poner números en Negrita, cursiva, justificada y con signo de pesos.
b. Combinar celdas, ajustar celdas y justificar el contenido en forma horizontal.
c. Poner bordes y sombreados al área seleccionada.
d. Insertar una nueva hoja de cálculo con un formato de celda de número con signo de pesos en toda la hoja.
Ejemplos de Macros Automáticas
a. Poner números en Negrita, cursiva, justificada y con signo de pesos.
Para comenzar, debemos seleccionar la opción que presentamos en la figura 4, a lo cual aparecerá una ventana como la de la figura 5 en la cual deberemos indicar el nombre de la macro y algunos datos de su creación.

Figura 5: Creación de una nueva macro.
Como podemos observar en la imagen 5, el nombre de la macro no puede contener espacios en él. En la opción “Guardar macro en:” debemos seleccionar “Este libro”, lo que hará que el módulo con nuestra macro se guarde en nuestro libro. De no hacerlo, la macro quedará almacenada en el Libro de Macros Personal, con lo cual podremos usar la macro con cualquier otro documento. Por último, podemos seleccionar un “Método de abreviado”, lo cual es un poco complicado, ya que la mayor parte del teclado está ya asignado a alguna operación como poner negrita, centrar, etc. Pero si logras hallar alguna que no te produzca problemas puedes ponerla en la casilla que aparece junto a CTRL +.
Prosiguiendo, por lo general, luego de presionar en “Aceptar” aparece una barra de herramientas que contiene un botón con el cual podremos detener la grabación de la macro, como se muestra en la figura 6. Pero si no aparece esta barra basta con seleccionar la opción “Detener Grabación” como se muestra en la figura 7.

Figura 6: Barra en la cual se presenta
el botón de Detener Grabación.
Comencemos a realizar las tareas que requerimos para el ejercicio. Sólo debemos seleccionar el formato especificado para el ejercicio y finalmente seleccionar la opción para detener la grabación, con lo cual ya tendremos nuestros pasos grabados en el módulo respectivo, como podemos apreciar en la figura 8 y figura 9.

Figura 7: Se muestra la opción que permite detener la grabación de la macro.

Figura 8: Muestra como poner el formato a la celda que esta seleccionada.
Como podemos ver en la figura 8 se presenta cómo se establece el formato de la celda que esta seleccionada, pero hay algo muy importante que destacar y es que no se debe seleccionar la celda después de comenzar a grabar la macro, es decir, no se debe seleccionar ninguna celda, sólo se debe aplicar el formato y eso es todo. Esto es porque de seleccionarse una celda, ésta quedará enlazada con la macro y no la podremos reutilizar en cualquier otra celda de la hoja. Más adelante explicaremos algo más de este problema.
Veamos a continuación cómo ha quedado nuestra macro en el código de Visual Basic que se presenta en la figura 10. Para ello debemos seleccionar la opción “Editor de Visual Basic” en el menú Herramientas sub-menú Macro, como se muestra en la figura 9.

Figura 9: Muestra la opción para acceder al Editor de Visual Basic.

Figura 10: Muestra el contenido de la macro Ejercicio1
Ahora veamos, línea por línea que significado tiene el código anterior.
Sub Ejercicio1() à Indica el inicio de la Macro, con el nombre que hemos indicado en la ventana de la figura 5.
' Ejercicio1 Macro
' Macro grabada el 09-08-03 por Juan Garcés Bustamante
El texto anterior (que se encuentra con un apóstrofe al inicio de cada línea y generalmente en color verde) es un comentario y no es interpretado como código válido que realice alguna operación, sólo está ahí como una explicación de la macro. Podemos poner este tipo de comentarios en cualquier lugar del código de la macro.
Selection.Font.Bold = True à Pone el texto de la celda o celdas seleccionadas en Negrita.
Selection.Font.Italic = True à Pone el texto de la celda o celdas seleccionadas en Cursiva.
Selection.NumberFormat = "$ #,##0" à Da el formato de signo de pesos.
With Selection
La instrucción With nos permite que podamos escribir en forma abreviada las instrucciones que sigan. Por ejemplo, como se ve, podemos escribir
.HorizontalAlignment = xlJustify
en lugar de
Selection.HorizontalAlignment = xlJustify
y lo mismo ocurre con las demás sentencias que le siguen. Ambas significan lo mismo, es sólo la comodidad de omitir la palabra Selection.
.HorizontalAlignment = xlJustify à permite poner alineación justificada en forma horizontal.
.VerticalAlignment = xlBottom à permite poner alineación inferior en forma vertical.
.WrapText = False à Permite ajustar el texto en la celda.
.Orientation = 0 à Orientación del texto.
.ShrinkToFit = False à Reducir hasta ajustar en falso.
.MergeCells = False à Combinar celdas en falso.
End With à Fin del bloque donde podemos usar la abreviatura.
End Sub à Fin de la macro.
A continuación veremos la utilidad de esta macro, ya que este es el verdadero fin de las macros.
Por ejemplo, primero seleccionemos un rango de celdas en el cual hayamos escrito alguno valores.

Figura 11: Selección de valores para prueba.
Ejecutar una Macro
Y ahora ejecutemos nuestra macro, seleccionándola desde la ventana que se muestra en la figura 12 y presionando posteriormente el botón Ejecutar. Esta operación es precedida por la selección de la opción “Macros” en el menú Herramientas sub-menú Macro.

Figura 12: Ejecución de la Macro Ejercicio1
Luego de la ejecución de nuestra macro podremos apreciar que el rango de celdas seleccionado ha tomado el formato que hemos grabado en la macro. Veamos en la figura 13 cómo han quedado estas celdas.

Figura 13: Muestra las celdas luego de ejecutarse la macro Ejercicio1
Como podemos ver, el formato que grabamos en la Macro se ha aplicado a nuestro rango de celdas seleccionado, sin importar si era texto o número el que contenía la celda o si ésta estaba vacía, sólo se aplicó el formato. Además, podemos asegurar que este formato se aplicará sin problemas a cualquier rango de celdas que seleccionemos.
Ejercicios Prácticos
b. Combinar celdas, ajustar celdas y justificar el contenido en forma horizontal.
Ejercitación para el lector.
Resultado:
Sub Ejercicio2()
'
' Ejercicio2 Macro
' Macro grabada el 09-08-03 por Juan Garcés Bustamante
'
'
With Selection
.HorizontalAlignment = xlJustify
.VerticalAlignment = xlBottom
.WrapText = True
.Orientation = 0
.ShrinkToFit = False
.MergeCells = True
End With
End Sub
c. Poner bordes y sombreados al área seleccionada.
Ejercitación para el lector.
Resultado:
Sub Ejercicio3()
'
' Macro8 Macro
' Macro grabada el 09-08-03 por Juan Garcés Bustamante
Selection.Borders(xlDiagonalDown).LineStyle = xlNone
Selection.Borders(xlDiagonalUp).LineStyle = xlNone
With Selection.Borders(xlEdgeLeft)
.LineStyle = xlDouble
.Weight = xlThick
.ColorIndex = xlAutomatic
End With
With Selection.Borders(xlEdgeTop)
.LineStyle = xlDouble
.Weight = xlThick
.ColorIndex = xlAutomatic
End With
With Selection.Borders(xlEdgeBottom)
.LineStyle = xlDouble
.Weight = xlThick
.ColorIndex = xlAutomatic
End With
With Selection.Borders(xlEdgeRight)
.LineStyle = xlDouble
.Weight = xlThick
.ColorIndex = xlAutomatic
End With
With Selection.Borders(xlInsideVertical)
.LineStyle = xlContinuous
.Weight = xlThin
.ColorIndex = xlAutomatic
End With
With Selection.Borders(xlInsideHorizontal)
.LineStyle = xlContinuous
.Weight = xlThin
.ColorIndex = xlAutomatic
End With
With Selection.Interior
.ColorIndex = 15
.Pattern = xlSolid
.PatternColorIndex = xlAutomatic
End With
End Sub
d. Insertar una nueva hoja de cálculo con un formato de celda de número con signo de pesos en toda la hoja.
Ejercitación para el lector.
Resultado:
Sub Ejercicio4()
'
' Ejercicio4 Macro
' Macro grabada el 09-08-03 por Juan Garcés Bustamante
'
'
Sheets.Add
Cells.Select
Selection.NumberFormat = "$ #,##0"
End Sub
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 + _
![]() | |||||
![]() | |||||
| |||||
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
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.
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
Programación Avanzada de Macros
Mejorando la Presentación
En esta sección veremos algunas formas en que el utilizar las macros se convertirá en algo muy simple.
Insertar Botones en la Hoja
Al ejecutar una macro necesitamos abrir una ventana (ver figura 12) en la cual se enumeran todas las macros que tengamos. Allí deberemos seleccionar la que deseemos utilizar y ejecutarla. Pero ahora veremos algo un poco más simple y se trata de insertar botones de formulario.
Para ello haremos visible la barra de herramientas de Formularios, como podemos ver en la figura 20.

Figura 20: Muestra la forma en que se hace aparecer la barra de herramientas de Formularios
Al hacer click aparecerá la barra de herramientas en la cual se encuentran una serie de elementos insertables y que podemos enlazar con una macro. Veamos en la siguiente figura cómo esta compuesta esta barra de herramientas.

Figura 21: Muestra lo componentes de la barra de herramientas de Formularios
Ahora bien, insertemos un botón en la hoja de cálculo y enlacémosla con una de las macros que hemos realizado.

Figura 22: Se muestra la forma de enlazar un botón con una macro.
Al realizar la operación anterior, el botón queda enlazado con la macro que hemos seleccionado. Gracias a ello, al presionar en el botón se ejecutará la macro.
También podemos cambiar el mensaje que aparece dentro del botón, como se muestra en la siguiente figura. Sólo debemos seleccionar el botón haciendo click con el botón derecho y luego seleccionar la opción “Modificar Texto”.

Figura 23: Muestra la forma en que
se cambia el nombre del botón.
Ya hemos logrado insertar un botón enlazado a una imagen. Si el lector lo desea puede probar con los demás controles para ver con cuales obtiene un resultado semejante.
Insertar un Icono en la Barra de Herramientas
Ahora realizaremos algo diferente, pero con lo cual podremos obtener el mismo resultado. Se trata de los íconos de la barra de herramientas. Podemos insertar uno o varios de estos botones y podremos enlazarlos a macros. Veamos en las siguientes figuras la forma en que se debe realizar.

Figura 24: Muestra la forma en que se debe insertar un ícono para asignarle una macro.
Podemos encontrar la ventana anterior en el menú Ver, sub-menú Barra de herramientas opción Personalizar... Seleccionando la categoría Macros nos encontraremos con la opción Personalizar Botón, donde arrastrando el botón a la barra de herramientas se insertará el ícono que podremos asignar y modificar como queramos. En la siguiente figura podemos ver este proceso.

Figura 25: Muestra la opción en que se puede asignar la macro al botón.
Podemos asignar la macro al botón y cambiar la imagen, entre otras cosas. Podemos insertar tantos botones como deseemos. Sólo debemos tomar nuevamente el botón y arrastrarlo hacia la barra de herramientas (como se muestra en la figura 24).
Uso de Formularios

Figura 26: Muestra la inserción de un formulario en el Libro.
En la figura 26 se muestra la inserción de un nuevo formulario, el cual se puede encontrar en el menú Insertar, sub-menú Formulario. En este formulario podremos insertar cuadros de texto, etiquetas, listas, etc. Por medio de ellos podemos manipular los datos, tanto de la hoja de cálculo como aquellos que podamos utilizar dentro del mismo formulario.
Para insertar un nuevo control en el formulario debemos seleccionar el control que deseemos insertar y dibujarlo en el formulario dando un click y moviéndolo hacia la derecha sin soltar el click.
Por ejemplo, si deseamos crear nuestra calculadora básica (ejercicio c de la sección de macros manuales) podríamos crear un diseño de formulario como se muestra en las figuras siguientes.
Allí podemos ver que se encuentran los casilleros correspondientes para insertar los valores e ingresar el signo respectivo a la operación que se desea realizar.
Creación de un Formulario
Para crear el formulario que necesitamos para el ejercicio anterior seguiremos una serie de pasos que detallaremos para una mejor comprensión.

Figura 27: Muestra creación de formulario. Paso 1
Como dijimos anteriormente, podemos crear objetos y en este caso, una ventana (o formulario como le llamaremos aquí). Un formulario tiene propiedades, que son las que le indicarán por ejemplo el nombre, que es por medio del cual nos referiremos al objeto. Por ejemplo, si queremos cambiar alguna propiedad del formulario que creamos en la figura 27 deberemos hacer referencia a sus atributos por medio del nombre que le pusimos. O sea, si queremos ponerle un título (propiedad Caption) podemos escribir “Calculadora.Caption=”Calculadora Básica” y lo mismo para los demás atributos.
El nombre del formulario es distinto del Caption. El nombre (Name) es el que utilizamos para referenciar el objeto. En cambio el Caption es el título, lo que se ve por la pantalla, como se muestra en la figura 27.
Inserción de Objetos en el Formulario
Es aconsejable siempre poner un nombre a todos los objetos que utilizamos en el formulario. Ahora insertaremos los siguientes objetos en el formulario. Vemos las siguientes imágenes.

Figura 28: Inserción del objeto Cuadro de Texto. El nombre que le hemos dado es Operador1
Los objetos insertables son los que aparecen en el Cuadro de herramientas. La etiqueta (que dice Operador 1) se puede insertar seleccionando el control que se encuentra a la izquierda del control cuadro de texto que se muestra en la imagen 28.

Figura 29: Muestra inserción de cuadro de texto operación.
Todos los objetos que insertemos en el formulario tienen un nombre que puede variar según los requerimientos del usuario. El objeto etiqueta también puede tener un nombre.
En las siguientes imágenes se muestra la finalización del formulario, donde se insertarán los controles respectivos al ingreso del segundo operador y el botón con el cual ejecutaremos la macro.

Figura 30: Muestra la inserción del cuadro de texto para ingresar el operador 2

Figura 31: Muestra la inserción del botón Calcular.
Ahora ya tenemos listo el formulario con el cual realizaremos nuestra calculadora. Sólo falta poner el código que realizará el cálculo.
Inserción de Código de Programación
Debemos poner el código en el evento click del botón que hemos insertado (pues deberán realizarse los cálculos al presionar dicho botón). Para ello haremos doble click en el botón y se abrirá una ventana en la cual podremos poner el código que realizará el cálculo.

Figura 32: Muestra el editor del evento click del botón Calcular.
Lo que debemos hacer es poner el código que realizará el cálculo de la operación de acuerdo al símbolo que se encuentre en el segundo cuadro de texto que hemos puesto en el formulario.
Para ello deberemos crear un código semejante al que hemos realizado en el ejercicio c de la sección de macros manuales.
Veamos el código resultante que realizará el cálculo de la operación matemática.

Figura 33: Muestra el código resultante para la calculadora básica.
Veamos línea por línea el significado del código anterior.
Private Sub Calcular_Click() à Inicio de nuestro código. Esta escrito en el evento Click (o sea, cuando se hace click en el botón).
Select Case Operacion.Text à Realizamos un select de acuerdo a la operación que se haya escrito en el objeto Operacion. La propiedad Text es la que nos indica que es lo que hemos escrito en el cuadro de texto.
Case "+" à En caso de que lo que hayamos escrito en el cuadro de texto Operación un signo + entonces se realiza lo que esta a continuación.
Resultado.Text = Val(Operador1.Text) + Val(Operador2.Text) à Como lo que había en el cuadro Operación era un signo + entonces debemos sumar lo que tenga el cuadro de texto Operador1 más lo de cuadro de texto Operador2.
Como lo que hay en los cuadros de texto es “Texto” (lo mismo que pasa en las celdas de Excel muchas veces) entonces debemos transformarlo a un número. Para ello se pone la función VAL antes del contenido del cuadro de texto.
Case "-" à Si es un signo – entonces debemos realizar la resta y poner el resultado en el cuadro de texto resultado.
Resultado.Text = Val(Operador1.Text) - Val(Operador2.Text)
Case "*" à Si es un signo * entonces multiplicamos.
Resultado.Text = Val(Operador1.Text) * Val(Operador2.Text)
Case "/" à Si es el signo / debemos realizar la verificación de división por 0 y realizamos la operación que corresponde.
If (Val(Operador2.Text) = 0) Then
Resultado.Text = "Error: Intenta dividir por 0 y no está definido."
Else
Resultado.Text = Val(Operador1.Text) / Val(Operador2.Text)
End If
Case Else à Si no es ningún símbolo válido entonces se muestra el mensaje de error.
Resultado.Text = "Operación no Válida"
End Select à Fin del select.
End Sub à Fin del código del botón.


No hay comentarios:
Publicar un comentario