Macros en Microsoft Excel

Realizado por:
Educación Informática
Contenido
Introducción
Conceptos Básicos
Objetos y Clases
Atributos o Propiedades
Métodos o Acciones
Eventos
Formas de Crear una Macro
Forma Automática
Grabar Nueva Macro
Ejemplos de Macros Automáticas
Ejecutar una Macro
Ejercicios Prácticos
Forma Manual
Editor de Visual Basic
Insertar un Nuevo Módulo
Ejemplos de Macros Manuales
Ejercicios Prácticos
Programación Avanzada
de Macros
Mejorando la Presentación
Insertar Botones en la
Hoja
Insertar un Icono en
la Barra de Herramientas
Uso de Formularios
Creación de un Formulario
Inserción de Objetos
en el Formulario
Inserción de Código de
Programación
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.
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.
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.
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.
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
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.
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.
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.
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.
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.
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
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.
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.

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.
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
Referencia al valor de la
Celda A3 de la primera hoja del libro.


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í:
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.
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
En
esta sección veremos algunas formas en que el utilizar las macros se convertirá
en algo muy simple.
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.
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).

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.
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.
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.
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).
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.
Hasta
ahora hemos realizado un formulario relativamente simple, usando controles
básicos en la comunicación con el usuario y donde éste es el que debe realizar
todas las tareas para obtener el resultado deseado.