Está en la página 1de 70

INTRODUCCIN A LAS

MACROS

Publicado por Moiss el 4 de octubre, 2011.


https://exceltotal.com/introduccion-a-las-macros/

Introduccin a las macros


Las macros de Excel nos permiten automatizar tareas que realizamos
cotidianamente de manera que podamos ser ms eficientes en
nuestro trabajo. Una macro no es ms que una serie de comandos o
instrucciones que permanecen almacenados dentro de Excel y que
podemos ejecutar cuando sea necesario y cuantas veces lo
deseemos.
Aunque las macros son un tema avanzado de Excel puedes consultar
los siguientes artculos para comenzar a familiarizarte con este tema.
Una vez que hayas dado los primeros pasos en el mundo de
las macros y la programacin en VBA descubrirs que Excel se
convierte en una herramienta muy poderosa para solucionar cualquier
problema que afrontes en el manejo de informacin.
Publicado por Moiss el 4 de octubre, 2011.

Contenido
INTRODUCCIN A LAS MACROS......................................................................1
Introduccin a las macros................................................................................... 2
Qu es una macro de Excel?............................................................................ 3
Un lenguaje de programacin..........................................................................3
Para qu sirve una macro en Excel......................................................................4
Automatizacin de tareas................................................................................ 4
Cmo se ve una macro en Excel?...................................................................5
Creacin de una macro................................................................................... 5
Mostrar la ficha Programador.............................................................................. 6
Mostrar la ficha Programador en Excel 2010......................................................6
Grupos de la ficha Programador.......................................................................7
La grabadora de macros..................................................................................... 8
La grabadora de macros en Excel 2010.............................................................8
Crear una macro............................................................................................. 10
El cdigo de la Grabadora de macros.................................................................12
Establecer seguridad de macros........................................................................15
PROGRAMACIN........................................................................................... 17
Programando en VBA...................................................................................... 17
Principios fundamentales............................................................................... 17
Propiedades y Mtodos................................................................................. 17
Cadenas de texto en VBA................................................................................. 18
Unir cadenas de texto................................................................................... 19
La funcin Left............................................................................................. 19
La funcin Right........................................................................................... 20
La funcin Len............................................................................................. 21
La funcin InStr............................................................................................ 21
La funcin Mid............................................................................................. 22
La declaracin If-Then en VBA..........................................................................23
Ejemplo de la declaracin If-Then...................................................................24
La declaracin If-Then-Else........................................................................... 24
Acceder celdas con VBA.................................................................................. 26
Seleccionar una celda................................................................................... 26
Seleccionar un rango.................................................................................... 26
Establecer el valor de una celda.....................................................................26
Ventaja del objeto Cells................................................................................. 27

El bucle For-Next en VBA................................................................................. 27


La instruccin For-Next................................................................................. 27
Ejemplo de un bucle For-Next........................................................................28
Operadores lgicos en VBA.............................................................................. 29
El operador lgico And.................................................................................. 29
El operador lgico Or.................................................................................... 31
Eventos en VBA.............................................................................................. 32
Ejemplos de eventos en VBA.........................................................................32
Un ejemplo de eventos en VBA......................................................................33
Arreglos en VBA.............................................................................................. 35
Crear un arreglo en VBA............................................................................... 35
Acceder un elemento del arreglo....................................................................36
3 comentarios en Arreglos en VBA...............................................................36
Fecha y hora en VBA....................................................................................... 36
Obtener la fecha y hora actual........................................................................37
Obtener el ao, mes y da.............................................................................. 37
Obtener la hora, minuto y segundo.................................................................38
Convertir una cadena de texto en fecha...........................................................38
Sumar das a una fecha................................................................................ 39
Funciones VBA.............................................................................................. 40
Creando una funcin VBA................................................................................. 45
La palabra clave Function.............................................................................. 46
Parmetros de una funcin VBA....................................................................46
Valor de retorno........................................................................................... 46
Cuerpo de la funcin VBA.............................................................................. 46
Retornando el valor...................................................................................... 47
Probando la funcin VBA............................................................................... 47
CONTROLES.................................................................................................. 47
Controles de formulario en Excel.......................................................................47
Cmo insertar un control de formulario en Excel?...........................................48
Los diferentes controles de formulario.............................................................49
Controles de formulario no disponibles en Excel 2010.......................................49
Controles ActiveX en Excel............................................................................... 50
Controles ActiveX y controles de formulario......................................................50
Propiedades de los controles ActiveX..............................................................51
Controles ActiveX con subrutinas VBA............................................................52
Otra ventaja de los controles ActiveX en Excel.................................................53

