Вы находитесь на странице: 1из 92

Qu es una macro de

Excel?
Si utilizas Excel frecuentemente es posible que en alguna ocasin te
hayas encontrado ejecutando una misma serie de acciones una y otra
vez. Esas acciones que haces repetidas veces se podran automatizar
con una macro.
Una macro es un conjunto de comandos que se almacena en un lugar
especial de Excel de manera que estn siempre disponibles cuando los
necesites ejecutar.
Por ejemplo, si todas las maanas creas un reporte de ventas y en ese
reporte siempre das el mismo formato a los textos, se podra crear una
macro para que lo haga automticamente por ti. Las macros se utilizan
principalmente para eliminar la necesidad de repetir los pasos de
aquellas tareas que realizas una y otra vez.

Un lenguaje de programacin
Las macros se escriben en un lenguaje de computadora especial que es
conocido como Visual Basic for Applications (VBA). Este lenguaje permite
acceder a prcticamente todas las funcionalidades de Excel y con ello
tambin ampliar la funcionalidad del programa.

Pero no te preocupes si no eres un programador de computadoras, Excel


provee de una herramienta especial que permite crear una macro sin
necesidad de conocer los detalles del lenguaje de programacin.

Aunque si aceptas el desafo y te introduces en el mundo de la


programacin VBA pronto te convertirs en un Ninja de Excel. Vers que
crear una macro en Excel no es tan complicado y ser una manera fcil
y rpida de eliminar esas tareas repetitivas que todos los das te quitan
minutos preciados de tu tiempo.

Para qu sirve una macro


en Excel
Para qu sirve una macro en Excel? Una macro nos ayuda a
automatizar aquellas tareas que hacemos repetidamente. Una macro es
una serie de instrucciones que son guardadas dentro de un archivo de
Excel para poder ser ejecutadas cuando lo necesitemos.
Automatizacin de tareas

Seguramente ests familiarizado con procesos de automatizacin en el


mbito industrial. Un ejemplo muy claro son las plantas ensambladoras
de automviles donde existen robots que han sustituido tareas que antes

eran hechas por humanos. La automatizacin trajo beneficios como


mayor eficiencia y productividad de las plantas y un mejor
aprovechamiento del tiempo del personal al reducir la cantidad de tareas
repetitivas que realizaban.
De la misma manera las macros nos ayudan a eliminar esas tareas
repetitivas de nuestro trabajo cotidiano al permitirnos utilizar mejor
nuestro tiempo en el anlisis de los datos y en la toma de decisiones.
Cmo se ve una macro en Excel?

Las macros son escritas en un lenguaje de computadora conocido como


VBA por sus siglas en ingls (Visual Basic for Applications). Como
cualquier otro lenguaje de computadora debemos aprender a utilizar los
comandos que nos ayudarn a indicar a Excel lo que deseamos hacer
con nuestros datos.

Aprender el lenguaje VBA no es nada complicado y se puede lograr


fcilmente. Lo que toma un poco ms de tiempo es pulir nuestras
habilidades de programacin. Lo que quiero decir con esto es que para

ser un buen programador de macros debes dedicar tiempo en resolver


mltiples problemas en donde puedas llevar al lmite el lenguaje VBA.
Creacin de una macro

Las macros se crean con el Editor de Visual Basic el cual nos permitir
introducir el cdigo con las instrucciones que sern ejecutadas por la
macro.
Existe otro mtodo que es utilizar la Grabadora de macros la cual ir
grabando todas las acciones que realicemos en Excel hasta que
detengamos la grabacin. Una vez grabada la macro podremos
reproducir de nuevo las acciones con tan solo un clic.

Mostrar la ficha
Programador
Si quieres escribir una nueva macro o ejecutar una macro previamente
creada, entonces debes habilitar la ficha Programador dentro de la
cinta de opciones. Para mostrar esta ficha sigue los siguientes pasos.
Mostrar la ficha Programador en Excel 2010

Haz clic en la ficha Archivo y elige la seccin Opciones. Se mostrar el


cuadro de dilogo Opciones de Exceldonde debers seleccionar la
opcin Personalizar cinta de opciones.

En el panel de la derecha debers asegurarte de seleccionar la


ficha Programador.

Acepta los cambios y la ficha se mostrar en la cinta de opciones.

Grupos de la ficha Programador

El grupo Cdigo tienes los comandos necesarios para iniciar el Editor de


Visual Basic donde se puede escribir directamente cdigo VBA. Tambin
nos permitir ver la lista de macros disponibles para poder ejecutarlas o
eliminarlas. Y no podramos olvidar mencionar que en este grupo se
encuentra el comando Grabar macro el cual nos permite crear una
macro sin necesidad de saber sobre programacin en VBA.
El grupo Complementos nos permite administrar y habilitar
complementos como el Solver.
El grupo Controles incluye funcionalidad para agregar controles
especiales a las hojas de Excel como los controles de formulario que son
botones, casillas de verificacin, botones de opcin entre otros ms que
sern de gran utilidad para ampliar la funcionalidad de Excel.
El grupo XML permite importar datos de un archivo XML as como
opciones tiles para codificar archivos XML. Finalmente el
grupo Modificar solamente contiene el comando Panel de documentos.
Aunque pueden parecer intimidantes los comandos de la ficha
Programador con el paso del tiempo te irs familiarizando poco a poco
con cada uno de ellos.

La grabadora de macros
Puedes crear una macro utilizando el lenguaje de programacin VBA,
pero el mtodo ms sencillo es utilizar la grabadora de macros que
guardar todos los pasos realizados para ejecutarlos posteriormente.
La grabadora de macros en Excel 2010

La grabadora de macros almacena cada accin que se realiza en Excel,


por eso es conveniente planear con antelacin los pasos a seguir de
manera que no se realicen acciones innecesarias mientras se realiza la
grabacin. Para utilizar la grabadora de macros debes ir a la ficha
Programador y seleccionar el comando Grabar macro.

Al pulsar el botn se mostrar el cuadro de dilogo Grabar macro.

En el cuadro de texto Nombre de la macro debers colocar el nombre


que identificar de manera nica a la macro que estamos por crear. De
manera opcional puedes asignar un mtodo abreviado de teclado el cual
permitir ejecutar la macro con la combinacin de teclas especificadas.
La lista de opciones Guardar macro en permite seleccionar la ubicacin
donde se almacenar la macro.
Este libro. Guarda la macro en el libro actual.
Libro nuevo. La macro se guarda en un libro nuevo y que pueden
ser ejecutadas en cualquier libro creado durante la sesin actual de
Excel.

Libro de macros personal. Esta opcin permite utilizar la macro


en cualquier momento sin importar el libro de Excel que se est
utilizando.
Tambin puedes colocar una Descripcin para la macro que vas a crear.
Finalmente debes pulsar el botn Aceptar para iniciar con la grabacin de
la macro. Al terminar de ejecutar las acciones planeadas debers pulsar
el botn Detener grabacin para completar la macro.

Crear una macro


En esta ocasin mostrar cmo crear una macro en Excel utilizando la
grabadora de macros. La macro ser un ejemplo muy sencillo pero
permitir ilustrar el proceso bsico de creacin.
Voy a crear una macro que siempre introduzca el nombre de tres
departamentos de una empresa y posteriormente aplique un formato
especial al texto. Para iniciar la grabacin debes ir al comando Grabar
macro que se encuentra en la ficha Programador lo cual mostrar el
siguiente cuadro de dilogo.

Observa cmo he colocado un nombre a la macro y adems he


especificado el mtodo abreviado CTRL+d para ejecutarla
posteriormente. Una vez que se pulsa el botn Aceptar se iniciar la
grabacin. Observa con detenimiento los pasos.

Al terminar los pasos se pulsa el comando Detener grabacin y la macro


habr quedado guardada. Para ejecutar la macro recin guardada
seleccionar una nueva hoja de Excel y seleccionar el comando
Macros.

Al pulsar el comando Macros se mostrar la lista de todas las macros


existentes y de las cuales podrs elegir la ms conveniente. Al hacer clic
sobre el comando Ejecutar se realizarn todas las acciones almacenadas
en la macro y obtendrs el resultado esperado. Por supuesto que si
utilizas el mtodo abreviado de teclado de la macro entonces se omitir
este ltimo cuadro de dilogo.

El cdigo de la Grabadora
de macros
Una manera muy interesante de descubrir y aprender ms sobre cdigo
VBA es analizar el cdigo generado por la Grabadora de macros. Para

este ejemplo grabaremos una macro muy sencilla que solamente cambie
el color de la fuente de la celda actual.
Para comenzar debemos ir a la ficha Programador y pulsar el
comando Grabar macro lo cual mostrar el cuadro de dilogo donde
asignar un nombre a la macro que estoy por crear.

Pulsa el botn Aceptar y se comenzarn a grabar todas las acciones, as


que debes actuar con cuidado porque se grabar absolutamente todo.
Para la macro que estoy grabando solo har lo siguiente: ir a la ficha
Inicio y pulsar el comando Color de fuente y seleccionar el
color rojo para la celda activa.

Una vez hecho esto debo detener la grabacin de la macro y una


alternativa para hacerlo es pulsar el icono que se muestra en la barra de
estado.

Ahora que ya hemos generado la macro, pulsa el botn Macros que se


encuentra en el grupo Cdigo de la ficha Programador. Se mostrar el
cuadro de dilogo Macro que enlista todas las macros que hemos
creado.

Selecciona la macro recin creada y pulsa el botn Modificar. Esto abrir


el Editor de Visual Basic y mostrar elcdigo generado para la macro.

Observando este cdigo podemos aprender varias cosas. Para empezar


observamos que el objeto Selection tiene una propiedad llamada Font
que es la que hace referencia a la fuente de la celda o rango
seleccionado. A su vez, la propiedad Font tiene otra propiedad llamada
Color que es precisamente la que define el color rojo de nuestra celda.

Aunque este ha sido un ejercicio muy sencillo, cuando tengas curiosidad


o duda sobre qu objetos utilizar al programar en VBA considera utilizar
la Grabadora de macros para darte una idea del camino a seguir.

