Texto Consulta Excel VBA

Descargar como pdf o txt
Descargar como pdf o txt
Está en la página 1de 87

CURSO EXCEL AVANZADO PARA HOY – UMSS Laboratorio Proyecto CAE - 2018

Las macros de Excel nos permiten automatizar tareas que


realizamos cotidianamente de manera que podamos ser más
eficientes en nuestro trabajo.

Instructor: Raúl O. Laura Conde [email protected]

Instructor: Raúl O. Laura Conde [email protected]


CURSO EXCEL AVANZADO PARA HOY – UMSS Laboratorio Proyecto CAE - 2018

Introducción a las macros

Las macros de Excel nos permiten automatizar tareas que realizamos


cotidianamente de manera que podamos ser más eficientes en nuestro trabajo. Una
macro no es más 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
artículos para comenzar a familiarizarte con este tema.

Introducción

 ¿Qué es una macro de Excel?


 ¿Para qué sirve una macro en Excel?
 Mostrar la ficha Programador
 La grabadora de macros
 Crear una macro
 El código de la grabadora de macros
 Establecer seguridad de macros

Principios básicos

 Programando en VBA
 El Editor de Visual Basic
 Tu primera macro con VBA
 Utilizar comentarios en VBA
 Objetos, propiedades y métodos en VBA
 Navegando el modelo de objetos
 El objeto Workbook y Worksheet
 El objeto Application
 El libro de macros personal
 Tipos de errores en VBA
 Depurar macros

Instructor: Raúl O. Laura Conde [email protected]


CURSO EXCEL AVANZADO PARA HOY – UMSS Laboratorio Proyecto CAE - 2018

Programación

 Variables en VBA
 Cadenas de texto en VBA
 La declaración If-Then en VBA
 Acceder celdas con VBA
 El bucle For-Next en VBA
 Operadores lógicos en VBA
 Eventos en VBA
 Arreglos en VBA
 Fecha y hora en VBA
 Funciones en VBA
 Crear una función en VBA

Controles

 Controles de formulario
 Controles ActiveX
 Cuadro de texto
 Cuadro de lista
 Cuadro combinado
 Casilla de verificación
 Botón de opción
 Formularios en VBA

Una vez que hayas dado los primeros pasos en el mundo de las macros y la
programación en VBA descubrirás que Excel se convierte en una herramienta muy
poderosa para solucionar cualquier problema que afrontes en el manejo de
información.

Instructor: Raúl O. Laura Conde [email protected]


CURSO EXCEL AVANZADO PARA HOY – UMSS Laboratorio Proyecto CAE - 2018

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

Instructor: Raúl O. Laura Conde [email protected]


CURSO EXCEL AVANZADO PARA HOY – UMSS Laboratorio Proyecto CAE - 2018

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.

Instructor: Raúl O. Laura Conde [email protected]


CURSO EXCEL AVANZADO PARA HOY – UMSS Laboratorio Proyecto CAE - 2018

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

Instructor: Raúl O. Laura Conde [email protected]


CURSO EXCEL AVANZADO PARA HOY – UMSS Laboratorio Proyecto CAE - 2018

Mostrar la ficha Programador

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

Mostrar la ficha Programador en Excel 2013

Haz clic en la ficha Archivo y elige la sección Opciones. Se mostrará el cuadro de


diálogo Opciones de Excel donde deberás seleccionar la opción Personalizar cinta
de opciones.

En el panel de la derecha deberás asegurarte de seleccionar la ficha Programador.

Instructor: Raúl O. Laura Conde [email protected]


CURSO EXCEL AVANZADO PARA HOY – UMSS Laboratorio Proyecto CAE - 2018

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

Instructor: Raúl O. Laura Conde [email protected]


CURSO EXCEL AVANZADO PARA HOY – UMSS Laboratorio Proyecto CAE - 2018

Grupos de la ficha Programador

El grupo Código tienes 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 poder ejecutarlas o eliminarlas. Y no podríamos
olvidar mencionar que en este grupo se encuentra el comando Grabar macro el
cual nos permite crear una macro sin necesidad de saber sobre programación en
VBA.