Cuadro de texto en Excel.................................................................................. 54


Insertar un cuadro de texto en Excel...............................................................54
Modificar valor del cuadro de texto..................................................................55
Leer valor del cuadro de texto........................................................................55
Cuadro de lista en VBA.................................................................................... 56
Dibujar un cuadro de lista.............................................................................. 56
Especificar los elementos del cuadro de lista....................................................56
Elementos del cuadro de lista por cdigo.........................................................57
Asociar una celda al cuadro de lista................................................................58
Casilla de verificacin en VBA...........................................................................59
El control ActiveX casilla de verificacin...........................................................59
Propiedades de una casilla de verificacin.......................................................60
Valor de una casilla de verificacin..................................................................61
Botn de opcin en VBA................................................................................ 62
El botn de opcin en Excel........................................................................62
La propiedad Caption................................................................................. 63
El botn de opcin en VBA.........................................................................63
Formularios en VBA......................................................................................... 64
Crear un formulario en Excel..........................................................................64
Agregar controles al formulario.......................................................................65
Cdigo para el botn Cancelar.......................................................................66
Cdigo para el botn Aceptar.........................................................................66
Botn para abrir formulario............................................................................ 67
Probar el formulario...................................................................................... 67

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 unamacro.
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.
Ahora que ya sabes para qu sirve una macro en Excel puedes dar
los primeros pasos en este camino utilizando el tutorial Introduccin a
las macros.

Mostrar
la
Programador

ficha

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
complementos como el Solver.

permite

administrar

habilitar

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 lagrabadora 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 comandoGrabar 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.

Artculos relacionados

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 alprogramar en
VBA considera utilizar la Grabadora de macros para darte una idea
del camino a seguir.

Establecer
macros

seguridad

de

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

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 unobjeto. Por ejemplo, existe el
objeto Workbook que representa a un libro de Excel. Tambin existe
el objetoSheet 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 dificil 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.

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-ThenElse 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

For

Cells(i,

j).Value

To

1
=

10

To
i

5
*

Next