Establecer seguridad de
macros
La seguridad es un tema importante al hablar de macros en Excel. Si
abres algn archivo que contenga una macro maliciosa puedes causar
algn tipo de dao al equipo. De manera predeterminada Excel no
permite ejecutar macros automticamente.
Sin embargo, si ests creando tus propias macros y deseas remover esta
proteccin porque sabes que no existe cdigo malicioso, entonces
puedes modificar la configuracin para habilitar todas las macros. Para
hacerlo debes seguir los siguientes pasos.
Haz clic en la ficha Archivo y posteriormente en Opciones. Dentro del
cuadro de dilogo mostrado selecciona la opcin Centro de confianza y
posteriormente pulsa el botn Configuracin del centro de confianza.
Se mostrar el cuadro de dilogo Centro de confianza.

Dentro de la seccin Configuracin de macros selecciona alguna de las


opciones disponibles.
Deshabilitar todas las macros sin notificacin. Deshabilita las
macros y permite ejecutar solamente aquellas que estn
almacenadas en un lugar confiable. Los lugares confiables se
configuran en la seccin Ubicaciones de confianza del mismo
cuadro de dilogo.
Deshabilitar todas las macros con notificacin. Muestra una
alerta de seguridad advirtiendo sobre la intencin de ejecutar una
macro de manera que se pueda decidir si se desea ejecutar. Esta
es la opcin predeterminada de Excel.
Deshabilitar todas las macros excepto las firmadas
digitalmente. Solamente se podrn ejecutar las macros que estn
firmadas digitalmente.
Habilitar todas las macros. Permite ejecutar todas las macros sin
enviar alguna notificacin al usuario. Esta opcin es til si se

ejecutan mltiples macros totalmente confiables. Esta opcin es la


que corre los mayores riesgos al ejecutar una macro de una fuente
desconocida.
Una vez seleccionada la opcin deseada se debe pulsar el botn Aceptar
para hacer los cambios permanentes.

Programando en VBA
Excel 2010 es una de las herramientas de software ms poderosas para
el manejo, anlisis y presentacin de datos. Aun y con todas sus
bondades, en ocasiones Excel no llega a suplir algunas necesidades
especficas de los usuarios.
Afortunadamente Excel cuenta con VBA que es un lenguaje de
programacin que permite extender las habilidades del programa para
cubrir nuestros requerimientos. Utilizando VBA se pueden desarrollar
nuevos algoritmos para analizar la informacin o para integrar a Excel
con alguna otra aplicacin como Microsoft Access.
Principios fundamentales

La programacin en VBA puede ser un tanto misteriosa para la mayora


de los usuarios de Excel, sin embargo una vez que se comprenden los
principios bsicos de programacin en VBA se comenzarn a crear
soluciones robustas y efectivas.
El primer concepto importante a entender es que cada elemento de Excel
es representado en VBA como un objeto. Por ejemplo, existe el
objeto Workbook que representa a un libro de Excel. Tambin existe el
objeto Sheet que representa una hoja y el objeto Chart para un grfico.
El segundo concepto importante a entender es que cada uno de estos
objetos tiene propiedades y mtodos. Para explicar mejor este
concepto utilizar una analoga.
Propiedades y Mtodos

Supongamos que tenemos el objeto auto. As es, un auto como el que


manejamos todos los das para ir al trabajo. Este auto tiene
varias propiedades como son: marca, modelo, color, tipo de transmisin
las cuales ayudan a describir mejor al auto. Tambin
hay propiedades que indican su estado actual como por ejemplo
gasolina disponible, temperatura del aceite, velocidad, kilmetros
recorridos entre otras propiedades ms. Podemos decir que
las propiedades de un objeto nos ayudan a describirlo mejor en todo
momento.
Por otro lado tenemos los mtodos de un objeto que en resumen son las
acciones que podemos realizar con dicho objeto. Por ejemplo, con
nuestro auto podemos hacer lo siguiente: encenderlo, avanzar, vuelta a
la izquierda, vuelta a la derecha, reversa, detener, apagar, etc. Todas las
acciones que se pueden llevar a cabo con un objeto son conocidas
como mtodos.
Volviendo al terreno de Excel, el
objeto Workbook tiene propiedades como ActiveSheet (Hoja activa),
Name(Nombre), ReadOnly (Solo Lectura), Saved (Guardado) y algunos
de sus mtodos son Save (Guardar), Close(Cerrar), PrintOut (Imprimir),
Protect (Proteger), Unprotect (Desproteger).
Ser difcil mencionar todos los objetos de Excel y sus propiedades en
esta publicacin, pero lo importante a recordar en este ocasin es que
cada elemento de Excel est siempre representado por un objeto en
VBA y cada objeto tiene a su vez propiedades y mtodos que nos
permitirn trabajar con nuestros datos.

El Editor de Visual Basic


El Editor de Visual Basic, VBE por sus siglas en ingls, es un programa
independiente a Excel pero fuertemente relacionado a l porque es el
programa que nos permite escribir cdigo VBA que estar asociado a las
macros.

Existen al menos dos alternativas para abrir este editor, la primera de


ellas es a travs del botn Visual Basic de la ficha Programador.

El segundo mtodo para abrir este programa es, en mi opinin, el ms


sencillo y rpido y que es a travs del atajo de teclado: ALT +
F11. El Editor de Visual Basic contiene varias ventanas y barras de
herramientas.

En la parte izquierda se muestra el Explorador de proyectos el cual


muestra el proyecto VBA creado para el libro actual y adems muestra
las hojas pertenecientes a ese libro de Excel. Si por alguna razn no
puedes visualizar este mdulo puedes habilitarlo en la opcin de men
Ver y seleccionando la opcin Explorador de proyectos.

El Explorador de proyectos tambin nos ayuda a crear o abrir mdulos de


cdigo que se sern de gran utilidad para reutilizar todas las funciones de
cdigo VBA que vayamos escribiendo.
Dentro del Editor de Visual Basic puedes observar una ventana llamada
Inmediato que est en la parte inferior. Esta ventana es de mucha ayuda
al momento de escribir cdigo VBA porque permite introducir
instrucciones y observar el resultado inmediato. Adems, desde el cdigo
VBA podemos imprimir mensajes hacia la ventana Inmediato con el
comando Debug.Print de manera que podamos depurar nuestro cdigo.
Si no puedes observar esta ventana puedes mostrarla tambin desde el
men Ver.
El rea ms grande en blanco es donde escribiremos el cdigo VBA. Es
en esa ventana en donde escribimos y editamos las instrucciones VBA
que dan forma a nuestras macros.

Es importante familiarizarnos con el Editor de Visual Basic antes de


iniciar con la creacin de macros.

Tu primera macro con VBA


Ahora que ya sabes lo que es el Editor de Visual Basic para Aplicaciones
puedo mostrarte un ejemplo muy sencillo para crear una macro. Lo
primero que debes hacer es ir a la ficha Programador y hacer clic en el
botn Visual Basic.
Creacin de un mdulo

Una vez dentro del Editor debes hacer clic derecho sobre el ttulo del
proyecto y dentro del men seleccionar la opcin Insertar y
posteriormente Mdulo.

Se crear la seccin Mdulos y dentro de la misma se mostrar el


mdulo recin creado. Puedes saber que el mdulo est abierto porque
su nombre se muestra en el ttulo entre corchetes.

Si el mdulo no est abierto solamente debers hacer doble clic sobre l.


Posicinate en el rea de cdigo e introduce las siguientes instrucciones:

Antes de avanzar explicar con detalle las instrucciones mostradas.


Subrutinas en VBA

El primer concepto que explicare es la instruccin Sub que es la


abreviacin de la palabra subrutina. Una subrutina no es ms que un
conjunto de instrucciones que se ejecutarn una por una hasta llegar al
final de la subrutina que est especificado por la instruccin End Sub.

Las subrutinas nos ayudan a agrupar varias instrucciones de manera que


podamos organizar adecuadamente nuestro cdigo. Una subrutina
siempre tiene un nombre el cual debe ser especificado justo despus de
la instruccin Sub y seguido por parntesis.
La funcin MsgBox en VBA

La subrutina que acabamos de crear para este ejemplo solamente tiene


una instruccin dentro la cual hace uso de la funcin MsgBox. Esta
funcin nos ayuda a mostrar una ventana de mensaje de manera que
podamos estar comunicados con el usuario sobre cualquier error o
advertencia que necesitamos darle a conocer. Para este ejemplo he
utilizado la forma ms sencilla de la funcin MsgBox la cual solamente
tiene un solo argumento que es precisamente el mensaje que
necesitamos mostrar en pantalla al usuario.
Ejecutar macro

Para probar nuestro cdigo bastar con pulsar el botn Ejecutar que se
encuentra dentro de la barra de herramientas.

En cuanto se pulsa el botn se ejecutar el cdigo recin ingresado y


obtendremos el resultado en pantalla.

Listo, has creado tu primera macro la cual muestra una ventana de


mensajes y despliega el texto especificado en la funcin MsgBox. Para
guardar la macro recuerda que debes guardar el archivo como Libro de
Excel habilitado para macros, de lo contrario perders el cdigo del
mdulo creado.

Utilizar comentarios en VBA


Utilizar comentarios dentro del cdigo VBA es una de las mejores
prcticas que debes adoptar desde que inicias en el mundo de la
programacin en Excel. Los comentarios harn que tu cdigo sea fcil de
entender.
Un comentario en VBA es una lnea dentro del cdigo que no ser
tomada en cuenta al momento de realizar la ejecucin. Los comentarios
sern solo visibles por ti al momento de editar el cdigo dentro del Editor
de Visual Basic.
Para agregar un comentario ser suficiente con colocar una comilla
sencilla () al inicio de la lnea. Despus de colocar la comilla sencilla
debes escribir el comentario y al terminar de insertar la lnea Excel
colocar automticamente el texto en color verde indicando que ha
reconocido la lnea como un comentario en VBA.

He visto en ms de una ocasin que muchas personas no tienen esta


buena prctica al programar en VBA y el problema se presentar cuando
pase el tiempo y tengan que modificar el cdigo pero ya no recuerden la
lgica implementada ni lo que significa cada una de las variables.
Aunque pareciera una actividad aburrida, creme que te ahorrar mucho
tiempo cuando te veas en la necesidad de modificar tu cdigo. Adems,
si por alguna razn necesitas que otra persona haga modificaciones al
cdigo le sern de gran ayuda los comentarios que hayas agregado.
Comentar varas lneas de cdigo

Como ya lo mencion, un comentario en VBA ser omitido al momento


de la ejecucin. En ocasiones cuando est haciendo pruebas con tu
cdigo VBA deseas evitar que ciertas lneas de cdigo se ejecuten y una
manera de hacer es comentando dichas lneas.
Para comentar varias lneas de cdigo en una macro, sin la necesidad de
estar colocando la comilla sencilla al principio de cada una de las lneas,
puedes seguir los siguientes pasos. En primer lugar selecciona todas las
lneas de cdigo que deseas convertir en comentarios y posteriormente

oprime el botn Bloque con comentarios de manera que Excel coloque


todas las comillas sencillas () a cada lnea de cdigo seleccionada.

De la misma manera puedes remover las comillas sencillas si pulsas el


botn Bloque sin comentarios que se encuentra justo al lado derecho del
botn Bloque con comentarios.

Si no puedes ver los botones anteriores en el Editor de Visual Basic es


porque seguramente tienes oculta la barra de herramientas de Edicin.
Para mostrarla, haz clic derecho sobre un rea libre del men superior y
seleccionar la opcin Edicin.

Objetos, propiedades y
mtodos
Los objetos en Excel (VBA) son cosas. Una celda es un objeto, una hoja
es un objeto, un libro es un objeto y de esta manera existen muchos ms
objetos en Excel. A esto lo conocemos como el modelo de objetos de
Excel.

Cada uno de los objetos de Excel tiene propiedades y mtodos. Las


propiedades son las caractersticas del objeto y los mtodos son las
acciones que el objeto puede hacer.
Propiedades de un objeto

Si una persona fuera un objeto de Excel sus propiedades seran el color


de sus ojos, el color de su cabello, su estatura, su peso. De la misma

manera, un objeto de Excel tiene propiedades por ejemplos, una celda


(Range) tiene las propiedades valor (Value) y direccin (Address) entre
muchas otras. Estas propiedades describen mejor al objeto.
Mtodos de un objeto

Siguiendo con el ejemplo de una persona, si fuera un objeto de Excel sus


mtodos seran correr, caminar, hablar, dormir. Los mtodos son las
actividades o acciones que el objeto puede realizar. Los objetos de Excel
se comportan de la misma manera que el ejemplo de una persona. Una
celda (Range) tiene los mtodos activar (Activate), calcular (Calculate),
borrar (Clear) entre muchos ms.
Utilizando las propiedades y los mtodos

Para acceder a las propiedades y mtodos de un objeto lo hacemos a


travs de una nomenclatura especial. Justo despus del nombre del
objeto colocamos un punto seguido del nombre de la propiedad o del
mtodo. Observa este ejemplo donde hacemos uso de la
propiedad Value para la celda A1:
Range("A1").Value = "Hola"

De esta manera asignamos una cadena de texto al valor de la celda A1.


Ahora bien, si queremos borrar ese valor que acabamos de colocar en la
celda podemos utilizar el mtodo Clear de la siguiente manera:
Range("A1").Clear

Ver todas las propiedades y mtodos

Los objetos tienen muchas propiedades y mtodos y a veces es difcil


pensar que los llegaremos a memorizar todos por completo. Sin
embargo, el Editor de Visual Basic es de gran ayuda porque justamente
al momento de escribir nuestro cdigo nos proporciona la lista completa
de propiedades y mtodos para un objeto.

Esto sucede al momento de introducir el punto despus del nombre del


objeto. Puedes distinguir entre las propiedades y mtodos porque tienen
iconos diferentes. En la imagen de arriba los mtodos son los que tienen
el icono de color verde.
Recuerda, los objetos son cosas en Excel y sus caractersticas las
llamamos propiedades las cuales nos ayudan a definir al objeto.
Los mtodos son las acciones que cada objeto puede realizar.

Navegando el modelo de
objetos
Excel tiene un modelo de objetos el cual es una jerarqua de todos los
objetos que podemos utilizar desde el lenguaje VBA. En la parte superior
de la jerarqua se encuentra el objeto Application y todos los dems
objetos estarn por debajo de l.
Acceder a objetos inferiores

Para tener acceso a los objetos que estn por debajo del objeto
Application podemos utilizar el punto. El punto nos ayuda a navegar por
la jerarqua hacia un nivel inferior. Observa lo que se muestra en el Editor
de Visual Basic al colocar un punto despus del objeto Application:

Por ejemplo, si deseamos poner en negritas el texto de la celda A1


debemos llegar al objeto Range el cual nos dar acceso a modificar la
propiedad Bold de la siguiente manera:

Aunque esta lnea de cdigo puede tomarnos un poco de tiempo en


escribirla, describe perfectamente la jerarqua de los objetos en VBA ya
que despus de acceder el objeto de la aplicacin (Application), le
seguir el objeto del libro de trabajo activo (ActiveWorkbook) y
posteriormente el objeto de la hoja activa (ActiveSheet) para finalmente
llegar al objeto del rango de celdas (Range) y modificar la propiedad Bold
de la Fuente.
Objetos predeterminados

Existe una funcionalidad intrnseca de VBA conocida como objetos


predeterminados la cual nos permite omitir la escritura de algunos
objetos y aun as tener un cdigo funcional. Por ejemplo, en la sentencia
mostrada previamente podemos omitir el objeto Application y tener
nuestro cdigo funcionando correctamente:

Inclusive podemos omitir los objetos ActiveWorkbook y ActiveSheet


sabiendo que el cdigo se ejecutar siempre sobre el libro activo y la
hoja que est activa al momento de la ejecucin:

Referencias completas a objetos

A algunas personas les gusta utilizar las referencias completas a los


objetos, es decir, especificar toda la ruta completa hasta llegar al objeto
deseado. Una razn para hacer esto es porque da una claridad absoluta
sobre la ubicacin exacta de cada objeto lo cual ayudar a evitar
cualquier mala interpretacin del cdigo.
Si decides no hacer uso de los objetos predeterminados sino que deseas
utilizar las referencias completas hacia cada objeto an hay una manera
de ahorrar algunas lneas de cdigo. Supongamos las siguientes
instrucciones en VBA:

Podemos ahorrar algunas palabras de este cdigo haciendo uso del


bloque With de la siguiente manera.

En ambos casos el resultado ser el mismo y en el ltimo ahorraremos


algunos caracteres dejando nuestro cdigo VBA claro y legible.

Las colecciones de objetos


Workbooks y Worksheets
Un objeto en VBA puede contener otro objeto y ese objeto a su vez
puede contener otro objeto y as sucesivamente. La raz de todos los

objetos en VBA se encuentra en el objeto Application el cual a su vez


contiene las colecciones de objetos Workbooks y Worksheets.
El objeto Workbook y el objeto Worksheet

El objeto Workbook representa un libro de Excel y el objeto Worksheet


representa una hoja de un libro de Excel. Como sabemos, un libro de
Excel puede tener ms de una hoja lo cual significa que un objeto
Workbook puede contener ms de un objeto Worksheet.
Ya que no hay lmite en el nmero de hojas que puede tener un libro, se
volvera complicado organizar esta relacin entre los objetos Workbook y
Worksheet y por esta razn se crearon las colecciones de objetos. De
esta manera un objeto Workbook tiene asociada una coleccin de objetos
Worksheets la cual contiene los objetos Worksheet que representan las
hojas de ese libro de Excel. De la misma manera, el objeto Application no
tiene asignados directamente todos los libros de Excel sino que tiene una
coleccin de objetos Workbooks la cual incluir todos los objetos
Workbook de los libros de Excel que abramos en nuestro cdigo VBA.
Abrir un libro de Excel

Para abrir un libro de Excel en VBA podemos utilizar el mtodo Open del
objeto Workbooks de la siguiente manera:
Application.Workbooks.Open Filename:="C:Libro1.xlsx"

Esta instruccin abrir el archivo ubicado en C:Libro1.xlsx y lo agregar


a la coleccin de objetos Workbooks. De esta manera podemos abrir
tantos archivos como sean necesarios y para cada uno de ellos se crear
un objeto Workbook el cual ser almacenado dentro de Workbooks.
Hacer referencia a un libro en VBA

Una vez que hemos abierto los archivos que necesitamos podremos
hacer referencia a cada uno de ellos a travs de la coleccin de objetos
Workbooks de la siguiente manera:
Application.Workbooks(1).Activate

El nmero que observas dentro de los parntesis indica el ndice del


objeto Workbook dentro de la coleccin de objetos Workbooks. De
manera predeterminada el ndice 1 ser para el libro de Excel que
contiene el cdigo VBA y a partir de ah la numeracin ser de acuerdo al
orden en que hayamos abierto otros archivos. Si conocemos el nombre
del libro podemos utilizarlo en lugar del ndice y tener una instruccin
como la siguiente:
Application.Workbooks("Libro1.xlsx").Activate

La coleccin de objetos Workbooks nos permitir acceder a todos los


libros que hayamos abierto dentro de nuestra aplicacin VBA.
Acceder las hojas de un libro

De igual manera podemos acceder las hojas de cualquier libro a travs


de su coleccin de objetos Worksheets. Esta coleccin tambin puede
ser accedida por el ndice de cada una de las hojas del libro:
Application.Workbooks(1).Worksheets(1).Range("A1").Value = "Hola"

Esta instruccin accede a la hoja con el ndice 1 y coloca el valor Hola


Mundo en la celda A1. Tambin podemos acceder a una hoja a travs
de su nombre en caso de que lo conozcamos:
Application.Workbooks(1).Worksheets("Hoja1").Range("A1").Value = "Hola"

Agregar una nueva hoja

A travs de la coleccin de objetos Worksheets podemos crear nuevas


