Macros

Descargar como docx, pdf o txt
Descargar como docx, pdf o txt
Está en la página 1de 100

QUÉ ES UNA MACRO DE

EXCEL?
Si utilizas Excel frecuentemente es posible que en alguna
ocasión te hayas encontrado ejecutando una misma serie de
acciones una y otra vez. Esas acciones que haces repetidas
veces se podrían automatizar con una macro.
Una macro es un conjunto de comandos que se almacena en
un lugar especial de Excel de manera que están siempre
disponibles cuando los necesites ejecutar.
Por ejemplo, si todas las mañanas creas un reporte de ventas y
en ese reporte siempre das el mismo formato a los textos, se
podría crear una macro para que lo haga automáticamente 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 PROGRAMACIÓN
Las macros se escriben en un lenguaje de computadora
especial que es conocido como Visual Basic for Applications
(VBA). Este lenguaje permite acceder a prácticamente todas
las funcionalidades de Excel y con ello también 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 programación.

Aunque si aceptas el desafío y te introduces en el mundo de la


programación VBA pronto te convertirás en un Ninja de Excel.
Verás que crear una macro en Excel no es tan complicado y
será una manera fácil y rápida de eliminar esas tareas
repetitivas que todos los días 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.
AUTOMATIZACIÓN DE TAREAS
Seguramente estás familiarizado con procesos de
automatización en el ámbito industrial. Un ejemplo muy claro
son las plantas ensambladoras de automóviles donde existen
robots que han sustituido tareas que antes eran hechas por
humanos. La automatización 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 análisis de los datos  y en la
toma de decisiones.

¿CÓMO SE VE UNA MACRO EN EXCEL?


Las macros son escritas en un lenguaje de computadora
conocido como VBA por sus siglas en inglés (Visual Basic for
Applications). Como cualquier otro lenguaje de computadora
debemos aprender a utilizar los comandos que nos ayudarán a
indicar a Excel lo que deseamos hacer con nuestros datos.

Aprender el lenguaje VBA no es nada complicado y se puede


lograr fácilmente. Lo que toma un poco más de tiempo es pulir
nuestras habilidades de programación. Lo que quiero decir con
esto es que para ser un buen programador de macros debes
dedicar tiempo en resolver múltiples problemas en donde
puedas llevar al límite el lenguaje VBA.
CREACIÓN DE UNA MACRO
Las macros se crean con el Editor de Visual Basic el cual nos
permitirá introducir el código con las instrucciones que serán
ejecutadas por la macro.
Existe otro método que es utilizar la Grabadora de macros la
cual irá grabando todas las acciones que realicemos en Excel
hasta que detengamos la grabación. 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 Introducción a las macros.

MOSTRAR LA PESTAÑA
PROGRAMADOR EN EXCEL
La pestaña Programador es ampliamente utilizada en la
creación de macros y de controles de formulario. Sin embargo,
dicha pestaña no es mostrada de manera predetermina en
la Cinta de opciones de Excel y por lo tanto es importante
aprender a mostrarla.
Para activar la pestaña Programador, debemos acudir a la
configuración de la Cinta de opciones la cual se encuentra en
el cuadro de diálogo Opciones de Excel y a continuación
aprenderemos dos métodos para llegar a dichas opciones de
configuración.

Sigue los siguientes pasos para mostrar la pestaña


Programador:

1. Haz clic en la pestaña Archivo.


2. Haz clic en la sección Opciones que se encuentra entre
los comandos del panel izquierdo.
3. Se mostrará el cuadro de diálogo Opciones de Excel y
deberás hacer clic en la opción Personalizar cinta de
opciones.
4. En la sección Pestañas principales deberás hacer clic en
el cuadro de selección de la pestaña Programador.

La pestaña Programador tiene los comandos necesarios para


crear macros y también para ejecutar macros previamente
grabadas. Desde esta pestaña podremos abrir el Editor de
Visual Basic que nos permite escribir código VBA.
Si por alguna razón necesitas ocultar la pestaña Programador,
entonces deberás seguir los mismos pasos para abrir el cuadro
de diálogo Opciones de Excel y desactivar la casilla de
selección de la pestaña.
MOSTRAR LA PESTAÑA PROGRAMADOR
Es posible acceder al cuadro de diálogo Opciones de Excel y a
las opciones de configuración de la Cinta de opciones de una
manera más rápida que con los pasos anteriormente descritos.
1. Haz clic derecho en la Cinta de opciones.
2. Haz clic en el comando Personalizar la Cinta de opciones.
3. Se mostrará el cuadro de diálogo Opciones de Excel y
deberás activar la casilla de la pestaña Programador.

Aunque la pestaña Programador tiene dicho nombre en varias


versiones de Excel, es posible que te encuentres con alguna
versión que haya nombrado la pestaña como Desarrollador. Se
refieren a la misma pestaña y los comandos son los mismos,
solo es un nombre diferente.
GRUPOS DE COMANDOS DE LA
PESTAÑA PROGRAMADOR
Una vez que has activado la pestaña Programador, podrás ver
que los comandos se encuentran organizados en cuatro
grupos.
 Código: Aquí están los comandos necesarios para iniciar
el Editor de Visual Basic donde se puede escribir
directamente código VBA. También nos permitirá ver la
lista de macros disponibles para ejecutarlas o eliminarlas
y también encontrarás el comando Grabar macro el cual
nos permite crear una macro sin necesidad de saber
programación VBA.
 Complementos: nos permite administrar y habilitar todo
tipo de complementos como el caso del
complemento Solver o las Herramientas para análisis.
 Controles: Contiene comandos para agregar controles
especiales a las hojas de Excel como los controles de
formulario que son botones, casillas de verificación,
botones de opción entre otros más que serán de gran
utilidad para ampliar la funcionalidad de Excel.
 XML: Con estos comandos podremos importar datos de
un archivo XML y encontraremos opciones útiles para
codificar y trabajar con archivos XML.
Aunque los comandos de la ficha Programador pueden parecer
un poco intimidantes, con el paso del tiempo y con la guía
adecuada, te irás familiarizando poco a poco con cada uno de
ellos.

LA GRABADORA DE
MACROS
Puedes crear una macro utilizando el lenguaje de
programación VBA, pero el método más 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 acción que se realiza
en Excel, por eso es conveniente planear con antelación los
pasos a seguir de manera que no se realicen acciones
innecesarias mientras se realiza la grabación. Para utilizar la
grabadora de macros debes ir a la ficha Programador y
seleccionar el comando Grabar macro.

Al pulsar el botón se mostrará el cuadro de diálogo Grabar


macro.

En el cuadro de texto Nombre de la macro deberás colocar el


nombre que identificará de manera única a la macro que
estamos por crear. De manera opcional puedes asignar un
método abreviado de teclado el cual permitirá ejecutar la macro
con la combinación de teclas especificadas.
La lista de opciones Guardar macro en permite seleccionar la
ubicación 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 sesión actual de Excel.
 Libro de macros personal. Esta opción permite utilizar la
macro en cualquier momento sin importar el libro de Excel
que se esté utilizando.
También puedes colocar una Descripción para la macro que
vas a crear. Finalmente debes pulsar el botón Aceptar para
iniciar con la grabación de la macro. Al terminar de ejecutar las
acciones planeadas deberás pulsar el botón Detener
grabación para completar la macro.

CREAR UNA MACRO