El grupo Complementos nos permite administrar y habilitar complementos como el


Solver.

El grupo Controles incluye funcionalidad para agregar controles especiales a las


hojas de Excel como los controles de formulario que son botones, casillas de
verificación, botones de opción entre otros más que serán 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 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 2013

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.

Instructor: Raúl O. Laura Conde [email protected]


CURSO EXCEL AVANZADO PARA HOY – UMSS Laboratorio Proyecto CAE - 2018

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.

Instructor: Raúl O. Laura Conde [email protected]


CURSO EXCEL AVANZADO PARA HOY – UMSS Laboratorio Proyecto CAE - 2018

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.

Instructor: Raúl O. Laura Conde [email protected]


CURSO EXCEL AVANZADO PARA HOY – UMSS Laboratorio Proyecto CAE - 2018

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.

Instructor: Raúl O. Laura Conde [email protected]


CURSO EXCEL AVANZADO PARA HOY – UMSS Laboratorio Proyecto CAE - 2018

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.

Instructor: Raúl O. Laura Conde [email protected]


CURSO EXCEL AVANZADO PARA HOY – UMSS Laboratorio Proyecto CAE - 2018

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.

Instructor: Raúl O. Laura Conde [email protected]


CURSO EXCEL AVANZADO PARA HOY – UMSS Laboratorio Proyecto CAE - 2018

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.

Instructor: Raúl O. Laura Conde [email protected]


CURSO EXCEL AVANZADO PARA HOY – UMSS Laboratorio Proyecto CAE - 2018

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.

Instructor: Raúl O. Laura Conde [email protected]


CURSO EXCEL AVANZADO PARA HOY – UMSS Laboratorio Proyecto CAE - 2018

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.

Instructor: Raúl O. Laura Conde [email protected]


CURSO EXCEL AVANZADO PARA HOY – UMSS Laboratorio Proyecto CAE - 2018

Programando en VBA

Excel 2013 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).

Instructor: Raúl O. Laura Conde [email protected]


CURSO EXCEL AVANZADO PARA HOY – UMSS Laboratorio Proyecto CAE - 2018

Será difícil mencionar todos los objetos de Excel y sus propiedades en esta
publicación, pero lo importante a recordar en esta 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.

Instructor: Raúl O. Laura Conde [email protected]


CURSO EXCEL AVANZADO PARA HOY – UMSS Laboratorio Proyecto CAE - 2018

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.

Instructor: Raúl O. Laura Conde [email protected]


CURSO EXCEL AVANZADO PARA HOY – UMSS Laboratorio Proyecto CAE - 2018

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.

Instructor: Raúl O. Laura Conde [email protected]


CURSO EXCEL AVANZADO PARA HOY – UMSS Laboratorio Proyecto CAE - 2018

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

Instructor: Raúl O. Laura Conde [email protected]


CURSO EXCEL AVANZADO PARA HOY – UMSS Laboratorio Proyecto CAE - 2018

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.

Instructor: Raúl O. Laura Conde [email protected]


CURSO EXCEL AVANZADO PARA HOY – UMSS Laboratorio Proyecto CAE - 2018

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.

Instructor: Raúl O. Laura Conde [email protected]


CURSO EXCEL AVANZADO PARA HOY – UMSS Laboratorio Proyecto CAE - 2018

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.

Instructor: Raúl O. Laura Conde [email protected]


CURSO EXCEL AVANZADO PARA HOY – UMSS Laboratorio Proyecto CAE - 2018

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

Instructor: Raúl O. Laura Conde [email protected]


CURSO EXCEL AVANZADO PARA HOY – UMSS Laboratorio Proyecto CAE - 2018

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.

Instructor: Raúl O. Laura Conde [email protected]


CURSO EXCEL AVANZADO PARA HOY – UMSS Laboratorio Proyecto CAE - 2018

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:

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:

Instructor: Raúl O. Laura Conde [email protected]


CURSO EXCEL AVANZADO PARA HOY – UMSS Laboratorio Proyecto CAE - 2018

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.

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

Instructor: Raúl O. Laura Conde [email protected]


CURSO EXCEL AVANZADO PARA HOY – UMSS Laboratorio Proyecto CAE - 2018

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

Instructor: Raúl O. Laura Conde [email protected]


CURSO EXCEL AVANZADO PARA HOY – UMSS Laboratorio Proyecto CAE - 2018

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

Ahora ya sabemos que VBA tiene un objeto para representar los libros de Excel
(Workbook) y otro objeto para representar las hojas de un libro (Worksheet). Ambos
tipos de objetos son almacenados dentro de colecciones de objetos que son
conocidas como Workbooks, que se refiere a la 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.

Instructor: Raúl O. Laura Conde [email protected]


CURSO EXCEL AVANZADO PARA HOY – UMSS Laboratorio Proyecto CAE - 2018

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.

Instructor: Raúl O. Laura Conde [email protected]


CURSO EXCEL AVANZADO PARA HOY – UMSS Laboratorio Proyecto CAE - 2018

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.

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]AppDataRoamingMicrosoftExcelXLSTART

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.

Instructor: Raúl O. Laura Conde [email protected]


CURSO EXCEL AVANZADO PARA HOY – UMSS Laboratorio Proyecto CAE - 2018

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:

Instructor: Raúl O. Laura Conde [email protected]


CURSO EXCEL AVANZADO PARA HOY – UMSS Laboratorio Proyecto CAE - 2018

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:

Instructor: Raúl O. Laura Conde [email protected]


CURSO EXCEL AVANZADO PARA HOY – UMSS Laboratorio Proyecto CAE - 2018

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.

Instructor: Raúl O. Laura Conde [email protected]


CURSO EXCEL AVANZADO PARA HOY – UMSS Laboratorio Proyecto CAE - 2018

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:

Instructor: Raúl O. Laura Conde [email protected]


CURSO EXCEL AVANZADO PARA HOY – UMSS Laboratorio Proyecto CAE - 2018

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 está 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:

Instructor: Raúl O. Laura Conde [email protected]


CURSO EXCEL AVANZADO PARA HOY – UMSS Laboratorio Proyecto CAE - 2018

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.

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

Instructor: Raúl O. Laura Conde [email protected]


CURSO EXCEL AVANZADO PARA HOY – UMSS Laboratorio Proyecto CAE - 2018

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.

Instructor: Raúl O. Laura Conde [email protected]


CURSO EXCEL AVANZADO PARA HOY – UMSS Laboratorio Proyecto CAE - 2018

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:

Instructor: Raúl O. Laura Conde [email protected]


CURSO EXCEL AVANZADO PARA HOY – UMSS Laboratorio Proyecto CAE - 2018

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:

Instructor: Raúl O. Laura Conde [email protected]


CURSO EXCEL AVANZADO PARA HOY – UMSS Laboratorio Proyecto CAE - 2018

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:

Instructor: Raúl O. Laura Conde [email protected]


CURSO EXCEL AVANZADO PARA HOY – UMSS Laboratorio Proyecto CAE - 2018

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:

Instructor: Raúl O. Laura Conde [email protected]


CURSO EXCEL AVANZADO PARA HOY – UMSS Laboratorio Proyecto CAE - 2018

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.

Instructor: Raúl O. Laura Conde [email protected]


CURSO EXCEL AVANZADO PARA HOY – UMSS Laboratorio Proyecto CAE - 2018

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.

Instructor: Raúl O. Laura Conde [email protected]


CURSO EXCEL AVANZADO PARA HOY – UMSS Laboratorio Proyecto CAE - 2018

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:

Instructor: Raúl O. Laura Conde [email protected]


CURSO EXCEL AVANZADO PARA HOY – UMSS Laboratorio Proyecto CAE - 2018

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:

Instructor: Raúl O. Laura Conde [email protected]


CURSO EXCEL AVANZADO PARA HOY – UMSS Laboratorio Proyecto CAE - 2018

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

Instructor: Raúl O. Laura Conde [email protected]


CURSO EXCEL AVANZADO PARA HOY – UMSS Laboratorio Proyecto CAE - 2018

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:

Instructor: Raúl O. Laura Conde [email protected]


CURSO EXCEL AVANZADO PARA HOY – UMSS Laboratorio Proyecto CAE - 2018

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:

Instructor: Raúl O. Laura Conde [email protected]


CURSO EXCEL AVANZADO PARA HOY – UMSS Laboratorio Proyecto CAE - 2018

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:

Instructor: Raúl O. Laura Conde [email protected]


CURSO EXCEL AVANZADO PARA HOY – UMSS Laboratorio Proyecto CAE - 2018

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:

Instructor: Raúl O. Laura Conde [email protected]


CURSO EXCEL AVANZADO PARA HOY – UMSS Laboratorio Proyecto CAE - 2018

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

Instructor: Raúl O. Laura Conde [email protected]


CURSO EXCEL AVANZADO PARA HOY – UMSS Laboratorio Proyecto CAE - 2018

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:

Instructor: Raúl O. Laura Conde [email protected]


CURSO EXCEL AVANZADO PARA HOY – UMSS Laboratorio Proyecto CAE - 2018

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,

Instructor: Raúl O. Laura Conde [email protected]


CURSO EXCEL AVANZADO PARA HOY – UMSS Laboratorio Proyecto CAE - 2018

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.

Instructor: Raúl O. Laura Conde [email protected]


CURSO EXCEL AVANZADO PARA HOY – UMSS Laboratorio Proyecto CAE - 2018

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.

Instructor: Raúl O. Laura Conde [email protected]


CURSO EXCEL AVANZADO PARA HOY – UMSS Laboratorio Proyecto CAE - 2018

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.

Instructor: Raúl O. Laura Conde [email protected]


CURSO EXCEL AVANZADO PARA HOY – UMSS Laboratorio Proyecto CAE - 2018

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:

Instructor: Raúl O. Laura Conde [email protected]


CURSO EXCEL AVANZADO PARA HOY – UMSS Laboratorio Proyecto CAE - 2018

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

Obtiene el valor ASCII del primer caracter de una cadena de


Asc
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)

Instructor: Raúl O. Laura Conde [email protected]


CURSO EXCEL AVANZADO PARA HOY – UMSS Laboratorio Proyecto CAE - 2018

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

Obtiene la diferencia entre una fecha y un intervalo de tiempo


DateDiff
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

Regresa el nombre de un archivo o directorio que concuerde


Dir
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

Instructor: Raúl O. Laura Conde [email protected]


CURSO EXCEL AVANZADO PARA HOY – UMSS Laboratorio Proyecto CAE - 2018

Hour Regresa la hora de un valor de tiempo

Regresa un de dos partes, dependiendo de la evaluación de


IIf
una expresión

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

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


InStr
cadena

Regresa la pocisión de una cadena de texto dentro de otra


InStrRev
cadena pero empezando desde el final

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

Regresa una cadena de texto creada al unir las cadenas


Join
contenidas en un arrreglo

LCase Regresa una cadena convertida en minúsculas

Regresa un número específico de caracteres a la izquierda de


Left
una cadena

Len Regresa la longitud de una cadena (en caracteres)

LTrim Remueve los espacios a la izquierda de una cadena

Extrae un número específico de caracteres de una cadena de


Mid
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

Instructor: Raúl O. Laura Conde [email protected]


CURSO EXCEL AVANZADO PARA HOY – UMSS Laboratorio Proyecto CAE - 2018

Replace Reemplaza una cadena de texto con otra

regresa una cadena de texto con el número de espacios


Space
especidicados

Regresa un arreglo formado for cadenas de texto que formaban


Split
una sola cadena

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

Regresa un número especificado de carecteres a la derecha de


Right
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

Remueve los espacios en blanco a la derecha de una cadena


RTrim
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

Remueve los espacios en blanco al inicio y final de una cadena


Trim
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

Instructor: Raúl O. Laura Conde [email protected]


CURSO EXCEL AVANZADO PARA HOY – UMSS Laboratorio Proyecto CAE - 2018

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

Instructor: Raúl O. Laura Conde [email protected]