hojas en un libro. Observa la siguiente instruccin:
Worksheets.Add

Observa que no he iniciado la instruccin anterior con el objeto


Application, ni tampoco est precedida por el objeto Workbooks. Esta es
una sintaxis aceptable dentro de VBA e indica que se agregar una
nueva hoja al libro que est activo en ese momento. Este es un mtodo

abreviado que podemos utilizar si estamos seguros de que el libro activo


es el libro al que deseamos agregar una nueva hoja. De lo contrario,
podemos especificar tota la ruta completa:
Application.Workbooks("Libro1.xlsx").Worksheets.Add

Ahora ya sabemos que VBA tiene un objeto para representar los libros de
Excel (Workbook) y otro objeto para representar las hojas de un libro
(Worksheet). Ambos tipos de objetos son almacenados dentro de
colecciones de objetos que son conocidas como Workbooks, que se
refiere a la coleccin de libros que se han abierto y Worksheets que es la
coleccin de hojas que pertenecen a un determinado libro.

El objeto Application en
VBA
Cuando escribimos macros con VBA trabajamos con mltiples objetos
que pueden ejecutar nuestras instrucciones adecuadamente, pero el
objeto Application est en el nivel ms alto de la jerarqua del modelo de
objetos de Excel.
El objeto Application simboliza a Excel mismo y nos da acceso a
opciones y configuraciones a nivel de la aplicacin. Muchas de las
opciones que podemos modificar con el objeto Application son las
mismas que encontramos en la ficha Archivo dentro del cuadro de
dilogo Opciones de Excel.
Ya que el objeto Application es el objeto principal dentro de VBA todos los
dems objetos derivan de l. Es por ello que encontrars frecuentemente
instrucciones que comienzan especificando el objeto Application:
Application.ActiveSheet.Name = "Reporte de Ventas"

Sin embargo, VBA nos permite, en la mayora de los casos, omitir la


escritura del objeto Application ya que supone que todos los dems
objetos provienen de l. De esta manera la siguiente instruccin tambin
es vlida.

ActiveSheet.Name = "Reporte de Ventas"

Colecciones del objeto Application


El objeto Application tiene algunas colecciones que son de mucha utilidad
como Sheets, Columns y Rows. La coleccin Sheets nos permite
acceder a todas las hojas de un libro:
Application.Sheets.Count

Es muy importante mencionar que la coleccin Sheets se referir al libro


de Excel que se encuentre activo en el momento de ejecutar esta
instruccin. Las colecciones Columns y Rows nos permitirn acceder a
las columnas y filas de la hoja activa.
Application.Columns(5).Select
Application.Rows(5).Select

Propiedades del objeto Application


El objeto Application tiene muchas propiedades como para mencionarles
todas en esta ocasin, pero algunas de las ms importantes son las
siguientes:
ActiveWorkbook. Devuelve un objeto Workbook que representa el
libro de Excel activo.
ActiveSheet. Regresa un objeto Worksheet que representa a la
hoja que est actualmente seleccionada (activa).
ActiveCell. Devuelve un objeto Range que representa la celda
activa dentro de la hoja activa en el libro de Excel activo.
ThisWorkbook. Esta propiedad devolver un objeto Workbook que
representar el libro que contiene la macro que est siendo
ejecutada.

Mtodos del objeto Application

Uno de los mtodos ms utilizados del objeto Application es el


mtodo InputBox que nos ayuda a mostrar un cuadro de dilogo que
solicita al usuario el ingreso de algn valor. Observa la siguiente lnea de
cdigo:
Impresiones = Application.InputBox(Prompt:="Nmero de impresiones:", _
Title:="Imprimir", Default:=1, Type:=1)

Esta instruccin har que Excel muestre un cuadro de dilogo pidiendo al


usuario que ingrese el nmero de impresiones que desea realizar. El
nmero ingresado por el usuario se guardar en la variable Impresiones.

El libro de macros personal


en Excel
Cuando creamos una macro en Excel podemos guardarla en el libro
actual o podemos guardarla en el libro de macros personal. La ventaja de
guardar una macro en el libro de macros personal es que nuestra macro
estar disponible para cualquier libro.
El libro de macros personal es en realidad un archivo oculto
llamado PERSONAL.XLSB y que es cargado cada vez que iniciamos
Excel. Si tienes Windows 7 podrs encontrar el archivo personal.xlsb en
la siguiente carpeta:
C:Usuarios[Usuario]AppDataRoamingMicrosoftExcelXLSTART

En la ruta que observas arriba [Usuario] es el nombre de tu usuario en el


equipo. Adems la carpeta AppData es una carpeta oculta por lo que no

la encontrars directamente en el navegador de Windows a menos que


habilites la vista de archivos ocultos.
Cmo crear el libro de macros personal en Excel

El libro de macros personal se crea la primera vez que se guarda una


macro en l. Para hacerlo, crea una macro y especifica que deseas
guardarla en el Libro de macros personal.

Cuando guardes el archivo Excel vers un mensaje preguntando si


deseas guardar los cambios realizados al libro de macros personal, para
lo cual debers pulsar el botn Guardar.

El libro de macros personal en el Editor de Visual Basic

Una vez que el libro de macros personal ha sido creado lo podrs ver
dentro del Editor de Visual Basic:

Por debajo del nombre VBAProject (PERSONAL.XLSB) encontrars la


carpeta Mdulos y dentro de ella encontrars todas las macros que se
hayan guardado en el libro de macros personal organizadas en mdulos.
Si deseas eliminar algn mdulo solamente debers hacer clic derecho
sobre l y seleccionar la opcin Quitar Mdulo.

Tipos de errores en VBA


No todas las cosas funcionan bien a la primera y seguramente te
encontrars con errores al programar en Excel. Existen dos tipos de
errores en VBA: errores de sintaxis y errores en tiempo de ejecucin.

Errores de sintaxis en VBA


Un error de sintaxis ocurre cuando tenemos un error con el lenguaje
VBA, es decir, cuando intentamos hacer algo que no est permitido. Este
tipo de errores son los ms fciles de localizar porque el Editor de Visual
Basic est configurado para avisarnos en el momento en que encuentra
un error de este tipo en nuestro cdigo.
Los errores de sintaxis en VBA surgen cuando intentamos insertar algn
operador o alguna instruccin de VBA en un lugar que no le corresponde.
Observa la siguiente imagen:

En este ejemplo he intentado utilizar la palabra Next en lugar del tipo de


dato de la variable. Es por eso que el Editor de Visual Basic muestra un
mensaje de error de compilacin. La palabra Next es parte del lenguaje
VBA pero la he utilizado en el lugar inapropiado y por eso obtengo el
error.
De igual manera el Editor de Visual Basic notar si hemos utilizado una
palabra que no pertenece al lenguaje VBA. En el siguiente ejemplo he
confundido la instruccin Mod (mdulo) y he colocado la palabra Mud.

Estos son solo unos ejemplos de errores de sintaxis que podemos


cometer pero como lo he mencionado antes, el Editor de Visual Basic nos
alertar sobre dichos errores y podremos detectarlos y corregirlos.

Errores en tiempo de ejecucin


Un error en tiempo de ejecucin ocurre cuando nuestra aplicacin ya
est siendo ejecutada e intenta hacer alguna accin que no est
permitida por Excel o por Windows. Esto ocasionar que nuestra
aplicacin colapse o que Excel deje de responder.
Este tipo de errores son ms difciles de encontrar pero aun as se
podrn encontrar algunos de ellos al hacer pruebas y depuracin de
nuestra aplicacin. Algunos ejemplos de este tipo de errores son los
siguientes:
Intentar realizar una operacin no permitida por el ordenador. Por
ejemplo una divisin entre cero o intentar sumar una cadena de
texto y un valor Double.
Intentar utilizar una librera de cdigo que no est accesible en ese
momento.
Utilizar un bucle con una condicin que nunca se cumple.
Tratar de asignar un valor que est fuera de los lmites de una
variable.
Existen muchas otras razones por las que podemos tener un error en
tiempo de ejecucin. La mejor manera de prevenir estos errores ser
haciendo una depuracin de nuestro cdigo pero eso ser tema de otro
artculo.
Lo importante por ahora es estar consiente de estos dos tipos de
errores en VBA y saber que debemos estar atentos para corregir todos
los errores de sintaxis de nuestro cdigo y minimizar al mximo los
posibles errores de ejecucin.

Depurar macros en Excel

Cuando nos encontramos con errores en nuestras macros podemos


depurar el cdigo utilizando el Editor de Visual Basic para encontrar
fcilmente los errores que pueda contener nuestro cdigo VBA.
Considera la siguiente macro:

Depurar cdigo VBA


Para iniciar con la depuracin del cdigo podemos seleccionar la opcin
de men Depuracin > Paso a paso por instrucciones o simplemente
pulsar la tecla F8.

Esto har que se inicie la ejecucin en la primera lnea, la cual se


mostrar con un fondo amarillo indicando que esa instruccin es la que
esta por ejecutarse.

Para continuar con la depuracin debemos pulsar de nuevo la tecla F8


hasta llegar al final del cdigo. Cada vez que pulsamos la techa F8
suceden las siguientes cosas:
1. Excel ejecuta la instruccin que est sombreada en color amarillo
2. Si Excel encuentra un error en la instruccin, entonces enviar un
mensaje de error.
3. Por el contrario, si no hubo error en dicha instruccin, entonces
Excel marcar en amarillo la siguiente instruccin a ejecutar.
De esta manera podemos ejecutar cada una de las lneas de nuestro
cdigo VBA y validar que no exista error alguno. Regresando a nuestro
ejemplo, al momento de llegar a la tercera instruccin y pulsar la tecla F8,
Excel enviar el siguiente mensaje de error:

El mensaje nos advierte que el objeto no admite esa propiedad o mtodo


y se est refiriendo al objeto Rangeen donde el mtodo Value no est
escrito de manera correcta y por lo tanto el depurador de VBA no
reconoce dicha propiedad. Pulsa el botn Aceptar para cerrar el cuadro
de dilogo y poder corregir el error en el cdigo.

Ya hemos hablado sobre los diferentes tipos de errores en VBA y la