j
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
{Conjunto

de

de
instrucciones

variable To lmite
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
VBA

lgicos

en

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:

Artculos
Variables
Cadenas de texto en VBA

en

relacionados
VBA

Publicado por Moiss el 25 de julio, 2012.


3 comentarios en Arreglos en VBA

1. Victor Luna
Hay arreglos bidimensionales?
1. Moiss Ortz Autor
Hola Vctor, por supuesto que hay arreglos
bidimensionales en VBA, los puedes declarar de la
siguiente
manera:
Dim Arreglo2D(2,2)

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 fechaActual y horaActual 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 fechaActual, 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 caracter 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


modificacin de un archivo

FileLen

Regresa el nmero de bytes en un archivo

FormatCurrency

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 pocisin de una cadena de texto


dentro de otra cadena pero empezando desde
el final

de

la

ltima

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 arrreglo

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 especidicados
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 carecteres


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 funcinVBA 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

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 uncuadro 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:

Casilla de verificacin en
VBA
Una casilla de verificacin es un control ActiveX que podemos
utilizar para permitir que un usuario marque una opcin y por lo tanto
poder conocer sus preferencias al verificar dicho valor en cdigo VBA.
El control ActiveX casilla de verificacin

Para insertar este control debemos ir al comando Insertar y


seleccionar la opcin Casilla de verificacin (Control ActiveX).

Despus de dibujar este control tendrs el siguiente resultado:

Propiedades de una casilla de verificacin

La primera propiedad que desearas modificar de una casilla de


verificacin ser su propiedad Caption que es la que almacena el
texto desplegado dentro del control ActiveX. Por ejemplo, si deseo que
el control muestre el texto Mayor de edad debo hacer el cambio de la
siguiente manera:

La otra propiedad de una casilla de verificacin que tal vez quieras


modificar ser la propiedad Value que de manera predeterminada
tendr el valor False lo cual indica que el control se mostrar
desmarcado. Si deseas que el control se muestre marcado de manera
predeterminada, debes poner el valor True en la propiedadValue:

Valor de una casilla de verificacin

Una casilla de verificacin nos dir su ha sido seleccionada o no, es


decir, nos devolver un valor FALSO o VERDADERO. Para leer este
valor debemos acceder a la propiedad Value del control de la siguiente
manera:
Private
Range("C4").Value

Sub

CheckBox1_Click()
=

CheckBox1.Value

End Sub

Esta lnea de cdigo coloca el valor de la casilla de verificacin en la


celda C4. De esta manera, al seleccionar la casilla de verificacin
obtendr el siguiente resultado:

Para validar en VBA si la casilla de verificacin tiene un valor u otro


podemos utilizar un cdigo como el siguiente:

If

CheckBox1.Value

True

Then

Range("C4").Value

If CheckBox1.Value = False Then Range("C4").Value = 0

La primera lnea valida si el control ActiveX tiene un valor verdadero y


de ser as coloca el nmero 1 en la celda C4. Si la casilla de
verificacin no ha sido seleccionada (falso) entonces colocar el
nmero cero en la celda C4.

Botn de opcin en VBA


Un botn de opcin es un control ActiveX que nos permitir
seleccionar una sola opcin dentro de un grupo de botones de opcin.
A diferencia de las casillas de verificacin, los botones de opcin
dependen uno del otro.

El botn de opcin en Excel


Para insertar un botn de opcin hacemos clic en el comando
Insertar de la ficha Programador.

Un solo botn de opcin no hace mucho sentido, as que siempre


agregamos dos o ms botones de opcinpara permitir que usuario
haga una seleccin de cualquiera de ellos.

Una vez que se ha agregado un segundo botn de opcin podrs


notar que al seleccionar uno de ellos se desmarcarn todos los
dems.

La propiedad Caption
De manera predeterminada Excel colocar el botn de opcin con un
nombre como OptionButton1. Para cambiar este texto debemos editar
la propiedad Caption del botn de opcin.

El botn de opcin en VBA


Para saber si un botn de opcin ha sido seleccionado podemos
acceder a su propiedad Value de la siguiente manera:
1
2
3

Private Sub OptionButton1_Click()


If OptionButton1.Value = True Then MsgBox ("Has seleccionado la opcin Hombre")
End Sub

La propiedad Value es la que nos indica si el control est


seleccionado, en cuyo caso, la propiedad ser igual aTrue. Para este
ejemplo, al validar que el botn de opcin est seleccionado, se

mostrar un cuadro de dilogo con un mensaje sobre la opcin


seleccionada.

Formularios en VBA
Los formularios en VBA no son ms que un cuadro de dilogo de
Excel donde podremos colocar controles que nos ayudarn a solicitar
informacin del usuario. Podremos colocar cajas de texto, etiquetas,
cuadros combinados, botones de comando, etc.
Crear un formulario en Excel

Los formularios de Excel son creados desde el Editor de Visual


Basic donde debemos seleccionar la opcin de men Insertar y
posteriormente la opcin UserForm.

Inmediatamente se mostrar un formulario en blanco y de igual


manera podrs observar el Cuadro de herramientas:

Si no ves el Cuadro de herramientas puedes seleccionar el men Ver


y la opcin Cuadro de herramientas.
Agregar controles al formulario

Para agregar un control al formulario debes seleccionarlo del Cuadro


de herramientas y dibujarlo sobre el formulario. En mi formulario he
agregado etiquetas y cuadros de texto as como un par de botones de
comando:

El texto de las etiquetas se modifica en la propiedad llamada Caption.


Para realizar este cambio solamente selecciona el control y se
mostrar la ventana de Propiedades donde podrs hacer la
modificacin. De igual manera el texto desplegado en los botones de
comando se modifica en su propiedad Caption.
Cdigo para el botn Cancelar

El botn cancelar cerrar el formulario sin guardar la informacin


capturada en ningn lugar. El cdigo que debemos utilizar es el
siguiente:
Private

Sub

CommandButton2_Click()

Unload

Me

End Sub

Para agregar este cdigo puedes hacer doble clic sobre el control. La
sentencia Unload Me cerrar elformulario.
Cdigo para el botn Aceptar

A diferencia del botn Cancelar, el botn Aceptar colocar los datos de


las cajas de texto en las celdas A1, B1 y C1. El cdigo utilizado es el
siguiente:
Private

Sub

CommandButton1_Click()

Worksheets("Hoja1").Range("A1").Value

Me.TextBox1.Value

Worksheets("Hoja1").Range("B1").Value

Me.TextBox2.Value

Worksheets("Hoja1").Range("C1").Value

Me.TextBox3.Value

End Sub

Al pulsar el botn Aceptar se transferirn los valores de los


controles TextBox hacia las celdas de la Hoja1.
Botn para abrir formulario

Para facilitar la apertura del formulario puedes colocar un botn


ActiveX en la hoja con el siguiente cdigo:
Private

Sub

CommandButton1_Click()

UserForm1.Show
End Sub

Probar el formulario

Observa cmo cada uno de los botones realiza la accin correcta al


pulsarlos: