Invitamos al lector avanzado a hacer caso omiso de los puntos:
Qu es una hoja de clculo?
Qu es una macro?
Creando mi primer macro.
Programando en Excel
Debemos hacer notar al lector la diferencia entre programar y disear. Al abrir Excel el lector
se podr preguntar en que consiste la programacin en este producto ofimtico. Podr notar
que solo contamos con un espacio de diseo de tablas de insercin de texto y dems
herramientas similares a un procesador de textos y muy propias de est hoja de clculo como:
Realizacin de operaciones (Sumas, restas, productos, divisiones, etc.). Ahora invitamos al
lector visualizar un proyecto en el que no solo se necesite realizar operaciones de orden simple
como las mencionadas anteriormente. El proyecto que visualizara es el siguiente. Se necesita
crear una hoja de clculo que permita al usuario introducir valores de forma dinmica es decir
el mismo proyecto le solicitara inserte el primer operando el operador y el segundo operando.
Es una manera sencilla de comenzar pensar pues si como en todo manual vamos por el
principio en este manual comprender el uso bsico de un planteamiento estructural como
toda programacin moderna por as contemplarlo ya que en nuestros tiempos ah surgido algo
con mayor avance y alcance como lo es la Programming Oriented Objects (POO), pero eso ser
tema de otro manual, as que pasamos a lo que nos compete por ahora.
Qu es una hoja de clculo?
Una hoja de clculo es un programa ofimtico que permite la realizacin de operaciones
matemticas y de texto. Cuenta con un conjunto de funciones propias de la aplicacin que nos
permitir la manipulacin de caracteres alfabtico-numricos.
En este sistema ofimtico se trabaja en un sistema de tabulado
constituido de filas y columnas y por ello cada fila esta enlazada con
todas las columnas y cada columna con todas las filas. Las columnas
tienen un identificativo Alfabtico y en Microsoft Excel van desde A
hasta XFD (Fig. 2) y de 1 hasta 1048576 (Fig. 3) para las filas. La unin de una fila y una
columna se conoce como celda (Fig. 4). Comprender que el sistema que le permitir sacarle
todo el jugo a la herramienta programativa no es el mismo programa Excel. Es en s lo que lleva
en su ncleo. Excel permite el trabajo con macros las cuales no son ms que un conjunto de
instrucciones codificadas en un lenguaje de programacin llamado Visual Basic el cual lo
podemos encontrar en mltiples interfaces de la paquetera bsica de Microsoft Office en sus
distintas versiones (Office 98 hasta 2007).
(Fig. 2) Columna
(Fig. 3) Fila
(Fig. 4) Celda en Excel
Qu es una macro?
Una macro es un conjunto de instrucciones que se ejecutan en forma sucesiva por una
aplicacin como una hoja de clculo o un procesador de palabras y sirven para reproducir
procesos o tareas repetitivas de teclas o instrucciones con el "mouse" o tareas que serian
imposibles de llevara cabo haciendo solo uso de la interfaz que ofrece Excel. En la actualidad
se han vuelto ms complicados y poderosos debido a que se pueden programar en Visual
Basic.
He de decir que la tcnica mostrada no es compatible con todas las versiones del sistema
ofimtico aqu comentado propiedad de Microsoft. En este tutorial trabajamos con la ltima
versin salida al mercado: Microsoft Office 2007, por ser la versin que posee el autor. A pesar
de que esta versin se hace notar como poco intuitiva veremos como desplazarnos hasta la
seccin crear macro.
Creando mi primer macro.
Para crear esta primer macro trataremos de familiarizar al lector con algunas de las
caractersticas que ya debera poseer dentro de sus conocimientos sin embargo trataremos de
mostrarlas para no omitir a ninguna persona que va siguiendo de manera integra este manual
1. Abra una hoja de clculo
1.1. Presione Men Inicio
1.2. Despliegue el submen todos los programas
1.3. Microsoft Office
1.4. Microsoft Office Excel 2007
2. Dirjase al men Vista
3. Pestaa Macros
4. Grabar macro
5. Creamos la macro
5.1. Damos nombre a la macro
5.2. Colocamos un atajo de teclado
5.3. Elegimos donde guardar la macro, en este caso hemos decidido que la vamos a utilizar
en todo el libro y no en otro libro ni en uno personal como lo muestran las otras
opciones.
5.4. Damos una descripcin a la macro. La descripcin es opcional, pero es recomendable
colocarla.
6. La macro ha comenzado a ser grabada y todo lo que hagamos en la hoja se ira
almacenando en la macro como si de una cmara se tratase las acciones que realicemos en
ella se almacenaran en el cdigo de nuestra macro (Deshacer. Escribir texto. Dar formato
al texto. Realizar bsquedas)
5.1
5.2
5.3
5.4
Es por lo anterior que se dice que la macro se utiliza comnmente para hacer tareas de rutina
como colocar el tamao de una fuente a un pixeleado de 15 o un color naranja o ambos a la
par.
El lector para este momento podr presentar la queja de que le hemos dicho que le
presentaramos la forma de trabajar con el corazn de la aplicacin y hasta ahora no hemos
ms que hecho darle vuelta a la interfaz. Es real aquellos que se hayan dado a la tarea de dar
esta queja, es comprensible; pero esperen que aqu hemos llegado al punto en donde nos
embarraremos de cdigo as que estn listos. La macro que hemos creado tiene un cdigo en
un lenguaje que ya habamos mencionado anteriormente Visual BASIC.
Qu es Visual BASIC?
Es un lenguaje de programacin desarrollado por Alan Cooper para Microsoft. El lenguaje de
programacin es un dialecto de BASIC, con importantes aadidos. Su primera versin fue
presentada en 1991 con la intencin de simplificar la programacin utilizando un ambiente de
desarrollo completamente grfico que facilitara la creacin de interfaces grficas y en cierta
medida tambin la programacin misma.
Constituye un IDE (entorno de desarrollo integrado o en ingls Integrated Development
Enviroment) que ha sido empaquetado como un programa de aplicacin, es decir, consiste en
un editor de cdigo (programa donde se escribe el cdigo fuente), un depurador (programa
que corrige errores en el cdigo fuente para que pueda ser bien compilado), un compilador
(programa que traduce el cdigo fuente a lenguaje de mquina), y un constructor de interfaz
grfica o GUI (es una forma de programar en la que no es necesario escribir el cdigo para la
parte grfica del programa, sino que se puede hacer de forma visual).
Dnde encuentro el editor de Visual BASIC?
El autor de esta obra da por entendido la creacin de una macro y lo que pasamos a ver a
continuacin es la edicin de la misma. Para ello seguimos los siguientes pasos:
Nos dirigimos al men Vista y en la pestaa Macros
seleccionamos de su respectivo submen Ver macros
con lo que nos mostrara una ventana como la que se
muestra en la siguiente figura.
Esta ventana nos muestra el conjunto de macros
que tenemos creadas en nuestro caso solo
contamos con una y las opciones que se nos
presentan son:
1. Ejecutar: nos permite llevar a cabo las
acciones para las cuales fue creada esa
macro.
2. Paso a Paso: Nos permite ejecutar la
macro en modo depuracin por as
llamarle es decir en modo ejecucin
accin a accin.
3. Modificar: Esta accin resulta interesante y ser motivo de charla en el siguiente
captulo.
4. Crear: Nos permite crear una Macro la cual se encuentra deshabilitada al momento de
la creacin del manual.
5. Eliminar: Nos permite eliminar una macro.
6. Opciones: Nos permite modificar el atajo de teclado con el que se ejecuta la macro as
como la descripcin de la misma.
7. Macros en: Visualiza las macros almacenadas en todos los libros abiertos, libro actual,
etc.
Modificar una macro?
Nos permite modificar la macro en el entorno IDE que Visual BASIC nos ofrece.
Lo que vemos a continuacin no es un secreto que nos ha puesto Microsoft, no es una ventana
oculta ni similar, es lo que comentbamos anteriormente el ncleo programativo es decir lo
que nos permitir crear aplicaciones con el uso de Excel.
Programando una condicional en visual BASIC
Primero hacemos notar al usuario la forma en que se comunica Visual BASIC con la aplicacin
EXCEL en el ejemplo mostrado a continuacin se esta accediendo al contenido de la celda C4
es decir la Columna C de la fila 4 en la cual colocamos el texto Hola mundo!!
Range("C4").Select
ActiveCell.FormulaR1C1 = "Hola mundo!!"
El cdigo siguiente solo configura la interfaz de la fuente.
El cdigo se nos presenta como parte no del lenguaje Visual BASIC en si, si no como parte de la
aplicacin de Microsoft.
Entonces donde queda Visual BASIC?
En ese trozo de cdigo queda, pero bien donde poner ese trozo de cdigo pues sencillo solo
con colocarlo en la ventana anteriormente expuesta y sabiendo el uso de la sintaxis de visual
BASIC es mas que suficiente.
Sencillo no?
With Selection.Font
.Name = "Cambria"
.FontStyle = "Normal"
.Size = 11
.Strikethrough = False
.Superscript = False
.Subscript = False
.OutlineFont = False
.Shadow = False
.Underline = xlUnderlineStyleNone
.ThemeColor = xlThemeColorLight1
.TintAndShade = 0
.ThemeFont = xlThemeFontMajor
End With
MsgBox ("Hola mundo!!" & vbCrLf & "En visual basic")
As que ahora tenemos un poder sobre nuestra aplicacin haremos que el usuario introduzca
su edad y en base a ella determinaremos si es mayor de edad y si puede hacer uso de nuestro
documento en caso contrario lo sacaremos de la aplicacin y este es el cdigo de nuestra
aplicacin:
Explicamos a detalle el cdigo anterior. La numeracin anterior va segn el orden de ideas a
explicar a continuacin:
1. Se crea un procedimiento
2. Se selecciona la celda que contiene la edad del usuario
3. Se declara la variable que contendr la edad del usuario
4. Se pasa el valor de la celda activa a Edad
5. Se selecciona la celda que contiene el nombre del usuario
6. Se declara la variable Nombre que contendr el nombre del usuario
7. Se pasa el valor de la celda activa a la variable Nombre
8. Se realiza la condicional para saber si el usuario es mayor de edad
1 Sub btn_detect()
2 Range("E11").Select
3 Dim Edad As Integer
4 Edad = ActiveCell.FormulaR1C1
5 Range("E13").Select
6 Dim Nombre As String
7 Nombre = ActiveCell.FormulaR1C1
8 If Val(Edad) >= 18 Then
9 MsgBox Nombre & " es usted mayor de edad puede ver el contenido de
nuestro archivo ;)"
10 Else
11 MsgBox Nombre & " eres un niato bye"
12 Beep
13 End
14 End If
15 End Sub
9. Si la condicin se cumpli, se le informa al usuario del xito que tuvo
10. En caso contrario
11. Se le informa el fallo de la condicional
12. Se manda un Sonido de cierre
13. Se termina de ejecutar la macro
14. Se termina la condicional
15. Se termina el procedimiento
Tan simple para aquel que es conocedor del lenguaje Visual BASIC y para el que no estamos
intentando tambin lo sea.
Colocaremos 2 ejemplos ms antes de dar por finalizada nuestra publicacin:
Programa que sumara dos nmeros si la suma diera un total de 100 habr xito, si sumara
menos de 100 habr derrota, si sumara ms de 100 habr sobre cupo, la salida ser impresa en
la celda J6.
Solo hablaremos de la parte del cdigo que se presenta resaltada en verde que es la que nos
interesa por ahora:
8. Se crea un selector multi-opciones que suele ser muy similar a una sentencia if then,
pero que a diferencia de este el select case no redunda en comparar la misma variable
llamando a su denominante en mltiples ocasiones, ya que da por hecho que se trata
de la misma variable la que se esta comparando
9. La primera comparacin si es igual a 100 xito
11. Si es menor a 100 Derrota
13. Si es mayor a 13 Sobre cupo
1 Sub btn_suma()
2 Dim n1 As Integer
3 Dim n2 As Integer
4 Dim resultado As Integer
5 n1 = Val(Range("I5"))
6 n2 = Val(Range("J5"))
7 resultado = n1 + n2
8 Select Case (resultado)
9 Case 100
10 Range("J6") = "xito"
11 Case Is < 100
12 Range("J6") = "Derrota"
13 Case Is > 100
14 Range("J6") = "Sobrecupo"
15 End Select
16 End Sub
Y nuestro ejemplo final el uso de bucles:
El programa contara la suma total desde la posicin B53 hasta B74 y la mostrara en la celda
C53, en las celdas B53 a B74 se colocaran valores arbitrarios solo para uso de ejemplo.
3. El FOR es una sentencia de bucle que tras condicionarse se evaluara y se ejecutara
hasta que la condicin deje de cumplirse, en este caso el bucle terminara cuando num
sea mayor que 74.
4. Se suma el valor contenido en la celda Range("B" & num) a la variable total
5. Se continua con la ejecucin del bucle
6. Se coloca el valor de la variable total en la celda C53
1 Sub btn_total()
2 Dim total As Integer
3 For num = 53 To 74
4 total = total + Val(Range("B" & num))
5 Next num
6 Range("C53") = total
7 End Sub
Esperando les haya gustado y sea de su buen ver el conocimiento que aqu se plasma.