depuracin nos ayudar a probar nuestro cdigo y a encontrar la gran
mayora de los errores que podamos tener. Es probable que al principio
veas a la depuracin como un trabajo muy exhaustivo pero cuando tus
programas y macros comiencen a crecer entonces vers todos los
beneficios que nos da la depuracin de macros en Excel.

Variables en VBA
Cuando programamos en VBA frecuentemente necesitamos un
repositorio para almacenar el resultado de alguna operacin.
Las variables en VBA son utilizadas para guardar valores y su tipo
depender de la clase de dato que deseamos guardar dentro de ellas.
En VBA existen variables de tipo entero que almacenan nmeros,
variables de tipo doble que tambin almacenan nmeros pero con
decimales, variables de tipo texto para guardar una cadena de caracteres
entre algunos otros tipos de variables. A continuacin haremos una
revisin de cada uno de estos tipos.
Variables de tipo entero

Las variables de tipo entero son utilizadas para guardar nmeros enteros.
Debemos utilizar la palabra claveInteger para declarar una variable de
este tipo.
Dim x As Integer
x = 6

En la primera instruccin estoy declarando la variable con el nombre x y


estoy indicando que ser del tipoInteger. Declarar una variable significa
avisar a Excel sobre la existencia de dicho repositorio para guardar
informacin. En la segunda instruccin asigno el valor 6 a la variable x.
Variables de tipo doble

Las variables de tipo doble pueden almacenar nmeros con el doble de


precisin incluyendo nmeros decimales. La palabra clave para este tipo
de variables es Double.
Dim x As Double
x = 3.1416

Aunque las variables de tipo doble pueden almacenar nmeros enteros


sin problema, no es recomendable hacerlo porque estaremos
desperdiciando espacio en la memoria del ordenador. Es decir, el
tamao reservado para una variable doble es el adecuado para guardar
nmeros decimales, si solo guardamos un nmero entero quedar
especio sin utilizar. Por lo tanto es recomendable utilizar siempre el tipo
de variable adecuado para cualquier nmero.
Variables de tipo texto

Una variable de tipo texto se declara con la palabra clave String. En el


siguiente cdigo declarar la variable libro y posteriormente le asignar
un valor.
Dim libro As String
libro = "Programacin en Excel"

Variables de tipo lgico

Una variable de tipo lgico es aquella que puede almacenar solamente


dos valores: falso o verdadero. La palabra clave para definir estas
variables es Boolean.
Dim continuar As Boolean
continuar = True

La primera lnea declara la variable booleana y en la segunda le


asignamos un valor. Solamente podemos asignar dos valores a este tipo
de variables: True (verdadero) y False (falso).

Estos son los tipos de variables bsicos en VBA. Existen algunos ms


que ir tratando en artculo posteriores. Mientras tanto es indispensable
que aprendas a declarar adecuadamente las variables en VBA porque
ser inevitable hacer uso de ellas dentro de nuestros programas.

Cadenas de texto en VBA


Existen varias funciones en VBA que podemos utilizar para manipular
cadenas de texto. A continuacin revisaremos algunas de estas
funciones VBA y observaremos el resultados de cada una de ellas.
Para iniciar con esta revisin, debes colocar un botn de comando dentro
de una hoja de Excel y despus hacer doble clic sobre l para introducir
el cdigo.

Unir cadenas de texto

Para unir dos (o ms) cadenas de texto podemos utilizar el operador &.
Observa el siguiente cdigo:

El resultado de este cdigo es el siguiente:

La funcin Left

La funcin Left en VBA nos ayuda a extraer un nmero determinado de


caracteres a la izquierda de la cadena de texto.

En el cdigo he especificado los 7 caracteres a la izquierda de la cadena


de texto. El resultado es el siguiente:

La funcin Right

La funcin Right nos permite extraer caracteres a la derecha de una


cadena de texto. Observa el siguiente cdigo:

En esta funcin la cuenta de caracteres se hace de derecha a izquierda


siendo el ltimo carcter de la cadena de texto el primero que extraer la
funcin Right. Para este ejemplo he pedido los ltimos 5 caracteres a la
derecha de la cadena de texto:

La funcin Len

La funcin Len nos ayuda a conocer la longitud de una cadena de texto,


es decir, la cantidad de caracteres que conforman a una cadena.

La funcin Len contar cada uno de los caracteres de la cadena y


regresar un nmero:

La funcin InStr

La funcin InStr devuelve la posicin de un carcter dentro de la cadena.


Supongamos que quiero encontrar la posicin de la letra M dentro de la
cadena que contiene el valor Hola Mundo.

Es importante resaltar que la funcin InStr es sensible a maysculas y


minsculas. Observa cmo he especificado buscar la letra M
(mayscula) y el resultado de la funcin es el siguiente:

La funcin InStr encontr la letra M en la posicin nmero 6


comenzando desde la izquierda. Si en lugar de la letra M busco la letra
m (minscula), la funcin InStr devolver el valor 0 (cero) indicando que
no ha encontrado dicha letra.
Adems de indicar letras individuales en la funcin InStr, tambin
podemos especificar palabras completas por ejemplo:
cadena = "Hola Mundo"
InStr (cadena, "Mundo")

Por ejemplo, al buscar la palabra Mundo dentro de la cadena de texto


obtendremos como resultado la posicin nmero 6 ya que en esa
posicin comienza la palabra Mundo.
La funcin Mid

Con la funcin Mid podemos extraer una subcadena de otra cadena de


texto con tan solo especificar la posicin inicial de la subcadena y su
longitud. Observa el siguiente ejemplo:

La funcin Mid se mover a la posicin 15 de la cadena y a partir de ah


contar 7 caracteres y devolver como resultado la cadena comprendida
entre ambas posiciones. En nuestro ejemplo, la palabra funcion es la
que se encuentra entre dichas posiciones.

Las funciones de texto en VBA nos ayudarn a manipular


adecuadamente las cadenas de texto y podremos obtener los resultados
que necesitamos.

La declaracin If-Then en
VBA
En ocasiones necesitamos ejecutar algunas lneas de cdigo de nuestra
macro solamente cuando alguna condicin se haya cumplido.
La declaracin If-Then nos permite validar una condicin para tomar
una decisin adecuada.
La sentencia If-Then en VBA es la ms bsica de todas las declaraciones
de control de flujo que son aquellas declaraciones que nos permiten
tomar decisiones en base a una condicin. Esta declaracin la podemos
traducir como Si-Entonces y la utilizaremos en situaciones donde
necesitamos realizar la siguiente evaluacin: Si se cumple la
condicin Entonces haz esto.

Ejemplo de la declaracin If-Then


Para probar el funcionamiento de la declaracin If-Then inserta un botn
de comando (Control ActiveX) en una hoja de Excel y haz doble clic
sobre l para colocar el siguiente cdigo:

En el primer paso se hace la declaracin de las variables que


utilizar en el resto del cdigo.
En el segundo paso asigno el valor de la celda A1 a la
variable calificacin.
El tercer paso contiene la declaracin If-Then y que prueba Si el
valor de la variable calificacin es mayor o igual a 60. En caso de
ser verdadero Entonces se asigna el valor Aprobado a la
variable resultado.
El ltimo paso es asignar el valor de la variable resultado a la celda
B2.
Ahora observa el resultado al ejecutar esta macro.

La declaracin If-Then-Else
Parece que todo funciona muy bien en el cdigo anterior pero an lo
podemos mejorar agregando la declaracin Else de manera que
tengamos una declaracin de la forma If-Then-Else. Esta variante nos

permite hacer la siguiente evaluacin: Si se cumple la


condicin Entonces haz esto De lo contrario haz otra cosa.
La declaracin Else en VBA nos permite indicar otro bloque de
instrucciones que se deben ejecutar en caso de que la condicin sea
falsa. De esta manera podemos tomar una accin determinada en caso
de que la condicin se cumpla o en caso de que no se cumpla. Ahora
modificar el ejemplo anterior para asegurarme de que en caso de que la
condicin de calificacin mayor o igual a 60 no se cumpla se despliegue
el resultado reprobado. Observa el siguiente cdigo.

En el tercer paso puedes observar la declaracin If-Then-Else. Ahora


observa el efecto de este cambio al momento de ejecutar el cdigo:

Por ltimo quiero que observes que en este segundo ejemplo


la declaracin If-Then-Else termina con la declaracin End If. Siempre

que utilicemos la declaracin If-Then o la declaracin If-Then-Else


debemos terminar con End If.
La nica ocasin donde no se termina con End If es cuando la
declaracin If-Then se puede colocar en una sola lnea como es el caso
del primer ejemplo de este artculo.

Acceder celdas con VBA


Existe un par de maneras para acceder las celdas de nuestras hojas
utilizando VBA. Podemos utilizar el objeto Range y tambin podemos
utilizar el objeto Cells. A continuacin revisaremos ambos objetos.
Seleccionar una celda

Si deseamos seleccionar la celda B5 podemos utilizar cualquiera de las


dos instrucciones siguientes:
Range("B5").Select
Cells(5, 2).Select

El objeto Cells tiene como primer argumento el nmero de fila y como


segundo argumento el nmero de columna.
Seleccionar un rango

Para seleccionar un rango de celdas lo ms conveniente es utilizar el


objeto Range de la siguiente manera:
Range("A1:D5").Select

El objeto Cells no nos permite seleccionar un rango porque solamente


podemos especificar una celda a la vez.
Establecer el valor de una celda

Para establecer el valor de una celda podemos utilizar alguna de las


siguientes instrucciones:

Range("B5").Value = 500
Cells(5, 2).Value = 600

Ventaja del objeto Cells

Es mucho ms comn encontrarse el objeto Range en las aplicaciones


VBA, sin embargo el objeto Cells ofrece una ventaja que debemos
considerar cuando necesitamos hacer un recorrido programtico por
varias celdas ya que ser muy sencillo especificar las filas y columnas
utilizando una variable numrica.
For i = 1 To 10
For j = 1 To 5
Cells(i, j).Value = i * j
Next j
Next i

El bucle For-Next en VBA