En esta ocasión mostraré cómo crear una macro en
Excel utilizando la grabadora de macros. La macro será un
ejemplo muy sencillo pero permitirá ilustrar el proceso básico
de creación.

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 grabación debes ir
al comando Grabar macro que se encuentra en la ficha
Programador lo cual mostrará el siguiente cuadro de diálogo.

Observa cómo he colocado un nombre a la macro y además he


especificado el método abreviado CTRL+d para ejecutarla
posteriormente. Una vez que se pulsa el botón Aceptar se
iniciará la grabación. Observa con detenimiento los pasos.

Al terminar los pasos se pulsa el comando Detener grabación y


la macro habrá quedado guardada. Para ejecutar la macro
recién 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 podrás elegir la más
conveniente. Al hacer clic sobre el comando Ejecutar se
realizarán todas las acciones almacenadas en la macro y
obtendrás el resultado esperado. Por supuesto que si utilizas el
método abreviado de teclado de la macro entonces se omitirá
este último cuadro de diálogo.

EL CÓDIGO DE LA
GRABADORA DE MACROS
Una manera muy interesante de descubrir y aprender más
sobre código VBA es analizar el código 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 diálogo
donde asignaré un nombre a la macro que estoy por crear.

Pulsa el botón Aceptar y se comenzarán 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 grabación 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 botón Macros


que se encuentra en el grupo Código de la ficha Programador.
Se mostrará el cuadro de diálogo  Macro que enlista todas las
macros que hemos creado.

Selecciona la macro recién creada y pulsa el botón Modificar.


Esto abrirá el Editor de Visual Basic y mostrará el código
generado para la macro.
Observando este código 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 algún archivo que contenga una macro
maliciosa puedes causar algún tipo de daño al equipo. De
manera predeterminada Excel no permite ejecutar macros
automáticamente.
Sin embargo, si estás creando tus propias macros y deseas
remover esta protección porque sabes que no existe código
malicioso, entonces puedes modificar la configuración
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 diálogo mostrado selecciona la
opción Centro de confianza y posteriormente pulsa el
botón Configuración del centro de confianza. Se mostrará el
cuadro de diálogo Centro de confianza.

Dentro de la sección Configuración de macros selecciona


alguna de las opciones disponibles.
 Deshabilitar todas las macros sin notificación.
Deshabilita las macros y permite ejecutar solamente
aquellas que estén almacenadas en un lugar confiable.
Los lugares confiables se configuran en la sección
Ubicaciones de confianza del mismo cuadro de diálogo.
 Deshabilitar todas las macros con notificación.
Muestra una alerta de seguridad advirtiendo sobre la
intención de ejecutar una macro de manera que se pueda
decidir si se desea ejecutar. Esta es la opción
predeterminada de Excel.
 Deshabilitar todas las macros excepto las firmadas
digitalmente. Solamente se podrán ejecutar las macros
que están firmadas digitalmente.
 Habilitar todas las macros. Permite ejecutar todas las
macros sin enviar alguna notificación al usuario. Esta
opción es útil si se ejecutan múltiples macros totalmente
confiables. Esta opción es la que corre los mayores
riesgos al ejecutar una macro de una fuente desconocida.
Una vez seleccionada la opción deseada se debe pulsar el
botón Aceptar para hacer los cambios permanentes.

PRINCIPIOS BASICOS

PROGRAMANDO EN VBA
Excel 2010 es una de las herramientas de software más
poderosas para el manejo, análisis y presentación de datos.
Aun y con todas sus bondades, en ocasiones Excel no llega a
suplir algunas necesidades específicas de los usuarios.

Afortunadamente  Excel cuenta con VBA que es un lenguaje de


programación que permite extender las habilidades del
programa para cubrir  nuestros requerimientos. Utilizando VBA
se pueden desarrollar nuevos algoritmos para analizar la
información o para integrar a Excel con alguna otra aplicación
como Microsoft Access.

PRINCIPIOS FUNDAMENTALES
La programación en VBA puede ser un tanto misteriosa para la
mayoría de los usuarios de Excel, sin embargo una vez que se
comprenden los principios básicos de programación en VBA se
comenzarán 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. También existe el objeto Sheet que representa
una hoja y el objeto Chart para un gráfico.
El segundo concepto importante a entender es que cada uno
de estos objetos tiene propiedades y métodos. Para explicar
mejor este concepto utilizaré una analogía.
PROPIEDADES Y MÉTODOS
Supongamos que tenemos el objeto auto. Así es, un auto como
el que manejamos todos los días para ir al trabajo. Este auto
tiene varias propiedades como son: marca, modelo, color, tipo
de transmisión las cuales ayudan a describir mejor al auto.
También hay propiedades que indican su estado actual como
por ejemplo gasolina disponible, temperatura del aceite,
velocidad, kilómetros recorridos entre otras propiedades más.
Podemos decir que las propiedades de un objeto nos ayudan
a describirlo mejor en todo momento.
Por otro lado tenemos los métodos 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 métodos.
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 métodos son
Save (Guardar), Close (Cerrar), PrintOut (Imprimir),
Protect (Proteger), Unprotect (Desproteger).
Será dificil mencionar todos los objetos de Excel y sus
propiedades en esta publicación, pero lo importante a recordar
en este ocasión es que cada elemento de Excel está siempre
representado por un objeto en VBA y cada objeto tiene a su
vez propiedades y métodos que nos permitirán trabajar con
nuestros datos.

EL EDITOR DE VISUAL
BASIC
El Editor de Visual Basic, VBE por sus siglas en inglés, es un
programa independiente a Excel pero fuertemente relacionado
a él porque es el programa que nos permite escribir código
VBA que estará asociado a las macros.
Existen al menos dos alternativas para abrir este editor, la
primera de ellas es a través del botón Visual Basic de la ficha
Programador.

El segundo método para abrir este programa es, en mi opinión,


el más sencillo y rápido y que es a través 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 además muestra las hojas pertenecientes a ese libro
de Excel. Si por alguna razón no puedes visualizar este módulo
puedes habilitarlo en la opción de menú Ver y seleccionando la
opción Explorador de proyectos.
El Explorador de proyectos también nos ayuda a crear o abrir
módulos de código que se serán de gran utilidad para reutilizar
todas las funciones de código 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 código
VBA porque permite introducir instrucciones y observar el
resultado inmediato. Además, desde el código VBA podemos
imprimir mensajes hacia la ventana Inmediato con el
comando Debug.Print de manera que podamos depurar
nuestro código. Si no puedes observar esta ventana puedes
mostrarla también desde el menú Ver.
El área más grande en blanco es donde escribiremos el código
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 creación 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 botón Visual Basic.
CREACIÓN DE UN MÓDULO
Una vez dentro del Editor debes hacer clic derecho sobre el
título del proyecto y dentro del menú seleccionar la opción
Insertar y posteriormente Módulo.

Se creará la sección Módulos y dentro de la misma se


mostrará el módulo recién creado. Puedes saber que el módulo
está abierto porque su nombre se muestra en el título entre
corchetes.
Si el módulo no está abierto solamente deberás hacer doble
clic sobre él. Posiciónate en el área de código e introduce las
siguientes instrucciones:

Antes de avanzar explicaré con detalle las instrucciones


mostradas.

SUBRUTINAS EN VBA
El primer concepto que explicare es la instrucción Sub que es
la abreviación de la palabra subrutina. Una subrutina no es más
que un conjunto de instrucciones que se ejecutarán una por
una hasta llegar al final de la subrutina que está especificado
por la instrucción End Sub.
Las subrutinas nos ayudan a agrupar varias instrucciones de
manera que podamos organizar adecuadamente nuestro
código. Una subrutina siempre tiene un nombre el cual debe
ser especificado justo después de la instrucción Sub y seguido
por paréntesis.
LA FUNCIÓN MSGBOX EN VBA
La subrutina que acabamos de crear para este ejemplo
solamente tiene una instrucción dentro la cual hace uso de la
función MsgBox. Esta función 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 más sencilla de la función 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 código bastará con pulsar el botón
Ejecutar que se encuentra dentro de la barra de herramientas.

En cuanto se pulsa el botón se ejecutará el código recién


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 función
MsgBox. Para guardar la macro recuerda que debes guardar el
archivo como Libro de Excel habilitado para macros, de lo
contrario perderás el código del módulo creado.

UTILIZAR COMENTARIOS
EN VBA
Utilizar comentarios dentro del código VBA es una de las
mejores prácticas que debes adoptar desde que inicias en el
mundo de la programación en Excel. Los comentarios harán
que tu código sea fácil de entender.
Un comentario en VBA es una línea dentro del código que no
será tomada en cuenta al momento de realizar la ejecución.
Los comentarios serán solo visibles por ti al momento de editar
el código dentro del Editor de Visual Basic.
Para agregar un comentario será suficiente con colocar una
comilla sencilla (‘) al inicio de la línea. Después de colocar la
comilla sencilla debes escribir el comentario y al terminar de
insertar la línea Excel colocará automáticamente el texto en
color verde indicando que ha reconocido la línea como
un comentario en VBA.
He visto en más de una ocasión que muchas personas no
tienen esta buena práctica al programar en VBA y el problema
se presentará cuando pase el tiempo y tengan que modificar el
código pero  ya no recuerden la lógica implementada ni lo que
significa cada una de las variables.

Aunque pareciera una actividad aburrida, créeme que te


ahorrará mucho tiempo cuando te veas en la necesidad de
modificar tu código. Además, si por alguna razón necesitas que
otra persona haga modificaciones al código le serán de gran
ayuda los comentarios que hayas agregado.

COMENTAR VARÍAS LÍNEAS DE CÓDIGO


Como ya lo mencioné, un comentario en VBA será omitido al
momento de la ejecución. En ocasiones cuando está haciendo
pruebas con tu código VBA deseas evitar que ciertas líneas de
código se ejecuten y una manera de hacer es comentando
dichas líneas.
Para comentar varias líneas de código en una macro, sin la
necesidad de estar colocando la comilla sencilla al principio de
cada una de las líneas, puedes seguir los siguientes pasos. En
primer lugar selecciona todas las líneas de código que deseas
convertir en comentarios y posteriormente oprime el
botón Bloque con comentarios de manera que Excel coloque
todas las comillas sencillas (‘) a cada línea de código
seleccionada.

De la misma manera puedes remover las comillas sencillas si


pulsas el botón Bloque sin comentarios que se encuentra justo
al lado derecho del botón 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 Edición. Para mostrarla, haz clic derecho
sobre un área libre del menú superior y seleccionar la opción
Edición.
OBJETOS, PROPIEDADES
Y MÉTODOS
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 más objetos en Excel. A esto lo
conocemos como el modelo de objetos de Excel.

Cada uno de los objetos de Excel


tiene propiedades y métodos. Las propiedades son las
características del objeto y los métodos son las acciones que el
objeto puede hacer.
PROPIEDADES DE UN OBJETO
Si una persona fuera un objeto de Excel sus propiedades
serían 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 dirección (Address) entre muchas
otras. Estas propiedades describen mejor al objeto.
MÉTODOS DE UN OBJETO
Siguiendo con el ejemplo de una persona, si fuera un objeto de
Excel sus métodos serían correr, caminar, hablar, dormir. Los
métodos 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 métodos activar (Activate), calcular (Calculate), borrar
(Clear) entre muchos más.
UTILIZANDO LAS PROPIEDADES Y LOS
MÉTODOS
Para acceder a las propiedades y métodos de un objeto lo
hacemos a través de una nomenclatura especial. Justo
después del nombre del objeto colocamos un punto seguido del
nombre de la propiedad o del método. 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
método Clear de la siguiente manera:
Range("A1").Clear

VER TODAS LAS PROPIEDADES Y


MÉTODOS
Los objetos tienen muchas propiedades y métodos y a veces
es difícil 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
código nos proporciona la lista completa de propiedades y
métodos para un objeto.
Esto sucede al momento de introducir el punto después del
nombre del objeto. Puedes distinguir entre las propiedades y
métodos porque tienen iconos diferentes. En la imagen de
arriba los métodos son los que tienen el icono de color verde.

Recuerda, los objetos son cosas en Excel y sus características


las llamamos propiedades las cuales  nos ayudan a definir al
objeto. Los métodos son las acciones que cada objeto puede
realizar.

NAVEGANDO EL MODELO
DE OBJETOS
Excel tiene un modelo de objetos el cual es una jerarquía de
todos los objetos que podemos utilizar desde el lenguaje VBA.
En la parte superior de la jerarquía se encuentra el objeto
Application y todos los demás objetos estarán por debajo de él.
ACCEDER A OBJETOS INFERIORES
Para tener acceso a los objetos que están por debajo del objeto
Application podemos utilizar el punto. El punto nos ayuda a
navegar por la jerarquía hacia un nivel inferior. Observa lo que
se muestra en el Editor de Visual Basic al colocar un punto
después del objeto Application:
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 raíz 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 más de una hoja lo
cual significa que un objeto Workbook puede contener más de
un objeto Worksheet.

Ya que no hay límite en el número de hojas que puede tener un


libro, se volvería complicado organizar esta relación entre los
objetos Workbook y Worksheet y por esta razón se crearon las
colecciones de objetos. De esta manera un objeto Workbook
tiene asociada una colección 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 colección de objetos Workbooks la cual incluirá
todos los objetos Workbook de los libros de Excel que abramos
en nuestro código VBA.

ABRIR UN LIBRO DE EXCEL


Para abrir un libro de Excel en VBA podemos utilizar el método
Open del objeto Workbooks de la siguiente manera:
Application.Workbooks.Open

Filename:="C:Libro1.xlsx"

Esta instrucción abrirá el archivo ubicado en «C:Libro1.xlsx» y


lo agregará a la colección 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 través de la
colección de objetos Workbooks de la siguiente manera:

Application.Workbooks(1).Activate

El número que observas dentro de los paréntesis indica el


índice del objeto Workbook dentro de la colección de objetos
Workbooks. De manera predeterminada el índice 1 será para el
libro de Excel que contiene el código VBA y a partir de ahí la
numeración 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 instrucción como la
siguiente:

Application.Workbooks("Libro1.xlsx").Activate

La colección de objetos Workbooks nos permitirá acceder a


todos los libros que hayamos abierto dentro de nuestra
aplicación VBA.
ACCEDER LAS HOJAS DE UN LIBRO
De igual manera podemos acceder las hojas de cualquier libro
a través de su colección de objetos Worksheets. Esta colección
también puede ser accedida por el índice de cada una de las
hojas del libro:

Application.Workbooks(1).Worksheets(1).Range("A1")

.Value = "Hola"

Esta instrucción accede a la hoja con el índice 1 y coloca el


valor “Hola Mundo”  en la celda A1. También podemos acceder
a una hoja a través de su nombre en caso de que lo
conozcamos:

Application.Workbooks(1).Worksheets("Hoja1").Range

("A1").Value = "Hola"

AGREGAR UNA NUEVA HOJA


A través de la colección de objetos Worksheets podemos
crear nuevas hojas en un libro. Observa la siguiente
instrucción:
Worksheets.Add

Observa que no he iniciado la instrucción 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 método 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.Ad

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 colección de
libros que se han abierto y Worksheets que es la colección de
hojas que pertenecen a un determinado libro.

EL OBJETO APPLICATION
EN VBA
Cuando escribimos macros con VBA trabajamos con múltiples
objetos que pueden ejecutar nuestras instrucciones
adecuadamente, pero el objeto Application está en el nivel más
alto de la jerarquía 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 aplicación.
Muchas de las opciones que podemos modificar con el objeto
Application son las mismas que encontramos en la ficha
Archivo dentro del cuadro de diálogo Opciones de Excel.
Ya que el objeto Application es el objeto principal dentro de
VBA todos los demás objetos derivan de él. Es por ello que
encontrarás frecuentemente instrucciones que comienzan
especificando el objeto Application:

Application.ActiveSheet.Name = "Reporte de Ventas"

Sin embargo, VBA nos permite, en la mayoría de los casos,


omitir la escritura del objeto Application ya que supone que
todos los demás objetos provienen de él. De esta manera la
siguiente instrucción también es válida.

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 colección
Sheets nos permite acceder a todas las hojas de un libro:
Application.Sheets.Count

Es muy importante mencionar que la colección Sheets se


referirá al libro de Excel que se encuentre activo en el momento
de ejecutar esta instrucción. Las colecciones Columns y Rows
nos permitirán 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 ocasión, pero algunas de las más
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.
MÉTODOS DEL OBJETO APPLICATION
Uno de los métodos más utilizados del objeto Application es el
método InputBox que nos ayuda a mostrar un cuadro de
diálogo que solicita al usuario el ingreso de algún valor.
Observa la siguiente línea de código:
Impresiones = Application.InputBox(Prompt:="Número

de impresiones:", _

Title:="Imprimir", Default:=1, Type:=1)

Esta instrucción hará que Excel muestre un cuadro de diálogo


pidiendo al usuario que ingrese el número de impresiones que
desea realizar. El número ingresado por el usuario se guardará
en la variable Impresiones.

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 línea de código puede tomarnos un poco de


tiempo en escribirla, describe perfectamente la jerarquía de los
objetos en VBA ya que después de acceder el objeto de la
aplicación (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 intrínseca de VBA conocida como
objetos predeterminados la cual nos permite omitir la escritura
de algunos objetos y aun así tener un código funcional. Por
ejemplo, en la sentencia mostrada previamente podemos omitir
el objeto Application y tener nuestro código funcionando
correctamente:

Inclusive podemos omitir los objetos ActiveWorkbook y


ActiveSheet sabiendo que el código se ejecutará siempre sobre
el libro activo y la hoja que esté activa al momento de la
ejecución:

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 razón para hacer esto es porque
da una claridad absoluta sobre la ubicación exacta de cada
objeto lo cual ayudará a evitar cualquier mala interpretación del
código.

Si decides no hacer uso de los objetos predeterminados sino


que deseas utilizar las referencias completas hacia cada objeto
aún hay una manera de ahorrar algunas líneas de código.
Supongamos las siguientes instrucciones en VBA:
Podemos ahorrar algunas palabras de este código 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 código VBA
claro y legible.

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 podrás encontrar el
archivo personal.xlsb en la siguiente carpeta:
C:Usuarios[Usuario]AppDataRoamingMicrosoftExcelXLS

TART

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


usuario en el equipo. Además la carpeta AppData es una
carpeta oculta por lo que no la encontrarás directamente en el
navegador de Windows a menos que habilites la vista de
archivos ocultos.

CÓMO 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 verás un mensaje


preguntando si deseas guardar los cambios realizados al libro
de macros personal, para lo cual deberás pulsar el botón
Guardar.
EL LIBRO DE MACROS PERSONAL EN EL
EDITOR DE VISUAL BASIC
Una vez que el libro de macros personal ha sido creado lo
podrás ver dentro del Editor de Visual Basic:

Por debajo del nombre VBAProject (PERSONAL.XLSB)


encontrarás la carpeta Módulos y dentro de ella encontrarás
todas las macros que se hayan guardado en el libro de macros
personal organizadas en módulos. Si deseas eliminar algún
módulo solamente deberás hacer clic derecho sobre él y
seleccionar la opción Quitar Módulo.

TIPOS DE ERRORES EN
VBA
No todas las cosas funcionan bien a la primera y seguramente
te encontrarás con errores al programar en Excel. Existen
dos tipos de errores en VBA: errores de sintaxis y errores en
tiempo de ejecución.
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 más fáciles 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 código.

Los errores de sintaxis en VBA surgen cuando intentamos


insertar algún operador o alguna instrucción 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 compilación. 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 instrucción Mod (módulo) 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 EJECUCIÓN


Un error en tiempo de ejecución ocurre cuando nuestra
aplicación ya está siendo ejecutada e intenta hacer alguna
acción que no está permitida por Excel o por Windows. Esto
ocasionará que nuestra aplicación colapse o que Excel deje de
responder.

Este tipo de errores son mas difíciles de encontrar pero aun así
se podrán encontrar algunos de ellos al hacer pruebas y
depuración de nuestra aplicación. Algunos ejemplos de este
tipo de errores son los siguientes:

 Intentar realizar una operación no permitida por el


ordenador. Por ejemplo una división entre cero o intentar
sumar una cadena de texto y un valor Double.
 Intentar utilizar una librería de código que no está
accesible en ese momento.
 Utilizar un bucle con una condición que nunca se cumple.
 Tratar de asignar un valor que está fuera de los límites de
una variable.
Existen muchas otras razones por las que podemos tener un
error en tiempo de ejecución.  La mejor manera de prevenir
estos errores será haciendo una depuración de nuestro código
pero eso  será tema de otro artículo.

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 código y
minimizar al máximo los posibles errores de ejecución.

DEPURAR MACROS EN
EXCEL
Cuando nos encontramos con errores en nuestras macros
podemos depurar el código utilizando el Editor de Visual Basic
para encontrar fácilmente los errores que pueda contener
nuestro código VBA.  Considera la siguiente macro:

DEPURAR CÓDIGO VBA


Para iniciar con la depuración del código podemos seleccionar
la opción de menú Depuración > Paso a paso por
instrucciones o simplemente pulsar la tecla F8.
Esto hará que se inicie la ejecución en la primera línea, la cual
se mostrará con un fondo amarillo indicando que esa
instrucción es la que esta por ejecutarse.

Para continuar con la depuración debemos pulsar de nuevo la


tecla F8 hasta llegar al final del código. Cada vez que pulsamos
la techa F8 suceden las siguientes cosas:

1. Excel ejecuta la instrucción que está sombreada en color


amarillo
2. Si Excel encuentra un error en la instrucción, entonces
enviará un mensaje de error.
3. Por el contrario, si no hubo error en dicha instrucción,
entonces Excel marcará en amarillo la siguiente
instrucción a ejecutar.
De esta manera podemos ejecutar cada una de las líneas de
nuestro código VBA y validar que no exista error alguno.
Regresando a nuestro ejemplo, al momento de llegar a la
tercera instrucción y pulsar la tecla F8, Excel enviará el
siguiente mensaje de error:

El mensaje nos advierte que el objeto no admite esa propiedad


o método y se está refiriendo al objeto Range en donde el
método Value no está escrito de manera correcta y por lo tanto
el depurador de VBA no reconoce dicha propiedad. Pulsa el
botón Aceptar para cerrar el cuadro de diálogo y poder corregir
el error en el código.
Ya hemos hablado sobre los diferentes tipos de errores en VBA
y la depuración nos ayudará a probar nuestro código y a
encontrar la gran mayoría de los errores que podamos tener.
Es probable que al principio veas a la depuración como un
trabajo muy exhaustivo pero cuando tus programas y macros
comiencen a crecer entonces verás todos los beneficios que
nos da la depuración de macros en Excel.

PROGRAMACION

VARIABLES EN VBA
Cuando programamos en VBA frecuentemente necesitamos un
repositorio para almacenar el resultado de alguna operación.
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
números, variables de tipo doble que también almacenan
números pero con decimales, variables de tipo texto para
guardar una cadena de caracteres entre algunos otros tipos de
variables. A continuación haremos una revisión de cada uno de
estos tipos.

VARIABLES DE TIPO ENTERO


Las variables de tipo entero son utilizadas para guardar
números enteros. Debemos utilizar la palabra
clave Integer para declarar una variable de este tipo.
Dim x As Integer

x = 6

En la primera instrucción estoy declarando la variable con el


nombre “x” y estoy indicando que será del tipo Integer.
“Declarar una variable” significa avisar a Excel sobre la
existencia de dicho repositorio para guardar información. En la
segunda instrucción asigno el valor 6 a la variable “x”.
VARIABLES DE TIPO DOBLE
Las variables de tipo doble pueden almacenar números con el
doble de precisión incluyendo números 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 números


enteros sin problema, no es recomendable hacerlo porque
estaremos desperdiciando espacio en la memoria del
ordenador.  Es decir, el tamaño reservado para una variable
doble es el adecuado para guardar números decimales, si solo
guardamos un número entero quedará especio sin utilizar. Por
lo tanto es recomendable utilizar siempre el tipo de variable
adecuado para cualquier número.

VARIABLES DE TIPO TEXTO


Una variable de tipo texto se declara con la palabra
clave String. En el siguiente código declararé la variable libro y
posteriormente le asignaré un valor.
Dim libro As String

libro = "Programación en Excel"

VARIABLES DE TIPO LÓGICO


Una variable de tipo lógico 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 línea 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 básicos en VBA. Existen
algunos más que iré tratando en artículo 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 continuación revisaremos
algunas de estas funciones VBA y observaremos el resultados
de cada una de ellas.
Para iniciar con esta revisión, debes colocar un botón de
comando dentro de una hoja de Excel y después hacer doble
clic sobre él para introducir el código.
UNIR CADENAS DE TEXTO
Para unir dos (o más) cadenas de texto podemos utilizar el
operador &. Observa el siguiente código:

El resultado de este código es el siguiente:


LA FUNCIÓN LEFT
La función Left en VBA nos ayuda a extraer un número
determinado de caracteres a la izquierda de la cadena de texto.

En el código he especificado los 7 caracteres a la izquierda de


la cadena de texto. El resultado es el siguiente:

LA FUNCIÓN RIGHT
La función Right nos permite extraer caracteres a la derecha de
una cadena de texto. Observa el siguiente código:
En esta función la cuenta de caracteres se hace de derecha a
izquierda siendo el último carácter de la cadena de texto el
primero que extraerá la función Right. Para este ejemplo he
pedido los últimos 5 caracteres a la derecha de la cadena de
texto:

LA FUNCIÓN LEN
La función Len nos ayuda a conocer la longitud de una cadena
de texto, es decir, la cantidad de caracteres que conforman a
una cadena.

La función Len contará cada uno de los caracteres de la


cadena y regresará un número:
LA FUNCIÓN INSTR
La función InStr devuelve la posición de un carácter dentro de
la cadena. Supongamos que quiero encontrar la posición de la
letra “M” dentro de la cadena que contiene el valor “Hola
Mundo”.

Es importante resaltar que la función InStr es sensible a


mayúsculas y minúsculas. Observa cómo he especificado
buscar la letra “M” (mayúscula) y el resultado de la función es el
siguiente:

La función InStr encontró la letra “M” en la posición número 6


comenzando desde la izquierda. Si en lugar de la letra “M”
busco la letra “m” (minúscula), la función InStr devolverá el
valor 0 (cero) indicando que no ha encontrado dicha letra.

Además de indicar letras individuales en la función InStr,


también 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 posición número 6 ya
que en esa posición comienza la palabra “Mundo”.

LA FUNCIÓN MID
Con la función Mid podemos extraer una subcadena de otra
cadena de texto con tan solo especificar la posición inicial de la
subcadena y su longitud. Observa el siguiente ejemplo:

La función Mid se moverá a la posición 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 ayudarán a manipular
adecuadamente las cadenas de texto y podremos obtener los
resultados que necesitamos.

LA DECLARACIÓN IF-THEN
EN VBA
En ocasiones necesitamos ejecutar algunas líneas de código
de nuestra macro solamente cuando alguna condición se haya
cumplido. La declaración If-Then nos permite validar una
condición para tomar una decisión adecuada.
La sentencia If-Then en VBA es la más básica de todas las
declaraciones de control de flujo que son  aquellas
declaraciones que nos permiten tomar decisiones en base a
una condición. Esta declaración la podemos traducir como Si-
Entonces y la utilizaremos en situaciones donde necesitamos
realizar la siguiente evaluación: Si se cumple la
condición Entonces haz esto.
EJEMPLO DE LA DECLARACIÓN IF-THEN
Para probar el funcionamiento de la declaración If-Then inserta
un botón de comando (Control ActiveX) en una hoja de Excel y
haz doble clic sobre él para colocar el siguiente código:
 En el primer paso se hace la declaración de las variables
que utilizaré en el resto del código.
 En el segundo paso asigno el valor de la celda A1 a la
variable calificación.
 El tercer paso contiene la declaración If-Then y que
prueba Si el valor de la variable calificación 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 DECLARACIÓN IF-THEN-ELSE
Parece que todo funciona muy bien en el código anterior pero
aún lo podemos mejorar agregando la declaración Else de
manera que tengamos una declaración de la forma If-Then-
Else. Esta variante nos permite hacer la siguiente evaluación:
Si se cumple la condición Entonces haz esto De lo
contrario haz otra cosa.
La declaración Else en VBA nos permite indicar otro bloque de
instrucciones que se deben ejecutar en caso de que la
condición sea falsa. De esta manera podemos tomar una
acción determinada en caso de que la condición se cumpla o
en caso de que no se cumpla. Ahora modificaré el ejemplo
anterior para asegurarme de que en caso de que la condición
de calificación mayor o igual a 60 no se cumpla se despliegue
el resultado “reprobado”. Observa el siguiente código.
En el tercer paso puedes observar la declaración If-Then-Else.
Ahora observa el efecto de este cambio al momento de ejecutar
el código:

Por último quiero que observes que en este segundo ejemplo


la declaración If-Then-Else termina con la declaración End If.
Siempre que utilicemos la declaración If-Then o la declaración
If-Then-Else debemos terminar con End If.
La única ocasión donde no se termina con End If es cuando la
declaración If-Then se puede colocar en una sola línea como
es el caso del primer ejemplo de este artículo.

ACCEDER CELDAS CON


VBA
Existe un par de maneras para acceder las celdas de nuestras
hojas utilizando VBA. Podemos utilizar el objeto Range y
también podemos utilizar el objeto Cells. A continuación
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 número de fila y


como segundo argumento el número de columna.

SELECCIONAR UN RANGO
Para seleccionar un rango de celdas lo más 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 más común encontrarse el objeto Range en las
aplicaciones VBA, sin embargo el objeto Cells ofrece una
ventaja que debemos considerar cuando necesitamos hacer un
recorrido programático por varias celdas ya que será muy
sencillo especificar las filas y columnas utilizando una variable
numérica.

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 términos de programación, un bucle es una instrucción que
nos permitirá ejecutar repetidamente un conjunto de
instrucciones hasta que se cumpla la condición que hayamos
especificado. Los bucles también son conocidos como ciclos.
LA INSTRUCCIÓN FOR-NEXT
El bucle For-Next es una de las instrucciones más útiles al
programar en VBA. La sintaxis de esta instrucción es la
siguiente:

For   inicialización de variable   To   límite

{Conjunto de instrucciones que se repetirán}

Next   incrementar   variable


 Inicialización de variable: Ya que la instrucción For Next
repite un conjunto de instrucciones un número de veces
específico, debemos inicializar una variable que irá
contando cada una de las repeticiones. Es común
encontrar la instrucción escrita como For i = 1 lo cual
indica que la variable i llevará la cuenta de las
repeticiones que deseamos que inicien en 1.
 Límite: Además de inicializar la variable que llevará la
cuenta de las repeticiones, debemos especificar un límite
donde se detendrá el ciclo. Este límite es indicado con la
instrucción To. De esta manera, si deseamos hacer un
bucle que vaya desde 1 hasta 5 la instrucción la
escribiremos como For i = 1 To 5.
 Incrementar variable: El final del conjunto de instrucciones
se indica con la instrucción 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 instrucción Next i.
EJEMPLO DE UN BUCLE FOR-NEXT
A continuación un ejemplo muy sencillo de un bucle For-
Next donde la única instrucción que se repite es la de mostrar
una ventana de diálogo con el valor de la variable i:

Con este bucle provocaremos que se muestre una ventana de


diálogo 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 diálogo muestra el mensaje “i = 1”, después “i = 2” y así
sucesivamente hasta llegar al límite. El bucle For-Next en VBA
nos ayudará a crear ciclos que ejecutarán un conjunto de
instrucciones hasta alcanzar el límite que hayamos
especificado.

OPERADORES LÓGICOS
EN VBA
Los operadores lógicos más 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
código que será  ejecutado.
EL OPERADOR LÓGICO AND
El operador lógico 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 código se debe cumplir la condición1 Y la condición2.
En el siguiente ejemplo tengo la calificación de dos exámenes.
Solamente si ambos exámenes tienen una calificación mayor a
70, entonces el estudiante será aprobado, de lo contrario la
calificación será reprobatoria.

El código que se ejecutará al pulsar el botón será el siguiente:

Al ejecutar este código obtendremos el resultado “Aprobado” ya


que ambos exámenes tienen una calificación mayor a 70:

De esta manera comprobamos que el operador lógico


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 lógico 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 LÓGICO OR
El operador lógico Or lo traducimos como “O” y nos permitirá
saber si al menos una de las condiciones se cumple, es decir,
si la condición1 O la condición2 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 código 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 lógico 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 comportarán 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 acción a tomar cuando el usuario hace algo
específico 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 selección 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 mostrarán
los objetos y en el panel derecho las propiedades, métodos y
eventos de dicho objeto. Podrás 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 ocasión es para activar un
cuadro de diálogo 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 opción Worksheet:
Esto creará automáticamente la subrutina para el evento
SelectionChange pero podemos fácilmente crear otro evento
seleccionándolo de la lista de Procedimientos. Para este
ejemplo crearé el evento Activate:

Una vez creada la subrutina para el evento Activate solamente


insertaré el código para que se muestre el mensaje dentro del
cuadro de diálogo:
Ahora que hemos definido una acción 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 algún bloque de código al iniciarse alguna acción 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 específico (elemento)
utilizando su posición (índice).
Para comprender mejor lo que es un arreglo observa la
siguiente imagen:

Un arreglo es una colección de “casillas” que contendrán


variables individuales. Casa casilla tendrá un número 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
instrucción:

Dim Paises(1 To 5) As String


Con este código 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) = "España"

Paises(4) = "México"

Paises(5) = "Perú"

ACCEDER UN ELEMENTO DEL ARREGLO


Para acceder cualquier elemento del arreglo simplemente
colocamos el nombre del arreglo seguido por paréntesis y el
número de índice del elemento que necesitamos. Por ejemplo,
para desplegar un mensaje con el nombre de país España
puedo utilizar la siguiente instrucción:

MsgBox Paises(3)

El resultado de esta instrucción será el siguiente:


FECHA Y HORA EN VBA
Los valores de fecha y hora en VBA pueden ser manipulados
de diversas maneras. En esta ocasión aprenderemos cómo
obtener el año, mes y día en VBA y cómo hacer operaciones
básicas con fechas.
Para realizar estos ejemplos debes colocar un control de botón
en una hoja de Excel y colocar las líneas de código mostradas.

OBTENER LA FECHA Y HORA ACTUAL


Para obtener la fecha actual en VBA utilizamos la función 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 AÑO, MES Y DÍA
En el ejemplo anterior he obtenido la fecha actual en la
variable fechaActual, sin embargo, si deseo mostrar solamente
el año puedo utilizar la función Year.
El resultado de este código es el siguiente:

Al trabajar con fechas podremos obtener el mes utilizando la


función Month y para obtener el día la función Day.

OBTENER LA HORA, MINUTO Y


SEGUNDO
Para obtener la hora de la variable horaActual utilizaremos la
función 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 función Date nos devuelve la fecha
actual, pero podemos utilizar otra función que nos permitirá
convertir una cadena de texto en una fecha. La función que
utilizaremos para este será la función DateValue.

El único argumento de la función DateValue es la cadena de


texto que convertirá en fecha. El resultado de esta conversión
es el siguiente:
SUMAR DÍAS A UNA FECHA
Para sumar días a una fecha en VBA utilizaremos la función
DateAdd. Esta función nos permite especificar la cantidad
exacta de días a sumar:

Observa el resultado de sumar 5 días a la fecha original:

El primer argumento de la función DateAdd determina la unidad


de tiempo que será sumada. En este ejemplo especifiqué “d”
para indicar días, pero podemos utilizar otras medidas de
tiempo:
 «yyyy» para años
 «m» para meses
 «d» para días
 «ww» para semanas
Las fechas y horas son un tipo de dato muy común con el que
seguramente tendrás que trabajar  al crear tus macros. Es
importante que aprendas a utilizar las funciones VBA que nos
permitirán manipular adecuadamente la información.

FUNCIONES VBA
El lenguaje de programación VBA contiene un número
considerable de funciones que podemos utilizar para construir
código en Excel. Cuando estás escribiendo código, puedes
introducir la palabra VBA seguida de un punto y verás una lista
desplegable de estas funciones.
La siguiente tabla provee una descripción breve de algunas de
las funciones VBA más utilizadas.
FUNCIÓN DESCRIPCIÓN

Abs Regresa el valor absoluto de un número

Asc Obtiene el valor ASCII del primer caracter de una cadena de texto

CBool Convierte una expresión a su valor booleano

CByte Convierte una expresión al tipo de dato Byte

CCur Convierte una expresión al tipo de dato moneda (Currency)

CDate Convierte una expresión al tipo de dato fecha (Date)

CDbl Convierte una expresión al tipo de dato doble (Double)

CDec Convierte una expresión 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 expresión en un dato de tipo entero (Int)

CLng Convierte una expresión en un dato de tipo largo (Long)

CreateObject Crea un objeto de tipo OLE

CStr Convierte una expresión en un dato de tipo texto (String)

CurDir Regresa la ruta actual

CVar Convierte una expresión 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 específica de una fecha

DateSerial Convierte una fecha en un número serial

DateValue Convierte una cadena de texto en una fecha

Day Regresa el día del mes de una fecha

Dir Regresa el nombre de un archivo o directorio que concuerde con un patrón

EOF Regresa verdadero si se ha llegado al final de un archivo

FileDateTime Regresa la fecha y hora de la última modificación de un archivo

FileLen Regresa el número de bytes en un archivo


FormatCurrency Regresa un número como un texto con formato de moneda

FormatPercent Regresa un número 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 evaluación de una expresión

InputBox Muestra un cuadro de diálogo que solicita la entrada del usuario

InStr Regresa la posición de una cadena de texto dentro de otra cadena

InStrRev Regresa la pocisión de una cadena de texto dentro de otra cadena pero empezand

Int Regresa la parte entera de un número

IsDate Regresa verdadero si la variable es una fecha

IsEmpty Regresa verdadero si la variable está vacía

IsError Regresa verdadero si la expresión es un valor de error

IsNull Regresa verdadero si la expresión es un valor nulo

IsNumeric Regresa verdadero si la variable es un valor numérico

Join Regresa una cadena de texto creada al unir las cadenas contenidas en un arrreglo

LCase Regresa una cadena convertida en minúsculas

Left Regresa un número específico 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 número específico 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 número de espacios especidicados

Split Regresa un arreglo formado for cadenas de texto que formaban una sola cadena

Str Regresa la representación en texto de un número

Right Regresa un número especificado de carecteres a la derecha de una cadena de texto

Rnd Regresa un número aleatorio entre 0 y 1

Round Redondea un número a una cantidad específica 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 número de segundos desde la media noche

TimeValue Convierte una cadena de texto a un númer 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 mayúsculas

Val Regresa el número contenido en una cadena de texto

Weekday Regresa un número que representa un día de la semana

WeekdayName Regresa el nombre de un día de la semana

Year Obtiene el año de una fecha

CREANDO UNA FUNCIÓN


VBA
Como hemos visto en el artículo Tu primera macro con VBA,
una subrutina nos ayuda a organizar y agrupar las
instrucciones en nuestro código. El día de hoy te mostraré
cómo crear una función VBA, la cual es similar a una subrutina
excepto por una cosa.
A diferencia de las subrutinas, las funciones VBA fueron
diseñadas para retornar un valor. A través de una función
podemos agrupar código que nos ayudará a hacer algún
cálculo específico y obtener un resultado de regreso.
Una función VBA también es conocida como Función Definida
por el Usuario, UDF por sus siglas en inglés, y una vez creada
puede ser utilizada de la misma manera que las funciones
incluidas en Excel como la función SUMAR o la función
BUSCARV. Esto hace que las funciones VBA sean una
herramienta muy poderosa.
A continuación mostraré una función que toma un rango y
regresa la suma de cada una de sus celdas. Es importante
insertar el código dentro de un Módulo tal como se muestra en
el artículo Tu primera macro con VBA. Posteriormente iré
explicando el detalle de la función.
LA PALABRA CLAVE FUNCTION
La primera línea de código comienza con la
palabra Function la cual define el inicio de la función. Observa
también cómo la última línea de código es End Function que
está especificando el término de la función.
Inmediatamente después de la palabra clave Function se debe
especificar el nombre de la función que en este ejemplo
es MiSuma seguida de paréntesis que de manera opcional
pueden contener una lista de parámetros.
PARÁMETROS  DE UNA FUNCIÓN VBA
Los parámetros son el medio por el cual pasamos información
de entrada a la función. Algunas funciones necesitarán de
dichas entradas para realizar algún cálculo y algunas otras no,
es por ello que los parámetros de una función son opcionales.
Puedes incluir tantos parámetros como sean necesarios y
solamente debes recordar separarlos por una coma.

Un parámetro no es más 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 característica principal de una
función es que puede regresar un valor. Es por eso que al
definir una función se debe indicar el tipo del valor de retorno
que tendrá dicha función. En este caso el valor de retorno será
de tipo Double y se está especificado por las palabras As
Double que aparecen después de los paréntesis.
CUERPO DE LA FUNCIÓN VBA
Una vez definida la función se pueden especificar todas las
instrucciones que serán 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 función se encuentra en la
instrucción For Each ya que realiza un recorrido por todas las
celdas del rango que fue especificado como parámetro. 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 cálculos necesarios, es
importante regresar el valor. Para hacerlo es indispensable
igualar el nombre de la función 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 función en la línea MiSuma =
resultado.
PROBANDO LA FUNCIÓN VBA
Finalmente probaré la funciónVBA recién creada dentro de
una hoja de Excel. Tal como lo definimos en el código, el único
parámetro de la función debe ser un rango del cual me
regresará la suma de los valores de la celda. Observa el
siguiente ejemplo.
Aunque la función MiSuma hace lo mismo que la función 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 función 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 darán funcionalidad
adicional para interactuar mejor con los usuarios y tener un
mejor control sobre la información.
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 botón.
Los controles de formulario en Excel se encuentran dentro
de la ficha Programador dentro del grupo Controles. Solamente
pulsa el botón Insertar y observarás cada uno de ellos:

Justo por debajo de los controles de formulario podrás observar


el grupo de controles ActiveX pero sus diferencias y similitudes
las discutiremos en otro artículo. Por ahora nos enfocaremos
solamente en los controles de formulario.
¿CÓMO 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 interacción
con el usuario. Desde una simple etiqueta hasta controles que
permiten una selección múltiple de sus opciones. A
continuación una breve descripción de cada uno de ellos.
 Barra de desplazamiento. Al hacer clic en las flechas se
va desplazando la barra dentro de un intervalo
predefinido.
 Botón. El botón nos permite ejecutar una macro al
momento de hacer clic sobre él.
 Botón de opción. Nos permite una única selección
dentro de un conjunto de opciones.
 Casilla de verificación. Permite la selección o no
selección de una opción.
 Control de número.  Nos ayuda a aumentar o disminuir
un valor numérico.
 Cuadro combinado. Es una combinación de un cuadro
de texto con un cuadro de lista.
 Cuadro de grupo. Agrupa varios controles dentro de un
rectángulo.
 Cuadro de lista. Muestra una lista de valores de los
cuales podemos elegir una sola opción  o múltiples
opciones de acuerdo a la configuración 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
versión 4 de Excel y por lo tanto han estado presentes en la
aplicación por más 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
más posibilidades de configuración y formato que los controles
de formulario.  Ambos tipos de controles se encuentran en la
ficha Programador.