CURSO EXCEL AVANZADO PARA HOY – UMSS Laboratorio Proyecto CAE - 2018

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.

Instructor: Raúl O. Laura Conde [email protected]


CURSO EXCEL AVANZADO PARA HOY – UMSS Laboratorio Proyecto CAE - 2018

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

Instructor: Raúl O. Laura Conde [email protected]


CURSO EXCEL AVANZADO PARA HOY – UMSS Laboratorio Proyecto CAE - 2018

¿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 2013

Instructor: Raúl O. Laura Conde [email protected]


CURSO EXCEL AVANZADO PARA HOY – UMSS Laboratorio Proyecto CAE - 2018

Los controles de formulario han estado presentes por varias versiones de Excel, sin
embargo a partir de Excel 2013 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.

Instructor: Raúl O. Laura Conde [email protected]


CURSO EXCEL AVANZADO PARA HOY – UMSS Laboratorio Proyecto CAE - 2018

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:

Instructor: Raúl O. Laura Conde [email protected]


CURSO EXCEL AVANZADO PARA HOY – UMSS Laboratorio Proyecto CAE - 2018

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

Instructor: Raúl O. Laura Conde [email protected]


CURSO EXCEL AVANZADO PARA HOY – UMSS Laboratorio Proyecto CAE - 2018

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

Instructor: Raúl O. Laura Conde [email protected]


CURSO EXCEL AVANZADO PARA HOY – UMSS Laboratorio Proyecto CAE - 2018

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.

Instructor: Raúl O. Laura Conde [email protected]


CURSO EXCEL AVANZADO PARA HOY – UMSS Laboratorio Proyecto CAE - 2018

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:

Instructor: Raúl O. Laura Conde [email protected]


CURSO EXCEL AVANZADO PARA HOY – UMSS Laboratorio Proyecto CAE - 2018

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:

Instructor: Raúl O. Laura Conde [email protected]


CURSO EXCEL AVANZADO PARA HOY – UMSS Laboratorio Proyecto CAE - 2018

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:

Instructor: Raúl O. Laura Conde [email protected]


CURSO EXCEL AVANZADO PARA HOY – UMSS Laboratorio Proyecto CAE - 2018

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:

Instructor: Raúl O. Laura Conde [email protected]


CURSO EXCEL AVANZADO PARA HOY – UMSS Laboratorio Proyecto CAE - 2018

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.

Instructor: Raúl O. Laura Conde [email protected]


CURSO EXCEL AVANZADO PARA HOY – UMSS Laboratorio Proyecto CAE - 2018

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:

Instructor: Raúl O. Laura Conde [email protected]


CURSO EXCEL AVANZADO PARA HOY – UMSS Laboratorio Proyecto CAE - 2018

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:

Instructor: Raúl O. Laura Conde [email protected]


CURSO EXCEL AVANZADO PARA HOY – UMSS Laboratorio Proyecto CAE - 2018

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:

Instructor: Raúl O. Laura Conde [email protected]


CURSO EXCEL AVANZADO PARA HOY – UMSS Laboratorio Proyecto CAE - 2018

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 = 1


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

Instructor: Raúl O. Laura Conde [email protected]


CURSO EXCEL AVANZADO PARA HOY – UMSS Laboratorio Proyecto CAE - 2018

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.

Instructor: Raúl O. Laura Conde [email protected]


CURSO EXCEL AVANZADO PARA HOY – UMSS Laboratorio Proyecto CAE - 2018

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:

Private Sub OptionButton1_Click()


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

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.

Instructor: Raúl O. Laura Conde [email protected]


CURSO EXCEL AVANZADO PARA HOY – UMSS Laboratorio Proyecto CAE - 2018

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:

Instructor: Raúl O. Laura Conde [email protected]


CURSO EXCEL AVANZADO PARA HOY – UMSS Laboratorio Proyecto CAE - 2018

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:

Instructor: Raúl O. Laura Conde [email protected]


CURSO EXCEL AVANZADO PARA HOY – UMSS Laboratorio Proyecto CAE - 2018

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:

Instructor: Raúl O. Laura Conde [email protected]

También podría gustarte