En trminos de programacin, un bucle es una instruccin que nos
permitir ejecutar repetidamente un conjunto de instrucciones hasta que
se cumpla la condicin que hayamos especificado. Los bucles tambin
son conocidos como ciclos.

La instruccin For-Next
El bucle For-Next es una de las instrucciones ms tiles al programar en
VBA. La sintaxis de esta instruccin es la siguiente:
For inicializacin de variable To lmite
{Conjunto de instrucciones que se repetirn}
Next incrementar variable

Inicializacin de variable: Ya que la instruccin For Next repite un


conjunto de instrucciones un nmero de veces especfico,

debemos inicializar una variable que ir contando cada una de las


repeticiones. Es comn encontrar la instruccin escrita como For i
= 1 lo cual indica que la variable i llevar la cuenta de las
repeticiones que deseamos que inicien en 1.
Lmite: Adems de inicializar la variable que llevar la cuenta de las
repeticiones, debemos especificar un lmite donde se detendr el
ciclo. Este lmite es indicado con la instruccin To. De esta manera,
si deseamos hacer un bucle que vaya desde 1 hasta 5 la
instruccin la escribiremos como For i = 1 To 5.
Incrementar variable: El final del conjunto de instrucciones se
indica con la instruccin Next y que va seguida del nombre de la
variable que lleva la cuenta para incrementar su valor en uno. As
podemos terminar el bucle con la instruccin Next i.

Ejemplo de un bucle For-Next


A continuacin un ejemplo muy sencillo de un bucle For-Next donde la
nica instruccin que se repite es la de mostrar una ventana de dilogo
con el valor de la variable i:

Con este bucle provocaremos que se muestre una ventana de dilogo 5


veces y en cada una de ellas se mostrar el valor actual de la variable i
que comenzar con 1 y terminar con 5. Observa el resultado:

Ya que la variable i comienza con el valor 1, el primer cuadro de dilogo


muestra el mensaje i = 1, despus i = 2 y as sucesivamente hasta
llegar al lmite. El bucle For-Next en VBA nos ayudar a crear ciclos que
ejecutarn un conjunto de instrucciones hasta alcanzar el lmite que
hayamos especificado.

Operadores lgicos en VBA


Los operadores lgicos ms comunes en VBA son: And y Or. Cada uno
de estos operadores es de mucha utilidad para evaluar condiciones y
tomar decisiones adecuadas sobre el cdigo que ser ejecutado.
El operador lgico And

El operador lgico And es el operador que nos ayuda a forzar el


cumplimiento de dos condiciones. Este operador lo traducimos como Y
de manera que para ejecutar un bloque de cdigo se debe cumplir
lacondicin1 Y la condicin2.

En el siguiente ejemplo tengo la calificacin de dos exmenes.


Solamente si ambos exmenes tienen una calificacin mayor a 70,
entonces el estudiante ser aprobado, de lo contrario la calificacin ser
reprobatoria.

El cdigo que se ejecutar al pulsar el botn ser el siguiente:

Al ejecutar este cdigo obtendremos el resultado Aprobado ya que


ambos exmenes tienen una calificacin mayor a 70:

De esta manera comprobamos que el operador lgico And nos ayuda a


forzar que ambas condiciones se cumplan. En cambio, si el valor de una
de las celdas es menor a 70, entonces tendremos un resultado diferente:

El operador lgico And devolver el valor verdadero solamente cuando


ambas condiciones se cumplan y ser suficiente con que una de ellas no
se cumpla para obtener un resultado negativo.
El operador lgico Or

El operador lgico Or lo traducimos como O y nos permitir saber si al


menos una de las condiciones se cumple, es decir, si la condicin1 O la
condicin2 se cumplen.
Si cambiamos un poco el ejemplo anterior y decimos que es suficiente
que alguna de las dos calificaciones sea mayor a 70 para que el
estudiante sea aprobado, entonces podemos modificar el cdigo de la
siguiente manera:

Si alguna de las calificaciones es mayor a 70, entonces el estudiante


ser aprobado:

La nica manera en que el operador lgico Or nos devuelva un valor


falso es que ninguna de las condiciones se cumpla. En nuestro ejemplo,
el alumno estar reprobado solamente cuando ambas calificaciones sean
menores a 70:

Podemos concluir que al evaluar dos condiciones, los operadores And y


Or se comportarn de la siguiente manera:

Eventos en VBA
Los eventos en VBA nos ayudan a monitorear las acciones que realizan
los usuarios en Excel de manera que podamos controlar la accin a
tomar cuando el usuario hace algo especfico como el activar una hoja o
hacer clic en alguna celda.

Ejemplos de eventos en VBA

Algunos ejemplos de eventos en VBA son los siguientes:


WorkbookOpen: El usuario abre un libro de Excel.
WorkbookActivate: El usuario activa un libro de Excel.
SelectionChange: El usuario cambia la seleccin de celdas en una
hoja.
Para descubrir los eventos que tiene un objeto es suficiente con abrir el
Editor de Visual Basic y posteriormente el Examinador de objetos
(F2). En el panel izquierdo se mostrarn los objetos y en el panel
derecho las propiedades, mtodos y eventos de dicho objeto. Podrs
distinguir los eventos porque tienen un icono en forma de rayo (color
amarillo):

Un ejemplo de eventos en VBA


El ejemplo que crearemos en esta ocasin es para activar un cuadro de
dilogo con el mensaje Bienvenido a la Hoja 2 y que se mostrar

cuando activemos la Hoja2 de nuestro libro. Para comenzar, debes


seleccionar el objeto Hoja2 del panel izquierdo del Editor de Visual Basic
y posteriormente seleccionar la opcin Worksheet:

Esto crear automticamente la subrutina para el evento


SelectionChange pero podemos fcilmente crear otro evento
seleccionndolo de la lista de Procedimientos. Para este ejemplo crear
el evento Activate:

Una vez creada la subrutina para el evento Activate solamente insertar


el cdigo para que se muestre el mensaje dentro del cuadro de dilogo:

Ahora que hemos definido una accin asociada al evento Activate de la


Hoja2, el mensaje se mostrar cada vez que actives la Hoja2.
Los eventos en VBA son de mucha utilidad porque nos ayudan a
controlar el momento exacto en que deseamos ejecutar algn bloque de
cdigo al iniciarse alguna accin por el usuario.

Arreglos en VBA
Los arreglos en VBA pueden ser entendidos como un grupo de
variables contenidas dentro de otro repositorio. Dentro de un arreglo
podemos referirnos a un valor especfico (elemento) utilizando su
posicin (ndice).
Para comprender mejor lo que es un arreglo observa la siguiente imagen:

Un arreglo es una coleccin de casillas que contendrn variables


individuales. Casa casilla tendr un nmero de ndice el cual nos
permitir asignar u obtener el valor que contiene.
Crear un arreglo en VBA

Para crear un arreglo en VBA utilizamos la siguiente instruccin:


Dim Paises(1 To 5) As String

Con este cdigo estamos creando el arreglo llamado Paises que tendr 5
elementos y estamos indicando que cada uno de los elementos ser del
tipo String, es decir, cadenas de texto. Una vez que ha sido creado el
arreglo podemos asignar sus valores de la siguiente manera.
Paises(1) = "Argentina"
Paises(2) = "Colombia"
Paises(3) = "Espaa"
Paises(4) = "Mxico"
Paises(5) = "Per"

Acceder un elemento del arreglo

Para acceder cualquier elemento del arreglo simplemente colocamos el


nombre del arreglo seguido por parntesis y el nmero de ndice del
elemento que necesitamos. Por ejemplo, para desplegar un mensaje con
el nombre de pas Espaa puedo utilizar la siguiente instruccin:
MsgBox Paises(3)

El resultado de esta instruccin ser el siguiente:

Fecha y hora en VBA

Los valores de fecha y hora en VBA pueden ser manipulados de


diversas maneras. En esta ocasin aprenderemos cmo obtener el ao,
mes y da en VBA y cmo hacer operaciones bsicas con fechas.
Para realizar estos ejemplos debes colocar un control de botn en una
hoja de Excel y colocar las lneas de cdigo mostradas.

Obtener la fecha y hora actual


Para obtener la fecha actual en VBA utilizamos la funcin Date y para
obtener la hora actual usamos Now.

En este ejemplo las variables fecha Actual y hora Actual contienen la


fecha y horas actuales respectivamente.

Obtener el ao, mes y da


En el ejemplo anterior he obtenido la fecha actual en la variable fecha
Actual, sin embargo, si deseo mostrar solamente el ao puedo utilizar la
funcin Year.

El resultado de este cdigo es el siguiente:

Al trabajar con fechas podremos obtener el mes utilizando la funcin


Month y para obtener el da la funcin Day.

Obtener la hora, minuto y segundo


Para obtener la hora de la variable horaActual utilizaremos la funcin
Hour de la siguiente manera:

El resultado es el siguiente:

Para obtener el minuto y el segundo podremos utilizar las funciones


Minute y Second.

Convertir una cadena de texto en fecha


Ya hemos visto que la funcin Date nos devuelve la fecha actual, pero
podemos utilizar otra funcin que nos permitir convertir una cadena de
texto en una fecha. La funcin que utilizaremos para este ser la funcin
DateValue.

El nico argumento de la funcin DateValue es la cadena de texto que


convertir en fecha. El resultado de esta conversin es el siguiente:

Sumar das a una fecha


Para sumar das a una fecha en VBA utilizaremos la funcin DateAdd.
Esta funcin nos permite especificar la cantidad exacta de das a sumar:

Observa el resultado de sumar 5 das a la fecha original:

El primer argumento de la funcin DateAdd determina la unidad de


tiempo que ser sumada. En este ejemplo especifiqu d para indicar
das, pero podemos utilizar otras medidas de tiempo:
yyyy para aos
m para meses
d para das
ww para semanas
Las fechas y horas son un tipo de dato muy comn con el que
seguramente tendrs que trabajar al crear tus macros. Es importante
que aprendas a utilizar las funciones VBA que nos permitirn manipular
adecuadamente la informacin.

Funciones VBA