La diferencia más significativa entre ambos es la manera en


como podemos obtener información de los controles al
momento de interactuar con el usuario. Los controles de
formulario solamente responderán después de que el usuario
ha interactuado con ellos, como después de haber pulsado el
botón. 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 ratón sobre el botón.

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 botón 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 botón Modo Diseño 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 características. A
continuación un ejemplo de la ventana Propiedades para un
botón 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
ejecución de dicha macro.
Los controles ActiveX no tienen asignada una macro
explícitamente sino que podemos asignar código 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 más. Para asignar código a uno de los
eventos de un control ActiveX solamente debemos hacer clic
derecho sobre él y seleccionar la opción Ver código.

Esto mostrará el Editor de Visual Basic con una subrutina para


el evento Click() donde podremos escribir nuestro código.

En la lista desplegable de la derecha podemos observar la lista


de eventos disponibles para nuestro control ActiveX y para los
cuales podemos escribir código 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 versión de Excel 2010 algunos controles de formulario
han dejado de ser soportados y no podemos utilizarlos más 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 opción
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 vacío donde el usuario puede introducir cualquier texto.
En esta ocasión revisaremos cómo incrustar un cuadro de texto
y hacer referencia al mismo desde código 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 botón Insertar y
entonces hacer clic sobre la opción Cuadro de texto  de la
sección Controles ActiveX.
El puntero del ratón 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 podrás hacer clic derecho
sobre él y seleccionar la opción Propiedades para conocer el
nombre que la ha sido asignado.

También puedes ver las propiedades de cualquier control


seleccionándolo primero y pulsando el botón 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 instrucción 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 instrucción:
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 instrucción:
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 selección. 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 botón Insertar
para seleccionar la opción 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 través de la propiedad llamada ListFillRange. 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 CÓDIGO
Otra alternativa para indicar los elementos de un cuadro de
lista es a través de código VBA. Para ello puedes incluir el
siguiente código en el evento Workbook_Open:

De esta manera cuando se abra el libro se agregarán 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 selección que hagamos. Para hacer
esta asociación debemos especificar la dirección de la celda en
la propiedad LinkedCell:
De esta manera, cada vez que hagamos una selección 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 también es llamado comúnmente por su
nombre en inglés: 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 botón Insertar pulsar el
comando Cuadro combinado (control ActiveX):
Después de dibujar el Cuadro combinado tendrás 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 opción diferente a las mostradas en la lista. En el
ejemplo anterior no aparecía el día domingo como parte de los
elementos, sin embargo puedo capturar el día 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 opción
seleccionada con código VBA de manera que nos
aseguremos que el usuario ha seleccionado una opción
de la lista. Un ejemplo de código de validación 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 configuración la
hacemos en la propiedad LinkedCell:

Cuando selecciones un elemento del cuadro combinado se


reflejará dicha selección en la celda indicada en la
propiedad LinkedCell:
CASILLA DE VERIFICACIÓN
EN VBA
Una casilla de verificación es un control ActiveX que
podemos utilizar para permitir que un usuario marque una
opción y por lo tanto poder conocer sus preferencias al verificar
dicho valor en código VBA.
EL CONTROL ACTIVEX CASILLA DE
VERIFICACIÓN
Para insertar este control debemos ir al comando Insertar y
seleccionar la opción Casilla de verificación (Control ActiveX).

Después de dibujar este control tendrás el siguiente resultado:

PROPIEDADES DE UNA CASILLA DE


VERIFICACIÓN
La primera propiedad que desearas modificar de una casilla de
verificación 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 verificación 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 propiedad Value:
VALOR DE UNA CASILLA DE
VERIFICACIÓN
Una casilla de verificación 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 Sub CheckBox1_Click()

Range("C4").Value = CheckBox1.Value

End Sub

Esta línea de código coloca el valor de la casilla de


verificación en la celda C4. De esta manera, al seleccionar la
casilla de verificación obtendré el siguiente resultado:
Para validar en VBA si la casilla de verificación tiene un valor
u otro podemos utilizar un código como el siguiente:
If CheckBox1.Value = True Then Range("C4").Value =

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

= 0

La primera línea valida si el control ActiveX tiene un valor


verdadero y  de ser así coloca el número 1 en la celda C4. Si
la casilla de verificación no ha sido seleccionada (falso)
entonces colocará el número cero en la celda C4.

BOTÓN DE OPCIÓN EN
VBA
Un botón de opción es un control ActiveX que nos permitirá
seleccionar una sola opción dentro de un grupo de botones de
opción. A diferencia de las casillas de verificación, los botones
de opción dependen uno del otro.
EL BOTÓN DE OPCIÓN EN EXCEL
Para insertar un botón de opción hacemos clic en el comando
Insertar de la ficha Programador.
Un solo botón de opción no hace mucho sentido, así que
siempre agregamos dos o más botones de opción para
permitir que usuario haga una selección de cualquiera de ellos.

Una vez que se ha agregado un segundo botón de


opción podrás notar que al seleccionar uno de ellos se
desmarcarán todos los demás.
LA PROPIEDAD CAPTION
De manera predeterminada Excel colocará el botón de
opción con un nombre como OptionButton1. Para cambiar este
texto debemos editar la propiedad Caption del botón de opción.

EL BOTÓN DE OPCIÓN EN VBA


Para saber si un botón de opción ha sido seleccionado
podemos acceder a su propiedad Value de la siguiente
manera:
1 Private Sub OptionButton1_Click()

If OptionButton1.Value = True Then MsgBox ("Has seleccionado la opción Hombre")


2
End Sub
3

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


seleccionado, en cuyo caso, la propiedad será igual a True.
Para este ejemplo, al validar que el botón de opción está
seleccionado, se mostrará un cuadro de diálogo con un
mensaje sobre la opción seleccionada.

FORMULARIOS EN VBA
Los formularios en VBA no son más que un cuadro de diálogo
de Excel donde podremos colocar controles que nos ayudarán
a solicitar información 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 opción de menú
Insertar y posteriormente la opción UserForm.

Inmediatamente se mostrar un formulario en blanco y de igual


manera podrás observar el Cuadro de herramientas:
Si no ves el Cuadro de herramientas puedes seleccionar el
menú Ver y la opción 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 podrás hacer la modificación.  De igual manera el texto
desplegado en los botones de comando se modifica en su
propiedad Caption.
CÓDIGO PARA EL BOTÓN CANCELAR
El botón cancelar cerrará el formulario sin guardar la
información capturada en ningún lugar. El código que debemos
utilizar es el siguiente:
Private Sub CommandButton2_Click()

Unload Me

End Sub

Para agregar este código puedes hacer doble clic sobre el


control. La sentencia “Unload Me” cerrará el formulario.
CÓDIGO PARA EL BOTÓN ACEPTAR
A diferencia del botón Cancelar, el botón Aceptar colocará los
datos de las cajas de texto en las celdas A1, B1 y C1. El código
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 botón Aceptar se transferirán los valores de los


controles TextBox hacia las celdas de la Hoja1.
BOTÓN PARA ABRIR FORMULARIO
Para facilitar la apertura del formulario puedes colocar un botón
ActiveX en la hoja con el siguiente código:

Private Sub CommandButton1_Click()

UserForm1.Show

End Sub

PROBAR EL FORMULARIO
Observa cómo cada uno de los botones realiza la acción
correcta al pulsarlos:

También podría gustarte