El lenguaje de programacin VBA contiene un nmero considerable


de funciones que podemos utilizar para construir cdigo en Excel.
Cuando ests escribiendo cdigo, puedes introducir la palabra VBA
seguida de un punto y vers una lista desplegable de estas funciones.
La siguiente tabla provee una descripcin breve de algunas de
las funciones VBA ms utilizadas.
FUNCIN

DESCRIPCIN

Abs

Regresa el valor absoluto de un nmero

Asc

Obtiene el valor ASCII del primer carcter de una


cadena de texto

CBool

Convierte una expresin a su valor booleano

CByte

Convierte una expresin al tipo de dato Byte

CCur

Convierte una expresin al tipo de dato moneda


(Currency)

CDate

Convierte una expresin al tipo de dato fecha


(Date)

CDbl

Convierte una expresin al tipo de dato doble


(Double)

CDec

Convierte una expresin al tipo de dato decimal


(Decimal)

Choose

Selecciona un valor de una lista de argumentos

Chr

Convierte un valor ANSI en valor de tipo texto

CInt

Convierte una expresin en un dato de tipo entero


(Int)

CLng

Convierte una expresin en un dato de tipo largo


(Long)

CreateObject

Crea un objeto de tipo OLE

CStr

Convierte una expresin en un dato de tipo texto


(String)

CurDir

Regresa la ruta actual

CVar

Convierte una expresin en un dato de tipo


variante (Var)

Date

Regresa la fecha actual del sistema

DateAdd

Agrega un intervalo de tiempo a una fecha


especificada

DateDiff

Obtiene la diferencia entre una fecha y un intervalo


de tiempo especificado

DatePart

Regresa una parte especfica de una fecha

DateSerial

Convierte una fecha en un nmero serial

DateValue

Convierte una cadena de texto en una fecha

Day

Regresa el da del mes de una fecha

Dir

Regresa el nombre de un archivo o directorio que


concuerde con un patrn

EOF

Regresa verdadero si se ha llegado al final de un


archivo

FileDateTime

Regresa la fecha y hora de la ltima modificacin


de un archivo

FileLen

Regresa el nmero de bytes en un archivo

FormatCurrenc
y

Regresa un nmero como un texto con formato de


moneda

FormatPercent

Regresa un nmero como un texto con formato de


porcentaje

Hour

Regresa la hora de un valor de tiempo

IIf

Regresa un de dos partes, dependiendo de la


evaluacin de una expresin

InputBox

Muestra un cuadro de dilogo que solicita la


entrada del usuario

InStr

Regresa la posicin de una cadena de texto dentro


de otra cadena

InStrRev

Regresa la posicin de una cadena de texto dentro


de otra cadena pero empezando desde el final

Int

Regresa la parte entera de un nmero

IsDate

Regresa verdadero si la variable es una fecha

IsEmpty

Regresa verdadero si la variable est vaca

IsError

Regresa verdadero si la expresin es un valor de


error

IsNull

Regresa verdadero si la expresin es un valor nulo

IsNumeric

Regresa verdadero si la variable es un valor


numrico

Join

Regresa una cadena de texto creada al unir las


cadenas contenidas en un arreglo

LCase

Regresa una cadena convertida en minsculas

Left

Regresa un nmero especfico de caracteres a la


izquierda de una cadena

Len

Regresa la longitud de una cadena (en caracteres)

LTrim

Remueve los espacios a la izquierda de una


cadena

Mid

Extrae un nmero especfico de caracteres de una


cadena de texto

Minute

Regresa el minuto de una dato de tiempo

Month

Regresa el mes de una fecha

MsgBox

Despliega un cuadro de dialogo con un mensaje


especificado

Now

Regresa la fecha y hora actual del sistema

Replace

Reemplaza una cadena de texto con otra

Space

regresa una cadena de texto con el nmero de


espacios especificados

Split

Regresa un arreglo formado for cadenas de texto


que formaban una sola cadena

Str

Regresa la representacin en texto de un nmero

Right

Regresa un nmero especificado de caracteres a la


derecha de una cadena de texto

Rnd

Regresa un nmero aleatorio entre 0 y 1

Round

Redondea un nmero a una cantidad especfica de


decimales

RTrim

Remueve los espacios en blanco a la derecha de


una cadena de texto

Second

Regresa los segundos de un dato de tiempo

StrComp

Compara dos cadenas de texto

StrReverse

Invierte el orden de los caracteres de una cadena

Time

Regresa el tiempo actual del sistema

Timer

Regresa el nmero de segundos desde la media


noche

TimeValue

Convierte una cadena de texto a un nmer de serie


de tiempo

Trim

Remueve los espacios en blanco al inicio y final de


una cadena de texto

TypeName

Obtiene el nombre del tipo de dato de una variable

UCase

Convierte una cadena de texto en maysculas

Val

Regresa el nmero contenido en una cadena de


texto

Weekday

Regresa un nmero que representa un da de la


semana

WeekdayName

Regresa el nombre de un da de la semana

Year

Obtiene el ao de una fecha

Creando una funcin VBA


Como hemos visto en el artculo Tu primera macro con VBA, una
subrutina nos ayuda a organizar y agrupar las instrucciones en nuestro

cdigo. El da de hoy te mostrar cmo crear una funcin VBA, la cual


es similar a una subrutina excepto por una cosa.
A diferencia de las subrutinas, las funciones VBA fueron diseadas para
retornar un valor. A travs de una funcin podemos agrupar cdigo que
nos ayudar a hacer algn clculo especfico y obtener un resultado de
regreso. Una funcin VBA tambin es conocida como Funcin Definida
por el Usuario, UDF por sus siglas en ingls, y una vez creada puede ser
utilizada de la misma manera que las funciones incluidas en Excel como
la funcin SUMAR o la funcin BUSCARV. Esto hace que las funciones
VBA sean una herramienta muy poderosa.
A continuacin mostrar una funcin que toma un rango y regresa la
suma de cada una de sus celdas. Es importante insertar el cdigo dentro
de un Mdulo tal como se muestra en el artculo Tu primera macro con
VBA. Posteriormente ir explicando el detalle de la funcin.

La palabra clave Function

La primera lnea de cdigo comienza con la palabra Function la cual


define el inicio de la funcin. Observa tambin cmo la ltima lnea de
cdigo es End Function que est especificando el trmino de la funcin.
Inmediatamente despus de la palabra clave Function se debe
especificar el nombre de la funcin que en este ejemplo
es MiSuma seguida de parntesis que de manera opcional pueden
contener una lista de parmetros.

Parmetros de una funcin VBA

Los parmetros son el medio por el cual pasamos informacin de entrada


a la funcin. Algunas funciones necesitarn de dichas entradas para
realizar algn clculo y algunas otras no, es por ello que los parmetros
de una funcin son opcionales. Puedes incluir tantos parmetros como
sean necesarios y solamente debes recordar separarlos por una coma.
Un parmetro no es ms que una variable y por lo tanto puedes observar
que en el ejemplo he definido la variable rango que ser del tipo Range.
Valor de retorno

Como mencion al principio, la caracterstica principal de una funcin es


que puede regresar un valor. Es por eso que al definir una funcin se
debe indicar el tipo del valor de retorno que tendr dicha funcin. En este
caso el valor de retorno ser de tipo Double y se est especificado por
las palabras As Double que aparecen despus de los parntesis.
Cuerpo de la funcin VBA

Una vez definida la funcin se pueden especificar todas las instrucciones


que sern ejecutas. En el ejemplo he comenzado por definir un par de
variables, la variable celda que ser del tipo Range y la
variable resultado del tipo Double. En sta ltima variable es donde se
ir acumulando la suma de todas las celdas.
La parte central de la funcin se encuentra en la instruccin For Each ya
que realiza un recorrido por todas las celdas del rango que fue
especificado como parmetro. Para cada celda que se encuentra se va
sumando su contenido en la variable resultado.
Retornando el valor

Una vez que se han hecho los clculos necesarios, es importante


regresar el valor. Para hacerlo es indispensable igualar el nombre de la
funcin al valor o variable que contiene el valor que se desea regresar.
En nuestro ejemplo, la variable resultado es la que contiene la suma de
todas las celdas por lo que se iguala con el nombre de la funcin en la
lnea MiSuma = resultado.

Probando la funcin VBA

Finalmente probar la funcin VBA recin creada dentro de una hoja de


Excel. Tal como lo definimos en el cdigo, el nico parmetro de la
funcin debe ser un rango del cual me regresar la suma de los valores
de la celda. Observa el siguiente ejemplo.

Aunque la funcin MiSuma hace lo mismo que la funcin de Excel


SUMAR, nos ha servido de ejemplo para introducir el tema de las
funciones en VBA. Con este ejemplo tan sencillo hemos creado nuestra
primera funcin VBA.

Controles de formulario en
Excel
Los controles de formulario en Excel son objetos que podemos colocar
dentro de una hoja de nuestro libro, o dentro de un formulario de usuario
en VBA, y nos darn funcionalidad adicional para interactuar mejor con
los usuarios y tener un mejor control sobre la informacin.
Podemos utilizar estos controles para ayudar a los usuarios a seleccionar
elementos de una lista predefinida o permitir que el usuario inicie una
macro con tan solo pulsar un botn. Los controles de formulario en
Excel se encuentran dentro de la ficha Programador dentro del grupo
Controles. Solamente pulsa el botn Insertar y observars cada uno de
ellos:

Justo por debajo de los controles de formulario podrs observar el grupo


de controles ActiveX pero sus diferencias y similitudes las discutiremos
en otro artculo. Por ahora nos enfocaremos solamente en los controles
de formulario.

Cmo insertar un control de formulario en Excel?


Para insertar cualquiera de los controles de formulario debes
seleccionarlo del men desplegable y hacer clic sobre la hoja de Excel
arrastrando el borde para dibujar el contorno del control. Observa este
procedimiento.

Los diferentes controles de formulario


Existen diferentes tipos de controles de formulario en Excel que
ofrecen diversos tipos de funcionalidad e interaccin con el usuario.
Desde una simple etiqueta hasta controles que permiten una seleccin

mltiple de sus opciones. A continuacin una breve descripcin de cada


uno de ellos.
Barra de desplazamiento. Al hacer clic en las flechas se va
desplazando la barra dentro de un intervalo predefinido.
Botn. El botn nos permite ejecutar una macro al momento de
hacer clic sobre l.
Botn de opcin. Nos permite una nica seleccin dentro de un
conjunto de opciones.
Casilla de verificacin. Permite la seleccin o no seleccin de una
opcin.
Control de nmero. Nos ayuda a aumentar o disminuir un valor
numrico.
Cuadro combinado. Es una combinacin de un cuadro de texto
con un cuadro de lista.
Cuadro de grupo. Agrupa varios controles dentro de un
rectngulo.
Cuadro de lista. Muestra una lista de valores de los cuales
podemos elegir una sola opcin o mltiples opciones de acuerdo a
la configuracin del control.
Etiqueta. Permite especificar un texto o breves instrucciones en el
formulario.

Controles de formulario no disponibles en Excel


2010
Los controles de formulario han estado presentes por varias versiones de
Excel, sin embargo a partir de Excel 2010 existen algunos controles que
ya no pueden ser utilizados dentro de las hojas como lo son el Campo de
texto, el Cuadro combinado de lista y el Cuadro combinado desplegable,
sin embargo podremos alcanzar funcionalidad similar utilizando controles
ActiveX.

Controles ActiveX en Excel


Los controles ActiveX son un tipo de controles que nos permiten
agregar funcionalidad de formularios a nuestros libros de Excel. Existe
otro tipo de controles que es conocido como Controles de formulario y
que tienen una funcionalidad similar, sin embargo existen algunas
diferencias entre ambos tipos.
Controles ActiveX y controles de formulario

Los controles de formulario fueron introducidos desde la versin 4 de


Excel y por lo tanto han estado presentes en la aplicacin por ms
tiempo que los controles ActiveX los cuales comenzaron a ser utilizados
a partir de Excel 97. Ya que los controles ActiveX fueron introducidos
posteriormente ofrecen ms posibilidades de configuracin y formato que
los controles de formulario. Ambos tipos de controles se encuentran en
la ficha Programador.

La diferencia ms significativa entre ambos es la manera en como


podemos obtener informacin de los controles al momento de interactuar
con el usuario. Los controles de formulario solamente respondern
despus de que el usuario ha interactuado con ellos, como despus de
haber pulsado el botn. Por el contrario, los controles ActiveX responden
de manera continua a las acciones del usuario lo cual nos permite
realizar acciones como cambiar el tipo de puntero del mouse que se
muestra al colocar el puntero del ratn sobre el botn.

Propiedades de los controles ActiveX

A diferencia de los controles de formulario, los controles ActiveX tienen


una serie de propiedades que podemos configurar pulsando el botn
Propiedades que se encuentra dentro del grupo Controles de la ficha
Programador.

Antes de poder ver las propiedades de un control ActiveX debemos


pulsar el botn Modo Diseo el cual nos permitir seleccionar el control y
posteriormente ver sus propiedades. Cada tipo de control ActiveX
mostrar una ventana de Propiedades con sus propias caractersticas. A
continuacin un ejemplo de la ventana Propiedades para un botn de
comando ActiveX:

Controles ActiveX con subrutinas VBA

Otra diferencia entre los controles de formulario y los controles ActiveX


es que los primeros pueden tener asignada una macro y al hacer clic
sobre el control de formulario se iniciar la ejecucin de dicha macro.
Los controles ActiveX no tienen asignada una macro explcitamente
sino que podemos asignar cdigo VBA para cada evento del control. Un
evento de un control ActiveX puede ser el evento de hacer clic sobre el
control, el evento de hacer doble clic, el evento de obtener el foco sobre
el control ActiveX, entre otros eventos ms. Para asignar cdigo a uno de
los eventos de un control ActiveX solamente debemos hacer clic derecho
sobre l y seleccionar la opcin Ver cdigo.

Esto mostrar el Editor de Visual Basic con una subrutina para el evento
Click() donde podremos escribir nuestro cdigo.

En la lista desplegable de la derecha podemos observar la lista de


eventos disponibles para nuestro control ActiveX y para los cuales
podemos escribir cdigo VBA. Al seleccionar cualquiera de dichos
eventos se insertar una nueva subrutina que podremos utilizar. Son
precisamente la gran cantidad de eventos disponibles para los controles
ActiveX lo que los hace controles muy poderosos que podemos utilizar
en nuestros formularios.
Otra ventaja de los controles ActiveX en Excel

En la versin de Excel 2010 algunos controles de formulario han dejado


de ser soportados y no podemos utilizarlos ms en nuestras hojas. Ese

es el caso del control de formulario conocido como campo de texto. Sin


embargo, dentro de la lista de controles ActiveX seguimos
teniendo disponible el control llamado Cuadro de texto lo cual puede
hacer atractiva la opcin de utilizar controles ActiveX en Excel en lugar
de controles de formulario.

Cuadro de texto en Excel


El cuadro de texto es un control ActiveX que muestra un campo vaco
donde el usuario puede introducir cualquier texto. En esta ocasin
revisaremos cmo incrustar un cuadro de texto y hacer referencia al
mismo desde cdigo VBA.
Insertar un cuadro de texto en Excel

Para insertar un cuadro de texto en una hoja de Excel debes ir a la ficha


Programador y hacer clic en el botn Insertar y entonces hacer clic sobre
la opcin Cuadro de texto de la seccin Controles ActiveX.

El puntero del ratn se convertir en una cruz la cual nos permitir


dibujar el cuadro de texto sobre la hoja de Excel. Una vez dibujado el
cuadro de texto podrs hacer clic derecho sobre l y seleccionar la
opcin Propiedades para conocer el nombre que la ha sido asignado.

Tambin puedes ver las propiedades de cualquier control


seleccionndolo primero y pulsando el botn Propiedades que se
encuentra dentro del grupo Controles de la ficha Programador.
Modificar valor del cuadro de texto

Si deseas colocar un texto dentro del cuadro de texto desde VBA


puedes utilizar una instruccin como la siguiente:
TextBox1.Text = "Texto inicial"

Esto har que el cuadro de texto se vea de la siguiente manera:

Leer valor del cuadro de texto

Si quieres leer el valor del cuadro de texto y colocarlo en una celda


podemos utilizar la siguiente instruccin:
Range("A1").Value = TextBox1.Text

El valor de la celda ser el mismo que el del cuadro de texto.

Si deseas limpiar el cuadro de texto puedes utilizar la siguiente


instruccin:
TextBox1.Text = ""

Cuadro de lista en VBA


El cuadro de lista es un control ActiveX que nos permite desplegar una
serie de opciones de las cuales el usuario puede realizar una seleccin.
Podemos configurar el cuadro de lista para permitir seleccionar uno o
varios elementos de la lista.
Dibujar un cuadro de lista

Para insertar un cuadro de lista en una hoja de Excel debemos ir a la


ficha Programador y pulsar el botn Insertar para seleccionar la
opcin Cuadro de lista (control ActiveX).

Especificar los elementos del cuadro de lista

Una alternativa para indicar los elementos de un cuadro de lista es a


travs de la propiedad llamadaListFillRange. Para ello debemos abrir las
propiedades del control e indicar el rango de celdas que contiene los
elementos:

En este ejemplo he especificado que los valores sean tomados del rango
A1:A6, lo cual da como resultado un cuadro de lista con los valores
especificados en dicho rango:

Elementos del cuadro de lista por cdigo

Otra alternativa para indicar los elementos de un cuadro de lista es a


travs de cdigo VBA. Para ello puedes incluir el siguiente cdigo en el
evento Workbook_Open:

De esta manera cuando se abra el libro se agregarn las opciones


al cuadro de lista llamado ListBox1.
Asociar una celda al cuadro de lista

Adicionalmente podemos asociar una celda al cuadro de lista la cual


mostrar la seleccin que hagamos. Para hacer esta asociacin
debemos especificar la direccin de la celda en la propiedad LinkedCell:

De esta manera, cada vez que hagamos una seleccin de alguna de las
opciones del cuadro de lista se ver reflejado su valor en la celda
asociada:

Cuadro combinado en
VBA
Excel tiene un control ActiveX conocido como Cuadro combinado el
cual tambin es llamado comnmente por su nombre en ingls: Combo
Box. Este control nos permite crear listas desplegables en nuestros
formularios.
Para insertar un Cuadro combinado debemos ir a la ficha Programador
y dentro del botn Insertar pulsar el comando Cuadro combinado (control
ActiveX):

Despus de dibujar el Cuadro combinado tendrs un resultado como el


siguiente:

Agregar elementos al cuadro combinado


Si quiero que el Cuadro combinado muestre los valores del rango
A1:A5, puedo utilizar la propiedad ListFillRange donde puedo indicar este
rango:

Como resultado obtendr los valores de las celdas como elementos


del Cuadro combinado:

Diferencia con el cuadro de lista

Una diferencia importante entre el Cuadro combinado y el cuadro de


lista es que el primero permite que el usuario capture una opcin
diferente a las mostradas en la lista. En el ejemplo anterior no apareca el
da domingo como parte de los elementos, sin embargo puedo capturar
el da domingo dentro del cuadro de lista.

Si quieres evitar que el usuario introduzca sus propios valores existen


dos opciones:
Utilizar el control ActiveX Cuadro de lista en lugar del Cuadro
combinado
Utilizar el Cuadro combinado pero validar la opcin seleccionada
con cdigo VBA de manera que nos aseguremos que el usuario ha
seleccionado una opcin de la lista. Un ejemplo de cdigo de
validacin es el siguiente:

Asociar una celda al cuadro combinado


Al igual que con otros controles ActiveX, podemos asocias una celda al
cuadro combinado de manera que muestre el elemento de la lista que
haya sido seleccionado. Esta configuracin la hacemos en la propiedad
LinkedCell:

Cuando selecciones un elemento del cuadro combinado se reflejar


dicha seleccin en la celda indicada en la propiedad LinkedCell:

Вам также может понравиться