creación y aplicación de macros

153
TEMA 5. Creación y aplicación de Macros. Todo debería ser hecho tan simple como sea posible pero no más simple. Albert Einstein. Si eres un usuario recurrente de Microsoft Excel, puedo ayudarte a facilitar y automatizar tu trabajo y hacer que Excel trabaje por ti. Puedo ayudarte a estructurar fórmulas de cualquier tipo en tu libro de Excel y que sean replicables a tus demás libros Puedo ayudarte a programar funciones que no existen en Excel y así realizar fórmulas únicas que te faciliten algún cálculo específico. Puedo ayudarte a automatizar a través de Macros (VBA) cualquier tipo de manipulación manual que realices a tus archivos (sean cuales sean) y hacer que Excel los realice por ti en segundos con tan sólo un click Puedo ayudarte a importar o exportar información de cualquier base de datos ( SQL, SAP, Oracle, Access, Archivos de texto), ordenar y acomodar la información como la necesites. Excel y Visual Basic (es el lenguaje con el que se programan las macros) son herramientas muy poderosas y prácticamente pueden hacer cualquier cosa, lo que a usted se le ocurra, su imaginación es el límite. Aprovéchate de mis conocimientos y escríbeme. No importa la Ciudad o País dónde vivas, en estos tiempos con la tecnología existente la distancia no es impedimento para que pueda trabajar contigo. Y lo mejor de todo, Yo trabajo por proyecto. Es decir desde el inicio ya sabrás cuanto tendrás que invertir por el desarrollo y no tendrás que preocuparte por costos ocultos y el trabajo está totalmente garantizado. Crear o eliminar una macro

Upload: gabrielagarcianajera

Post on 29-Dec-2015

908 views

Category:

Documents


8 download

TRANSCRIPT

Page 1: Creación y aplicación de macros

TEMA 5. Creación y aplicación de Macros.

Todo debería ser hecho tan simple como sea posible pero no más simple.

Albert Einstein.

Si eres un usuario recurrente de Microsoft Excel, puedo ayudarte a facilitar y automatizar tu trabajo y hacer que Excel trabaje por ti.

Puedo ayudarte a estructurar fórmulas de cualquier tipo en tu libro de Excel y que sean replicables a tus demás libros

Puedo ayudarte a programar funciones que no existen en Excel y así realizar fórmulas únicas que te faciliten algún cálculo específico.

Puedo ayudarte a automatizar a través de Macros (VBA) cualquier tipo de manipulación manual que realices a tus archivos (sean cuales sean) y hacer que Excel los realice por ti en segundos con tan sólo un click

Puedo ayudarte a importar o exportar información de cualquier base de datos ( SQL, SAP, Oracle, Access, Archivos de texto), ordenar y acomodar la información como la necesites.

Excel y Visual Basic (es el lenguaje con el que se programan las macros) son herramientas muy poderosas y prácticamente pueden hacer cualquier cosa, lo que a usted se le ocurra, su imaginación es el límite.

Aprovéchate de mis conocimientos y escríbeme.

No importa la Ciudad o País dónde vivas, en estos tiempos con la tecnología existente la distancia no es impedimento para que pueda trabajar contigo.

Y lo mejor de todo, Yo trabajo por proyecto. Es decir desde el inicio ya sabrás cuanto tendrás que invertir por el desarrollo y no tendrás que preocuparte por costos ocultos y el trabajo está totalmente garantizado.

Crear o eliminar una macro

Para automatizar una tarea repetitiva, puede grabar rápidamente una macro en Microsoft Office Excel. También puede crear una macro utilizando el Editor de Visual Basic en Microsoft Visual Basic para escribir sus propios scripts de macro o para copiar toda o parte de una macro en una nueva macro. Una vez creada una macro, puede asignarla a un objeto (como un botón de la barra de herramientas, un gráfico o un control) para que pueda ejecutarla haciendo clic en ese objeto. Si ya no usa una macro, puede eliminarla.

Grabar una macro

Cuando graba una macro, la grabadora de macros graba todos los pasos necesarios para completar las acciones que desea que realice la macro. En los pasos grabados no se incluye el desplazamiento por la cinta de opciones.

 NOTA   La cinta de opciones es un componente de la Interfaz de usuario de Microsoft Office Fluent.

Page 2: Creación y aplicación de macros

1. Si la ficha Programador no está disponible, haga lo siguiente para mostrarla:

1. Haga clic en el botón de Microsoft Office   y, a continuación, haga clic en Opciones de Excel.

2. En la categoría Más frecuentes, bajo Opciones principales para trabajar con Excel, active la casilla de verificación Mostrar ficha Programador en la cinta de opciones y, a continuación, haga clic en Aceptar.

2. Para establecer el nivel de seguridad de manera que estén habilitadas temporalmente todas las macros, haga lo siguiente:

1. En la ficha Programador, en el grupo Código, haga clic en Seguridad de macros.

2. En Configuración de macros, haga clic en Habilitar todas las macros (no recomendado; puede ejecutarse código posiblemente peligroso) y, a continuación, haga clic en Aceptar.

 NOTA   Para ayudar a evitar que se ejecute código potencialmente peligroso, recomendamos que vuelva a cualquiera de las configuraciones que deshabilitan todas las macros cuando termine de trabajar con las macros. Para obtener más información acerca de cómo cambiar la configuración, vea el tema sobre cómo cambiar la configuración de seguridad de macros en Excel.

1. En la ficha Programador, en el grupo Código, haga clic en Grabar macro.

2. En el cuadro Nombre de la macro, escriba un nombre para la macro.

 NOTA   El primer carácter del nombre de la macro debe ser una letra. Los caracteres posteriores pueden ser letras, números o caracteres de subrayado. No pueden usarse espacios en un nombre de macro; puede utilizarse un carácter de subrayado para separar palabras. Si utiliza un nombre de macro que también es una referencia de celda, puede aparecer un mensaje de error indicando que el nombre de la macro no es válido.

3. Para asignar una combinación de tecla de método abreviado con CTRL para ejecutar la macro, en el cuadroTecla de método abreviado, escriba cualquier letra en mayúsculas o minúsculas que desee utilizar.

 NOTA   La tecla de método abreviado suplantará a cualquier tecla de método abreviado predeterminada equivalente en Excel mientras esté abierto el libro que contiene la macro. Para obtener una lista de teclas de método abreviado que utilicen la tecla CTRL que ya están asignadas en Excel, vea Teclas de función y de método abreviado de Excel.

4. En la lista Guardar macro en, seleccione el libro donde desea almacenar la macro.

Page 3: Creación y aplicación de macros

 SUGERENCIA   Si desea que la macro esté disponible siempre que utilice Excel, seleccione Libro de macros personal. Cuando selecciona Libro de macros personal, Excel crea un libro oculto de macros personal (Personal.xlsb) en caso de no existir uno previamente, y guarda la macro en este libro. En Windows Vista, el libro se guarda en la carpeta C:\Usuarios\nombre de usuario\AppData\Local\Microsoft\Excel\XLStart. En Microsoft Windows XP, el libro se guarda en la carpeta C:\Documents and Settings\nombre de usuario\Datos de programa\Microsoft\Excel\XLStart. Los libros ubicados en la carpeta XLStart se abren automáticamente siempre que se ejecuta Excel. Si desea que se ejecute automáticamente una macro del libro de macros personal en otro libro, también debe guardar ese libro en la carpeta XLStart, de forma que ambos libros se abran cuando se inicie Excel.

5. Escriba una descripción de la macro en el cuadro Descripción.

6. Haga clic en Aceptar para iniciar la grabación.

7. Realice las acciones que desee grabar.

8. En la ficha Programador, en el grupo Código, haga clic en Detener

grabación  .

 SUGERENCIA   También puede hacer clic en Detener grabación   en el lado izquierdo de la barra de estado.

Crear una macro mediante Microsoft Visual Basic

1. Si la ficha Programador no está disponible, haga lo siguiente para mostrarla:

1. Haga clic en el botón de Microsoft Office   y, a continuación, haga clic en Opciones de Excel.

2. En la categoría Más frecuentes, bajo Opciones principales para trabajar con Excel, active la casilla de verificación Mostrar ficha Programador en la cinta de opciones y, a continuación, haga clic en Aceptar.

2. Para establecer el nivel de seguridad de manera que estén habilitadas temporalmente todas las macros, haga lo siguiente:

1. En la ficha Programador, en el grupo Código, haga clic en Seguridad de macros.

En Configuración de macros, haga clic en Habilitar todas las macros (no recomendado; puede ejecutarse código posiblemente peligroso) y, a continuación, haga clic en Aceptar.

Page 4: Creación y aplicación de macros

NOTA Para ayudar a evitar que se ejecute código potencialmente peligroso, recomendamos que vuelva a cualquiera de las configuraciones que deshabilitan todas las macros cuando termine de trabajar con las macros.

En el grupo Código de la ficha Programador, haga clic en Visual Basic.

De ser necesario, en el Editor de Visual Basic, en el menú Insertar, haga clic en Módulo.

NOTA Se crean módulos automáticamente para todas las hojas del libro.

En la ventana de código del módulo, escriba o copie el código de macro que desea utilizar.

Para ejecutar la macro desde la ventana del módulo, presione F5.

En el Editor de Visual Basic, en el menú Archivo, haga clic en Cerrar y volver a Microsoft Excel cuando termine de escribir la macro.

Copiar parte de una macro para crear otra

1. Si la ficha Programador no está disponible, haga lo siguiente para mostrarla:

1. Haga clic en el botón de Microsoft Office   y, a continuación, haga clic en Opciones de Excel.

2. En la categoría Más frecuentes, bajo Opciones principales para trabajar con Excel, active la casilla de verificación Mostrar ficha Programador en la cinta de opciones y, a continuación, haga clic en Aceptar.

2. Para establecer el nivel de seguridad de manera que estén habilitadas temporalmente todas las macros, haga lo siguiente:

1. En la ficha Programador, en el grupo Código, haga clic en Seguridad de macros.

2. En Configuración de macros, haga clic en Habilitar todas las macros (no recomendado; puede ejecutarse código posiblemente peligroso) y, a continuación, haga clic en Aceptar.

 NOTA   Para ayudar a evitar que se ejecute código potencialmente peligroso, recomendamos que vuelva a cualquiera de las configuraciones que deshabilitan todas las macros cuando termine de trabajar con las macros.

1. Abra el libro que contiene la macro que desee copiar.

2. En la ficha Programador, en el grupo Código, haga clic en Macros.

Page 5: Creación y aplicación de macros

3. En el cuadro Nombre de la macro, haga clic en el nombre de la macro que desee copiar.

4. Haga clic en Modificar.

5. En la ventana de código del Editor de Visual Basic, seleccione las líneas de la macro que desee copiar.

 SUGERENCIA   Para copiar toda la macro, asegúrese de incluir las líneas Sub y End Sub en la selección.

6. En el menú Edición, elija Copiar.

 SUGERENCIA   También puede hacer clic con el botón secundario y seleccionar Copiar, o puede presionar CTRL+C.

7. En el cuadro Procedimiento de la ventana de código, haga clic en el módulo en el que desea colocar el código.

8. En el menú Edición, elija Pegar.

 SUGERENCIA   También puede hacer clic con el botón secundario y seleccionar Pegar, o puede presionar CTRL+V.

 SUGERENCIA   El archivo de libro de macros personal (Personal.xlsb) no se puede modificar porque es un libro oculto que siempre está abierto. Primero debe mostrarlo utilizando el comando Mostrar. También puede abrirlo en el Editor de Visual Basic presionando ALT+F11.

Asignar una macro a un objeto, gráfico o control

1. En una hoja de cálculo, haga clic con el botón secundario en el objeto, gráfico o control al que desea asignar una macro existente y, a continuación, haga clic en Asignar macro.

2. En el cuadro Nombre de la macro, haga clic en la macro que desea asignar.

Eliminar una macro

1. Siga uno de los procedimientos siguientes:

Abra el libro que contiene la macro que desee eliminar.

Si la macro que quiere eliminar está almacenada en el Iibro de macros personal (Personal.xlsb) y este libro se encuentra oculto, proceda de la siguiente manera para mostrarlo:

1. En la ficha Ver, en el grupo Ventana, haga clic en Mostrar.

2. En Mostrar libro, haga clic en PERSONAL y después en Aceptar.

2. Si la ficha Programador no está disponible, haga lo siguiente para mostrarla:

Page 6: Creación y aplicación de macros

1. Haga clic en el botón de Microsoft Office   y, a continuación, haga clic en Opciones de Excel.

2. En la categoría Más frecuentes, bajo Opciones principales para trabajar con Excel, active la casilla de verificación Mostrar ficha Programador en la cinta de opciones y, a continuación, haga clic en Aceptar.

1. En la ficha Programador, en el grupo Código, haga clic en Macros.

2. Seleccione el libro que contiene la macro que desea eliminar en la lista Macros en. Por ejemplo, haga clic en Este libro.

3. En el cuadro Nombre de la macro, haga clic en el nombre de la macro que desee eliminar.

4. Haga clic en Eliminar.

MACROS EN EXCEL - MACROS VBA EXCEL

Excel.

Conozca las Macros en Excel y realice programas y aplicaciones a medida que harán el trabajo por usted, gestione de manera eficaz y eficiente su negocio......

Macros en Excel - Olvídese de trabajar horas y horas delante de la pantalla en realizar un informe, automatice tareas y deje que su hoja Excel haga el trabajo por usted....

Conceptos y definición de las macros realizadas en Excel - ¿Que es una macro en Excel?, comprenda como trabaja una macro en Excel y el lenguaje que utiliza ...

Ejemplo funcionamiento de una macro vba en Excel - Primer ejemplo de funcionamiento de una macro en Excel, consiste en automatizar la tarea de dar un formato predeterminado a un informe....

Excel Cuadro de mando integral - Hoja Excel donde puedes crear y definir un cuadro de mando integral con los diferentes indicadores que los compone, hoja excel para la gestión de empresas u organizaciones...

5s Excel - Plantilla Excel que te ayudará a realizar las auditorias 5s planificadas en el tiempo, lean manufacturing en Excel.

Macro Excel Stocks - Gestión de stocks y almacenes, generación automática de informes de situación actual de stocks, cálculo del stock mínimo de seguridad...

Page 7: Creación y aplicación de macros

Macro Excel Producción - Macro vba realizada en Excel que optimiza la secuencia de producción de varios pedidos....

Macro Excel MRP - Cálculo del MRP automatizado, facilita la gestión de stocks y producción en un entorno de fabricación...

Macro Excel Gantt - Planificación de proyectos mediante la herramienta Gantt, permite calcular el avance o retraso de cualquier proyecto, representación gráfica del diagrama de Gantt del proyecto

Macro Excel listar archivos - Macro Excel que nos permite listar cualquier tipo de archivo indicando la carpeta en la cual se encuentra, tamaño que ocupa, fecha de creación...

Macros en Excel 2007 - Existen diferencias de programación de la versión 2007 a versiones antiguas de Excel, aqui puedes encontrar un tutorial para habilitar las macros en Excel 2007, así como descargar las macros compatibles con esta versión.

Macro Excel descargas - Descarga todas las macros vba Excel disponibles para poder utilizarlas y observar su funcionamiento ..

Cada día las grandes y pequeñas empresas están descubriendo el poder de utilizar conjuntamente las macros con Excel, las compañías requieren de programas informáticos realizados a "medida" de sus necesidades, para gestionar de manera automática, rápida y eficaz los procesos internos del negocio.

A la vez muchas personas en su trabajo diario realizan tareas repetitivas frente a sus hojas Excel, desperdiciando días enteros en realizar informes de manera manual los cuales, con un simple clic a un botón en cuestión de segundos estaría realizado.

Las macros nos permiten automatizar y realizar tareas complejas, aumentando la eficiencia y eficacia del trabajo.

¿Que ventajas me aporta el disponer de macros en mis hojas Excel?.

Realización de programas a medida, cada empresa posee sus peculiaridades y características, en muchas ocasiones se adquieren paquetes de software estandarizado que no cumplen las expectativas iniciales y que acaban por no aportar una solución real a las necesidades del negocio, mediante las macros en Excel cada programa desarrollado se adapta fácilmente a cada tipo de empresa, proporcionando un versatilidad y flexibilidad incomparable.

Rápido y fácil manejo de los programas desarrollados bajo entorno Excel, cuando la empresa adquiere un software nuevo ha de dedicar cierta parte de tiempo en adquirir los conocimientos necesarios para el buen manejo del software, la gran ventaja que nos aporta las macros es que están desarrolladas bajo Excel, herramienta conocida por una gran publico y extendida en la mayoría de las empresas.

Realización de tareas y cálculos complejos, en muchas ocasiones dejamos de utilizar técnicas conocidas para la resolución de problemas, que nos podrían aportar datos de vital importancia ,por la gran

Page 8: Creación y aplicación de macros

complejidad de calculo que conllevan , mediante macros en Excel estas tareas y cálculos pasaran a la historia, realizando la propia hoja Excel el trabajo por nosotros.

Aumento de eficacia y eficiencia en el trabajo , puesto que reducimos horas y horas de nuestro trabajo en realizar tareas manuales al convertirlas en automáticas, ocupando el tiempo ganado en otros asuntos.

Macros en ExcelEl nombre macros en Excel proviene de la palabra macroinstrucción. Una macro o macroinstrucción es un conjunto de instrucciones que están almacenadas y listas para ser ejecutadas en cualquier momento al pulsar un botón o con un atajo de teclado.

El lenguaje de las macros en Excel

Las instrucciones de las macros en Excel deben ser escritas en un lenguaje de programación que sea comprendido por Excel mismo de manera que puedan ser ejecutadas de manera adecuada. El lenguaje de programación utilizado para este fin lleva el nombre Visual Basic para Aplicaciones que también es conocido por su abreviatura VBA.

VBA y las macros en Excel

VBA es todo un ambiente de programación que fue pensado para que los desarrolladores pudieran crear soluciones personalizadas en Excel. A través del lenguaje de programación VBA tendremos acceso a todas las propiedades y funcionalidades de Excel de manera que podamos hacer prácticamente cualquier cosa desde nuestras macros en Excel.

En estricto sentido podríamos crear cualquier solución de Microsoft Office utilizando VBA ya sea Excel, Word, PowerPoint o inclusive Outlook. Cada una de las aplicaciones de Microsoft Office proporciona los medios adecuados para manipular y extender su funcionalidad a través de VBA.

Dominar las macros en Excel

El verdadero secreto para dominar las macros en Excel radica en aprender a utilizar adecuadamente el lenguaje de programación VBA y su modelo de objetos. Dicho modelo de objetos refleja cada una de las partes de Excel en donde la aplicación está representada por el objeto Applicatio

Page 9: Creación y aplicación de macros

El objeto Application representa a Excel mismo podemos entender que los libros de Excel formarán parte del objeto Application. Los libros de Excel son representados por el objeto Workbooks y las hojas de cada libro por el objeto Worksheets. Como sabemos, cada hoja está compuesta por celdas y en VBA podemos acceder una celda o a un rango de celdas a través del objeto Range.

De esta manera podemos resumir la relación entre estos objetos de la siguiente manera: El objeto Application representa toda la aplicación, la cual puede contener varios libros de Excel representados por el objeto Workbooks. Cada libro tiene hojas que están representadas por el objeto Worksheets y sus celdas pueden ser accedidas a través del objeto Range.

Cada uno de los objetos en VBA tendrá una serie de propiedades y métodos que nos permitirán crear las instrucciones necesarias dentro de nuestras macros en Excel.

Cómo crear macros en Excel

Existen dos opciones para crear macros en Excel. La más sencilla es utilizar la grabadora de Macros la cual nos permite “grabar” las acciones que tomemos en la aplicación y las convierte en código VBA por nosotros. La desventaja de este

Page 10: Creación y aplicación de macros

método es que no siempre el código está optimizado y puede incluir líneas de código innecesarias.

La grabadora de macros es de gran ayuda cuando no estás familiarizado con VBA pero puede ser una buena fuente de aprendizaje cuando comienzas con la programación de macros en Excel.

El segundo método para crear macros en Excel es utilizar el Editor de Visual Basic el cual nos permite introducir el código de manera manual. La desventaja de este método es que es necesario tener un conocimiento avanzado de Excel para obtener el mayor provecho posible. La ventaja es que tendremos acceso ilimitado a toda la funcionalidad de Excel a través del código VBA.

Beneficios de las macros en Excel

Aprender a crear macros en Excel impulsará grandemente tu productividad con la herramienta ya que te permitirá automatizar aquellas tareas que realizas de manera manual día tras día. En lugar de realizar esas tareas repetitivas podrás ejecutarlas con un solo clic.

Las macros en Excel también te ayudarán a crear funciones personalizadas que harán tareas que no son posibles realizar con las funciones predeterminadas de Excel y por lo tanto podrás realizar cálculos y operaciones con tus datos que de otra manera serían casi imposibles. Además, las macros en Excel te permitirán crear aplicaciones profesionales a la medida de tus necesidades y que significarán un gran ahorro de cientos de horas de trabajo manual en Excel.

Una vez que te familiarices con las macros en Excel comenzarás a vislumbrar toda una nueva gama de oportunidades para desarrollar y aplicar el potencial de Excel en tus actividades cotidianas. Toma la decisión ahora y aprende a crear macros en Excel.

Las herramientas del Excel (I)

Introducción

Antes de ingresar al desarrollo del Lenguaje Visual Basic para Aplicaciones, haremos una breve exposición de algunas herramientas del Excel que se supone son conocidas por nuestro amable lector. Sin embargo, para unificar criterios y con el ánimo de recordar lo conocido, haremos una exposición de la secuencia de pasos que se sigue para ejecutar o usar determinadas herramientas.

Este repaso nos servirá también para mostrar dicha secuencia usado en las versiones Excel 2003 y Excel 2007.

Page 11: Creación y aplicación de macros

El objetivo de esta sección es, entonces, refrescar al participante de dichos procedimientos a fin de que pueda usarlos sea durante la grabación de macros o cuando tenga que programar ciertas acciones que requieran del uso de tales procedimientos.

En el numeral 1 presentamos la secuencia de pasos para realizar o ejecutar la herramienta con algunas observaciones y comentarios. En el numeral 2 daremos algunos ejemplos de grabación de macros que hagan uso de determinadas herramientas. En el numeral 3 desarrollaremos algunas macros que nos permitan realizar algunas operaciones en Excel de uso frecuente. Esta introducción termina con una breve exposición de la filosofía de objetos en la Programación Orientada a Objetos (POO), técnica empleada en la programación de macros.

Herramientas del Excel

Filtro avanzado

Figura 1

Usamos filtro avanzado para poder extraer, sea en una misma hoja o en otra, ciertos registros de una base de datos que cumplen determinadas condiciones.

Para realizar el filtro avanzado es necesario definir previamente el rango de criterios así como conocer el rango de datos y la celda, a partir de la cual se deben emitir los resultados.

El rango de criterios debe contener en su primera fila, los nombres de los campos (columnas) y en las siguientes filas contener los valores o criterios del filtrado.

La imagen que se presenta en la Figura 01, nos muestran la secuencia de pasos que se debe seguir para realizar el filtro avanzado.

Page 12: Creación y aplicación de macros

En la ventana de diálogo Filtro avanzado seleccione dónde desea el listado, cuál es el rango de criterios y a partir de qué celda se debe recibir los resultados.

Nota 1:

En el caso de Excel 2003, si desea extraer lo filtrado hacia otra hoja, entonces debe definir el rango de los datos con un nombre de rango. Si desea, el rango de criterios puede estar otra hoja, sólo que, para mayor facilidad se puede usar también nombre de rango. En la versión 2007 no es necesario que el rango tenga nombre, pero sí que el procedimiento se ejecute estando en la hoja hacia donde se desea el resultado.

Ejemplo

Abra el archivo Pedidos.xlsx. En la hoja Pedidos se tiene una lista de pedidos de 830 clientes, atendidos por un grupo de empleados y enviados a distintos destinos. En la hoja Detalles de pedidos, se tiene la lista de productos pedidos por cada cliente. Se desea obtener

a) Un reporte de los pedidos realizados por un cliente en particular.

b)Igualmente se desea obtener un reporte de todos los pedidos atendidos por dos empleados en particular y cuya forma de envío sea Speddy Express.

Solución

Haciendo clic en el cuadro de nombres, apreciamos que los datos de la hoja Pedidos tiene por nombre de rango, Pedidos y que la otra hoja tiene por nombre, Detalle.

Pregunta a)

Insertemos una nueva hoja; que su nombre sea Reporte 1.

Copiemos toda la cabecera (nombres de campo) de la hoja Detalles de pedidos y la pegamos en la primera fila de la hoja Reporte 1

Supongamos que se desea obtener los pedidos del cliente cuyo número de pedido es 11077. Para ello digitamos debajo de Id Pedido, 11077 (en la hoja Reporte)

Ahora realizaremos el procedimiento del Filtro Avanzado:

Estando en la hoja Reporte, hacemos clic en <Avanzadas> del grupo <Ordenar y filtrar> de la ficha <Datos>.

Page 13: Creación y aplicación de macros

Completamos la ventana de diálogo que aparece, según se muestra en la siguiente imagen:

A la derecha se aprecia una parte de dicho reporte.

Pregunta b)

Inserte una nueva hoja y que se nombre sea Reporte 2.

Copiaremos la cabecera de la hoja Pedidos y la pegamos en esta nueva hoja.

Supongamos que se desea obtener un reporte de los pedidos atendidos por Buchanan, Steven y por Davolio, Nancy. Esto significa que debemos ingresar estos nombres debajo de la columna Empleado y "Speddy Express" lo ingresamos debajo de Forma de envío pero repetido, como se muestra en la siguiente imagen:

Page 14: Creación y aplicación de macros

A continuación realice el mismo procedimiento anterior digitando en Rango de la lista: Pedidos. La siguiente imagen muestra parte de este reporte.

Programación orientada a objetos (I)

La programación orientada a objetos (POO) es una forma de programación en computadoras que tiene surge los años 70 pero tiene un desarrollo sorprendente los años 90 al utilizarlo en las microcomputadoras. Se diferencia de la programación clásica o estructurada en que las instrucciones hacen referencia a los elementos del entorno. Esos elementos representan "objetos"; y todos los datos y todas las acciones que se hagan con ellos o sobre ellos, están encapsuladas u ocultas en el objeto.

Objeto

Un objeto es una entidad provista de un conjunto de propiedades o atributos (datos), de un comportamiento o funcionalidad (métodos) y de sus posibles relaciones con otros objetos.

El concepto de objeto tiene un concepto equivalente al objeto de nuestro mundo real. En nuestro entorno siempre estamos en constante relación con objetos: los creamos, los usamos, los modificamos cambiando sus atributos, características o propiedades, los relacionamos con otros objetos, etc.

Por ejemplo tomemos el objeto Automóvil.

Un automóvil es un objeto bastante pesado que tiene un conjunto de propiedades como su identificación (placa), color, marca, modelo, accesorios, etc. Tiene también un conjunto de funciones como la de desplazarse, detenerse, ponerse en marcha. Podemos cambiarle de color, aumentar o quitar sus accesorios; es decir, podemos modificar sus propiedades. Tienen de la capacidad de ser activados para poner en acción sus funcionalidades; es decir, disponemos de un procedimiento para ponerlo en marcha, avanzar en retroceso, detenerlo, voltear a la izquierda o derecha; es decir, mediante un conjunto de métodos podemos darle uso al objeto automóvil.

En la POO el objeto es el automóvil; las propiedades de este objeto son sus características y los métodos lo constituyen las funcionalidades o procedimientos con los cuales hacemos uso del objeto y modificamos su estado o contenido.

Page 15: Creación y aplicación de macros

En el Excel podemos hablar del objeto Celda. Este objeto tiene dimensiones, color de fondo, tipo de borde, tiene un contenido o valor. Posee algunas funcionalidades que nos permiten cambiarlo de tamaño, de color de fondo, de contenido. El objeto celda pertenece al objetoRango y está relacionada con él y tiene otras relaciones con otros objetos como el objeto Hoja, el objeto Gráfico, Libro, etc.

Propiedades

Son variables que describen algunos aspectos o características del objeto en el que están incluidas.

Las propiedades de un objeto toman un valor que puede ser permanente o puede cambiar. Por ejemplo la propiedad color del objeto coche tomará un valor en concreto: verde, rojo, etc. El valor concreto de una propiedad de un objeto se llama estado del objeto. Podemos modificar la propiedad de un objeto accediendo a su estado.

Las propiedades de un objeto pueden tomar uno o varios valores. Estos valores pueden ser de cualquier tipo de dato (String o cadena de caracteres; entero, etc. ).

Para acceder al estado de un objeto en POO se usa la siguiente sintaxis:

MiAuto.Color = Verde

donde el punto recibe el nombre de operador.

Aquí, MiAuto es una instancia del objeto Automóvil; vale decir, es una copia.

Una propiedad de muchos objetos en Excel es Nombre. El objeto celda, rango u hoja tiene un nombre cuyo valor es asignado por omisión por el Excel o es asignado por el usuario. Una forma de acceder a la propiedad Nombre del objeto rango será:

ActiveSheet.Name = "Ingresos"

En este caso el objeto Hoja activa está cambiando de nombre por Ingresos.

Lenguaje Visual Basic de Aplicaciones (VBA) (I)

Antes de empezar el estudio de las instrucciones del Visual Basic para Aplicaciones, daremos una breve explicación del Editor de Visual Basic y los elementos dentro de su entorno.

El Editor del Visual Basic

El Editor de Visual Basic es un programa cuya ventana principal le permite realizar una serie de acciones sobre su macro, las propiedades de su libro y hojas, así como el de crear nuevos módulos (procedimientos) y formularios. Aquí podemos modificar las macros y potenciarlas dándole la interactividad que no posee. Para usar el editor, haga uso de la siguiente secuencia:

<Herramientas> - <Macro> - <Editor de Visual Basic> o también usando <ALT> + <F11>.

Page 16: Creación y aplicación de macros

Si se desea editar o abrir una macro en particular, seleccione:

<Herramientas> - <Macro> - <Macros> Seleccione la macro - <Modificar>.

Puede usar también, <ALT> +<F8>, luego seleccionar la macro y hacer clic en <Modificar>.

El Editor y la programación orientada a objetos

Todo lo que se puede hacer en el editor, está relacionada con programas. La filosofía de programación usada en este editor, es el de la Programación Orientada a Objetos (POO), la que nos permitirá hacer modificaciones sobre la programación subyacente a una macro y crear nuestros propios programas. Un programa es, en principio, una secuencia de pasos o instrucciones que escribimos para resolver un problema en particular.

En un lenguaje de programación orientada a objetos, las instrucciones se basan en variables, constantes, objetos, propiedades de los objetos, etc., pertenecientes a un ámbito, a un entorno. Todos estos elementos, sean sus componentes o características, como sus relaciones entre otros objetos, están agrupados o "encapsulados" en los objetos. Los objetos en Excel están constituidos por Celdas, Rangos, Hojas, Libros, Gráficos, Tablas, archivos externos, etc.

Los objetos, refiriéndonos a Excel, poseen cuatro características empleados en la codificación de un programa: Propiedades de los objetos, Métodos para manipularlos, Eventos que causan la manipulación de los mismos y, Colecciones o Clases a las que pertenecen los objetos.

Propiedades

Las propiedades son las características, atributos, formas o aspectos del objeto, a las que se hace referencia mediante el uso de variables. Una propiedad de objeto común de Excel es su Nombre, que nos permitirá usarlos en las diferentes usos que hagamos del objeto. De manera que una celda, un rango de celdas, una hoja, libro, gráfico o tabla en Excel, tendrá un nombre con el cual lo identificaremos.

Para hacer referencia a las propiedades mediante los programas en VBA, se usa la sintaxis:

NombreDelObjeto.Propiedad

Ejemplo:

Range("A5").Name Aquí se hace referencia al nombre del objeto Range de la celda A5.

Métodos

Un método es una acción, un procedimiento (un hilo), que tiene efectos sobre un objeto.

Ejemplo:

Page 17: Creación y aplicación de macros

Range("A5").Select Aquí se ejecuta el método Select, que permite activar la celda A5 y ponerla en disponible para cualquier otra operación.

Range("B2:G4").Formato En este caso, se ejecuta el método Formato sobre el rango B2:G4. Se supone que el método Formato ya está definido previamente.

Pág. 3.1

VBA. Más estructuras (I)

Sentencias repetitivas

SENTENCIA FOR … NEXT

Permite ejecutar un determinado número de veces el grupo de sentencias incluidos en el cuerpo del For … Next

Sintaxis

FOR VarIndice = ValInit TO ValFInal [ STEP Incr ]

[Sentencias]

NEXT

Para ello requiere de una variable que funciona a modo de índice (VarIndice) el cual empieza en un primer valor (ValInit), por cada iteración que se realiza, se incrementa en una determinada cantidad (Incr), hasta llegar al extremo (ValFinal), después del cual, continua con la siguiente sentencia, debajo de Next. Si el incremento es la unidad, no se usa STEP Incr

Ejemplo 12

Se desea obtener la suma de los cuadrados de los 20 primeros números de 1 a 20.

Definiremos las siguientes variables:

I : Para la variable índice

Suma : Para contener la suma: Suma = Suma + I.^2

Sub Suma01()

Dim I As Variant

Dim Suma As Double

Suma = 0

For I = 1 To 20

Page 18: Creación y aplicación de macros

Suma = Suma + I^2

Next

MsgBox("La suma de los primeros 20 números es: " & Suma)

End Sub

Programación usando objetos del Excel (I)

Objetos del Excel

El programa Excel dispone de una gran cantidad de objetos. Muchos de estos objetos forman parte de una clase o colección. La tabla presentada en la siguiente página, muestra la estructura de los objetos y colecciones en Excel.

En esta tabla se observa que las colecciones están con fondo gris con poca tonalidad y los objetos en un color gris con más tonalidad.

Se puede apreciar que dentro del objeto CellFormat se tiene la colección o conjunto Borders y dentro de éste, el objeto Borde.

En el caso de la colección o conjunto Names, tenemos la siguiente subestructura:

Por otro lado, el conjunto Range contiene un conjunto de objetos que se muestra en el siguiente esquema.

Creación de formularios de usuario (I)

Ejemplos de interacción con módulos y macros.

Un formulario es una ventana o cuadro de diálogo que contiene un conjunto de controles insertados por nosotros desde la barra de herramientas o cuadro de control al cual se le denomina también conjunto de Controles Activex.

Page 19: Creación y aplicación de macros

En el VBA a un formulario se le denomina USERFORM quizás recogiendo el nombre que tradicionalmente lo ha usado el lenguaje de programación Visual Basic.

Use la siguiente secuencia para insertar un formulario en la ventana del editor del Visual Basic.

La siguiente es una imagen de un UserForm

Page 20: Creación y aplicación de macros

En la figura anterior se muestra el formulario llamado UserForm1. Si se desea cambiar este nombre se debe hacer clic en la opción Name de la ventana de propiedades. Si se desea que el formulario se llame "Panel de ingreso de datos", entonces se debe hacer clic en la propiedad Caption de la ventana de propiedades y digitar dicho texto en el lado derecho de esta propiedad.

Aplicaciones (I)

A continuación vamos a desarrollar dos aplicaciones del uso macros y formularios en la solución de ciertos problemas

Aplicación 1 : Consulta y extracción en una base de datos

Se desea contar con una macro que permita consultar si es cliente o no y si existe, extraer toda la información de uno o más clientes hacia una nueva hoja. La macro debe solicitar el nombre de la hoja hacia donde se desea extraer y también el DNI para realizar la búsqueda. Los datos se encuentran en el archivo QbdClientes.xlsm.

Procedimiento:

Page 21: Creación y aplicación de macros

P1. Insertamos un módulo en el editor. Digitamos: Sub Consulta y presionamos <Enter> para crear el módulo:

Sub Consulta()

End

P2. Declaramos las variables HjName y Dni como de tipo String. El primero para recibir el nombre de la hoja y el segundo para recibir el número de DNI que se consultará.

P3. El siguiente código permite saber el número de registro que contiene la base de datos (menos las dos filas iniciales).

nDat = Columns("A:A").Range("A65536").End(xlUp).Row

P4. El siguiente segmento de código permite realizar la búsqueda en toda la tabla por el DNI solicitado, usando a Ix como puntero de fila. Si lo encuentra Ix contendrá el número de fila desde donde se extraerán los datos.

For Ix = 3 To nDat

If Val(Trim(Cells(Ix, 1))) = Dni Then

Sheets(HjName).Cells(Iz, 1) = Dni

Sheets(HjName).Cells(Iz, 2) = Cells(Ix, 2)

Sheets(HjName).Cells(Iz, 3) = Cells(Ix, 3)

Sheets(HjName).Cells(Iz, 4) = Cells(Ix, 4)

Sheets(HjName).Cells(Iz, 5) = Cells(Ix, 5)

Sheets(HjName).Cells(Iz, 6) = Cells(Ix, 6)

Sheets(HjName).Cells(Iz, 7) = Cells(Ix, 7)

Sheets(HjName).Cells(Iz, 8) = Cells(Ix, 8)

Ir = 1

End If

Next

P5. El siguiente segmento emite un mensaje si no encuentra el DNI

If Ir = 0 Then

Page 22: Creación y aplicación de macros

MsgBox ("No existe este DNI(RUC). Verifique")

If Iz > 2 Then Iz = Iz - 1

End If

P6. Finalmente el siguiente código permite retornar a la hoja de datos y saber si se desea hacer otra búsqueda.

Sheets(HjName).Activate

Range("A5").Select

If UCase(InputBox("Desea extraer otro? (S/N)")) = "S" Then

Iz = Iz + 1

Else

Iz = 0

End If

El procedimiento completo se encuentra en el editor del Visual basic. Hemos insertado un botón de comando a fin de ejecutar la macro haciendo clic en él. Se puede hacer clic en C1 de la hoja Salida para volver a la hoja de datos.

Page 23: Creación y aplicación de macros

De la observación de esta tabla, podemos decir que el objeto Application proporciona un contenedor de toda la aplicación y cada objeto WorkBook contiene una cantidad de objetos WorkSheet; dentro de este objeto referirnos al objeto Range, el cual nos permitirá trabajar con celdas o grupos de celdas.

Inicio rápido: Crear una macro

Page 24: Creación y aplicación de macros

Si hay tareas de Microsoft Excel que realiza reiteradamente, puede grabar una macro para automatizarlas. Una macro es una acción o un conjunto de acciones que se puede ejecutar todas las veces que desee. Cuando se crea una macro, se graban los clics del mouse y las pulsaciones de las teclas. Después de crear una macro, puede modificarla para realizar cambios menores en su funcionamiento.

Imagine que todos los meses crea un informe para el gerente del departamento contable. Desea que los nombres de los clientes con cuentas vencidas aparezcan en rojo y en negrita. Puede crear y luego ejecutar una macro que aplique rápidamente estos cambios de formato en las celdas seleccionadas.

¿Cómo?

Antes de grabar una macroCompruebe que se muestra la ficha Programador en la cinta de opciones. Dado que la fichaProgramador no se muestra de manera predeterminada, haga lo siguiente:

Haga clic en la pestaña Archivo, elija Opciones y, a continuación, haga clic en la categoríaPersonalizar cinta de

opciones.

En Personalizar cinta de opciones, en la lista Fichas principales, haga clic en Programador y, a continuación, haga

clic en Aceptar.

Grabe una macro.

En el grupo Código en la pestaña Programador, haga clic en Grabar macro y luego haga clic enAceptar para

comenzar a grabar.

Realice algunas acciones en la hoja de cálculo como escribir algún texto, seleccionar algunas columnas o filas o

rellenar con algunos datos.

En el grupo Código en la pestaña Programador, haga clic en Detener grabación.

Examine la macro y pruébela.Al modificar la macro que ha grabado, puede aprender un poco acerca del lenguaje de programación Visual Basic.

Page 25: Creación y aplicación de macros

Para editar una macro, en el grupo Código en la pestaña Programador, haga clic en Macros, seleccione el nombre de la macro que ha grabado y haga clic en Editar. Esta acción hará que se inicie el Editor de Visual Basic.Observe el código y vea de qué manera las acciones que ha grabado aparecen como código. Es probable que entienda bien algo del código y que otra parte le resulte un poco misteriosa.Experimente con el código, cierre el Editor de Visual Basic y ejecute la macro nuevamente. Esta vez observe si sucede algo distinto.

Sugerencia Office.com se actualiza continuamente con contenido nuevo, como artículos de procedimientos, vídeos y cursos de aprendizaje. Si en la parte inferior del visor de Ayuda se muestra Sin conexión y está conectado a Internet, haga clic en Sin conexión y, a continuación, elija Mostrar contenido de Office.com. O bien, visite la página de inicio de Ayuda y procedimientos de Excel en Office.com.

Que son las macros Excel

Las macros Excel es un conjunto de instrucciones programadas en la hoja de cálculo electrónica Excel, las cuales automatizan las operaciones que realiza la aplicación ofimática Excel con el objetivo de eliminar tareas repetitivas o realizar cálculos complejos en un corto espacio de tiempo y con una nula probabilidad de error.

Vba es el lenguaje de programación que se utiliza para la creación de las macros Excel, vba son las siglas de Visual Basic for Applications y es un lenguaje desarrollado por Microsoft e implementado dentro de los programas informáticos de la suite Office, donde se encuentra Excel.

Para entender mejor el concepto de las macros Excel imaginemos que en nuestro trabajo tenemos que escribir diariamente el valor de cambio de 1 euro por 1 dólar, para posteriormente realizar una serie de cálculos referentes a temas financieros o contables, entonces diariamente tendremos que entrar en Internet, buscar el valor de cambio, copiar y pegar el valor en nuestra hoja Excel y realizar los cálculos oportunos. Mediante las macros Excel al apretar un botón automáticamente la aplicación Excel realizará cada una de las operaciones descritas anteriormente por nosotros, dando el resultado fiable en apenas 1 segundo.

Page 26: Creación y aplicación de macros

En el anterior ejemplo si realizásemos este trabajo de manera manual podemos decir que invertiríamos 10 minutos, que al cabo del año supondría 3300 minutos, equivalente a casi 7 días laborables dedicados a realizar esta operación, ¿Qué pasaría si se tuviese que realizar este tipo de trabajo diariamente pero con una gama de 50 monedas diferentes?, ¿estaría dispuesto a dedicarse íntegramente el día completo a realizar esta tarea repetitiva sabiendo que con una macro Excel se puede realizar en apenas 1 segundo y con una nula probabilidad de error?.

Pero para que Excel haga estos trabajos por usted es necesario que le digamos como, en este momento es cuando interviene VBA, podemos decir que VBA es el interlocutor por el cual nos comunicamos con Excel, Vba es el lenguaje de programación de las Macros Excel.

Existen 2 maneras de realizar Macros en Excel:

Mediante el uso de la grabadora de Macros.

Mediante el uso del lenguaje VBA para programar a Excel

La primera de las opciones es la más fácil, dado a que solo requiere apretar al botón grabador de macros y realizar el conjunto de operaciones que queramos que se repitan, una vez finalizado guardamos la macro grabada con el nombre que queramos. Cada vez que queramos ejecutar esta macro tendremos que apretar el botón ejecutar macro y seleccionarla.

Esta primera opción es la más fácil de usar pero es la que presenta más limitaciones, dado a que solo ejecutará una vez la tarea grabada así como no utilizará toda la potencia del lenguaje VBA.

La segunda opción requiere del conocimiento y práctica del lenguaje de programación VBA, pero es sin duda la opción más potente en cuestión de desarrollo de aplicaciones, cualquier cosa que se nos ocurra puede realizarse mediante el uso de VBA, desde una aplicación compleja hasta la automatización de tareas repetitivas de nuestra hoja de cálculo Excel.

Page 27: Creación y aplicación de macros

macros en excel

Excel, y el resto de aplicaciones de Office, tienen entre sus opciones la posibilidad de

crear Macros.

Es una de las herramientas más útil que nos proporciona Excel. Lasmacros son programas

personalizados por los usuarios, que permiten que tú mismo escribas las acciones que quieres

que se realicen y estas se ejecuten en un solo clic.

Son atajos para automatizar acciones repetidas con asiduidad.

A continuación te presento varios ejemplos de macros que puedes usar en tu día a día.

Para poder realizarlos con soltura te recomiendo leer antes estos dos artículos: Crear y usar una

Macro, así como ¿Qué es una macro y para qué me sirve en Excel?

Macro supersencilla para insertar nombre empresa y departamento

Macro para insertar el nombre de la empresa y el departamento: MIEMPRESA SL, Departamento

Formación New York, con el formato siguiente: fondo de celda verde y color de la fuente beis,

tamaño 14 y en negrita.

Vas a Herramientas y de aquí a Macro y elegimos Grabar nueva macro, escribimos el nombre de

la macro por ejemplo Insertar_Nombre_Empresa.

Lleva a cabo las acciones que vas a automatizar, esto es das el formato indicado para a

continuación detener la macro.

Cada vez que ejecutes la macro se insertara el texto en la hoja de cálculo.

Macro para insertar una imagen

Análogamente a lo indicado en el apartado anterior, previamente recorre las imágenes que

existen en Imágenes prediseñadas o escoge una imagen de tu equipo.

Page 28: Creación y aplicación de macros

Aquí puedes dar el nombre Insertar_Imagen.

Como sugerencia puedes realizar esta macro para insertar el logo de la empresa.

Macro para redondear decimales

En concreto para el caso de un libro de Excel que tengas con cifras decimales y necesites

presentarlo sin ese detalle, por ejemplo un presupuesto, harías lo siguiente:

Vas al menú Herramientas y de aquí a Macro y eliges Grabar nueva macro..., en la ventana que

se abre das nombre a la Macro por ejemplo RedondearCifras (tiene que ser un nombre que no

empiece por un numero y que no contenga espacios) y aceptas. 

A partir de ahí realizas las acciones a automatizar: Seleccionas las celdas, botón derecho,

Formato de celdas, Moneda, quitas los decimales y pones 0, aceptas para finalizar vamos a

Herramientas, Macro y Detener Grabación.

Para guardar la Macro vas a Guardar Como desde Archivo y elegimos el tipo: Libro con Macros

habilitadas.

A partir de ahora cada vez que quieras que los datos de un libro queden redondeados y sin

posiciones decimales seleccionarás las celdas, seguirás la ruta: Herramientas, Macros...,

seleccionas la macro RedondearCifras y das a Ejecutar y en un abrir y cerrar de ojos todas las

cifras se han transformado desapareciendo los decimales.

Macro para cambiar la impresora asignada por defecto

En este caso lo que realizarás es la serie de pasos para indicar que en vez de imprimir por la

impresora predeterminada que tengas configurada para Excel, lo haga por otra de las

impresoras existentes.

Asigna el nombre Imprimir_Impresora2 y realiza la secuencia de movimientos.

Prueba tu macro con Ejecutar.

En relación con esta macro también te sugiero realizar una macro para imprimir en blanco y

negro si tu impresora está configurada en color (o viceversa), puedes llamar a la macro con el

nombre Imprimir_ByN.

Existen multitud de posibilidades a la hora de automatizar tareas con Excel, aprende poco a poco

esta herramienta y verás que te resulta de gran utilidad.

Page 29: Creación y aplicación de macros

¿Que ventajas me aporta el disponer de macros en mis hojas Excel?.

Realización de programas a medida, cada empresa posee sus peculiaridades y características, en muchas ocasiones se adquieren paquetes de software estandarizado que no cumplen las expectativas iniciales y que acaban por no aportar una solución real a las necesidades del negocio, mediante las macros en Excel cada programa desarrollado se adapta fácilmente a cada tipo de empresa, proporcionando un versatilidad y flexibilidad incomparable.

Rápido y fácil manejo de los programas desarrollados bajo entorno Excel, cuando la empresa adquiere un software nuevo ha de dedicar cierta parte de tiempo en adquirir los conocimientos necesarios para el buen manejo del software, la gran ventaja que nos aporta las macros es que están desarrolladas bajo Excel, herramienta conocida por una gran publico y extendida en la mayoría de las empresas.

Realización de tareas y cálculos complejos, en muchas ocasiones dejamos de utilizar técnicas conocidas para la resolución de problemas, que nos podrían aportar datos de vital importancia ,por la gran complejidad de calculo que conllevan , mediante macros en Excel estas tareas y cálculos pasaran a la historia, realizando la propia hoja Excel el trabajo por nosotros.

Aumento de eficacia y eficiencia en el trabajo , puesto que reducimos horas y horas de nuestro trabajo en realizar tareas manuales al convertirlas en automáticas, ocupando el tiempo ganado en otros asuntos.

Page 30: Creación y aplicación de macros

MACROS EN EXCEL

Hola amigos, estamos de nuevo aquí para mostrar la segunda parte de Guía de Macros en Excel que te será de gran utilidad, ya que se manejaran Formulas en los Formularios, Búsquedas de Texto y El Asistente de Windows. Entonces empecemos Amigos.

TRABAJANDO CON FORMULAS

Es de suma importancia saber aplicar Formulas en Macros de Excel, ya que la mayoría de las hojas de cálculos las involucran, por ejemplo los Inventarios, las Nominas o cualquier otro tipo de hoja las llevan, es por eso que en la siguiente Fase se muestra como manejar Formulas en Macros de Excel.

Fase I

1. Presione La Teclas Alt + F11, para entrar al editor de Visual Basic.2. Activa las siguientes opciones:

De clic en el Menú Ver y elija la opción Explorador de Proyectos De clic en el Menú ver y elija la opción Ventana Propiedades

3. Del Menú Insertar elija la Opción UserForm. Esto inserta el Formulario que programaremos con controles. En el Explorador de Proyecto se observara que se inserto el UserForm.

Ahora crearas un formulario con el siguiente aspecto:

Page 31: Creación y aplicación de macros

el formulario tendrá:

Tres etiquetas Tres Textbox Un Botón de Comando

Los datos que se preguntaran serán Nombre y Edad, los Días Vividos se generaran automáticamente cuando insertes la edad. A continuación se muestra como se deben de programar estos Controles:

Programación de los Controles:

Private Sub CommandButton1_Click()

Selection.EntireRow.Insert

TextBox1 = Empty

TextBox2 = Empty

TextBox3 = Empty

TextBox1.SetFocus

End Sub

Private Sub TextBox1_Change()

Range("A9").Select

ActiveCell.FormulaR1C1 = TextBox1

End Sub

Page 32: Creación y aplicación de macros

Private Sub TextBox2_Change()

Range("B9").Select

ActiveCell.FormulaR1C1 = TextBox2

Rem aquí se crea la Formula

TextBox3 = Val(TextBox2) * 365

Rem El Textbox3 guardara el total de la multiplicación del Textbox2 por 365

Rem El Comando Val permite convertir un valor de Texto a un Valor Numérico

Rem Esto se debe a que los Textbox no son Numéricos y debemos de Convertirlos

End Sub

Private Sub TextBox3_Change()

Range("C9").Select

ActiveCell.FormulaR1C1 = TextBox3

End Sub

Esto va permitir que cuando se ejecute el formulario y se de la edad el resultado de los días vividos aparecerá en el Textbox3 y se escribirá también en Excel. El comando Val es un comando de Visual Basic que te permite convertir un valor de texto a un valor numérico. Recuerden el Comando Rem se utiliza para poner Comentarios únicamente y no afecta a la programación.

Este Archivo de esta Macro se llama Macros de Edad y viene incluido aquí.

Generaremos otro ejemplo, Crea el Siguiente Formulario con los siguientes datos:

Page 33: Creación y aplicación de macros

5 Etiquetas 5 Textbox 1 Botón de Comando

Los datos que se preguntaran serán Nombre, Días Trabajados, Pago por Día, Bonos y Sueldo Neto.

Genera el siguiente código:

Private Sub CommandButton1_Click()

Selection.EntireRow.Insert

TextBox1 = Empty

TextBox2 = Empty

TextBox3 = Empty

TextBox1.SetFocus

End Sub

Private Sub TextBox1_Change()

Range("A9").Select

ActiveCell.FormulaR1C1 = TextBox1

End Sub

Page 34: Creación y aplicación de macros

Private Sub TextBox2_Change()

Range("B9").Select

ActiveCell.FormulaR1C1 = TextBox2

End Sub

Private Sub TextBox3_Change()

Range("C9").Select

ActiveCell.FormulaR1C1 = TextBox3

End Sub

Private Sub TextBox4_Change()

Range("D9").Select

ActiveCell.FormulaR1C1 = TextBox4

Rem aquí se crea la formula

TextBox5 = Val(TextBox2) * Val(TextBox3) + Val(TextBox4)

Rem El TextBox5 guardara el total

End Sub

Private Sub TextBox5_Change()

Range("E9").Select

ActiveCell.FormulaR1C1 = TextBox5

End Sub

Cuando se introduzca el Bonos automáticamente se generara el Sueldo Neto.

Page 35: Creación y aplicación de macros

Este ejemplo viene en el Archivo Macros de Sueldo Neto

BUSANDO INFORMACIÓN CON UN TEXTBOX

Se puede buscar información con un Textbox programándolo de la siguiente forma:

Dibuje una Etiqueta, un Textbox y un Botón de Comando y agregue el siguiente Código:

Private Sub TextBox1_Change()

Range("a9").Select

ActiveCell.FormulaR1C1 = TextBox1

End Sub

Private Sub CommandButton1_Click()

Cells.Find(What:=TextBox1, After:=ActiveCell, LookIn:=xlFormulas, LookAt _

:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:= _

Page 36: Creación y aplicación de macros

False).Activate

End Sub

Si te fijas incluí en la programación del Botón Buscar Ahora que buscara lo que en el Textbox1 a la hora de Presionarse.

Este proceso viene en el Archivo Completo Macro2

TRABAJANDO CON EL ASISTENTE

El asistente es el personaje de Office que se activa para ayudarnos y una de las ventajas es que podemos Manipularlo, por ejemplo se le puede dar animación, Moverse, Hacer Preguntas, Etc.

A continuación se muestran algunos códigos del Asistente:

Este código permite hacer visible el ayudante o sea mostrarlo. Si deseas ocultarlo solo cambia la opción True por False.

Assistant.Visible = True

Este código permite Mover el Asistente a un nuevo lugar, solo cambia los valores numéricos y cambiara de posición.

Page 37: Creación y aplicación de macros

Assistant.Move 430, 230

Este código permite activar un efecto de animación, cuando escribas el signo Igual después de Assistant.Animation = aparecerá un menú con diferentes efectos de animación

Assistant.Animation = msoAnimationListensToComputer

Este ejemplo permite crear un Nuevo Asistente para poderlo manipular con una pregunta y que tu contestes. La variable t guardara el valor de la respuesta, si el valor es -3 significa que es Si y por lo tanto borrara el renglón.

With Assistant.NewBalloon

.Text = "Deseas Borrar este Registro"

.Button = msoButtonSetYesNo

.Heading = "Advertencia"

t = .Show

End With

If t = -3 Then

Assistant.Animation = msoAnimationEmptyTrash

Selection.EntireRow.Delete

Page 38: Creación y aplicación de macros

End If

Este ejemplo viene en el archivo Macro2

Si deseas que siga saliendo esta guía solo escríbeme pidiendo que sigan saliendo ejemplos.

MACROS EN EXCEL

Hola amigos, estamos de nuevo aquí para mostrar la tercera parte de Guía de Macros en Excel que te será de gran utilidad, ya que se manejaran Consultas en los Formularios, accesos a las Macros desde Excel sin necesidad de entrar a Visual Basic y algunos métodos de trabajar mas fácil. De antemano muchas gracias por apoyar este curso de Excel creo que les ha servido, no había tenido mucho tiempo para escribir esta tercera parte pero creo que ya esta……. !!!Mucho Animo!!!.

ELABORANDO UNA CONSULTA

Todo Registro de información debe de tener su propia Consulta, Baja y Modificación, es por eso que en este nuevo capitulo nos concentramos en ello, primeramente en poder consultar la información que ya se escribió en la Hoja de Excel, obviamente desde una Macro combinada con Visual Basic, observemos el siguiente ejemplo:

Fase I

4. Presione La Teclas Alt + F11, para entrar al editor de Visual Basic.5. Activa las siguientes opciones:

De clic en el Menú Ver y elija la opción Explorador de Proyectos

Page 39: Creación y aplicación de macros

De clic en el Menú ver y elija la opción Ventana Propiedades6. Del Menú Insertar elija la Opción UserForm. Esto inserta el Formulario que

programaremos con controles. En el Explorador de Proyecto se observara que se inserto el UserForm.

Ahora crearas un formulario con el siguiente aspecto:

el formulario tendrá:

Tres etiquetas Tres Textbox Tres Botones de Comando

Los datos que se preguntaran serán Nombre, Dirección y Teléfono. Los tres botones nos servirán para lo siguiente: Consultar consultara la información que hayamos insertado desde el botón insertar. Baja podrá eliminar algún dato que se consulto y no lo queremos. Insertar tendrá la función de insertar los registros que vayamos dando de alta, es como los ejercicios anteriores. A continuación se muestra como se deben de programar estos Controles:

Programación de los Controles:

BOTON DE CONSULTA

Page 40: Creación y aplicación de macros

Private Sub CommandButton1_Click()

Cells.Find(What:=TextBox1, After:=ActiveCell, LookIn:=xlFormulas, LookAt _

:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:= _

False).Activate

ActiveCell.Offset(0, 1).Select

TextBox2 = ActiveCell

Rem la línea que contiene el ActiveCell.Offset(0, 1).Select permite moverse una columna a la derecha, por lo tanto después de la búsqueda de las primeras líneas con Cell.Find si encuentra el Nombre de la persona se mueve a la siguiente columna y la línea TextBox2 = ActiveCell Permite capturar el valor de la celda al Textbox2 y así mostrar el dato de la celda en el TextBox2.

ActiveCell.Offset(0, 1).Select

TextBox3 = ActiveCell

Rem Cada vez que se escriba la línea ActiveCell.Offset(0, 1).Select significa que se tiene que moverse una columna a la derecha.

Rem Si el nombre que tratas de consultar no se encuentra podría generar un error porque fallaría el Cell.Find esto puede ocurrir en el Word 97, yo trabajo con el Word 2000 o XP y no tengo ese problema. Pero esto se solucionaría con una trampa de error.

End Sub

Page 41: Creación y aplicación de macros

BOTON BAJA

Private Sub CommandButton2_Click()

Selection.EntireRow.Delete

Range("A9").Select

TextBox1 = Empty

TextBox2 = Empty

TextBox3 = Empty

TextBox1.SetFocus

End Sub

BOTON INSERTAR

Private Sub CommandButton3_Click()

Range("A9").Select

Selection.EntireRow.Insert

TextBox1 = Empty

TextBox2 = Empty

TextBox3 = Empty

TextBox1.SetFocus

End Sub

Page 42: Creación y aplicación de macros

CUADROS DE TEXTO

Private Sub TextBox1_Change()

Range("A9").FormulaR1C1 = TextBox1

Rem esta primer línea reemplaza a estas dos…… que te parece todavía mas corta

Range("A9").Select

ActiveCell.FormulaR1C1 = TextBox1

End Sub

Private Sub TextBox2_Change()

Range("B9").FormulaR1C1 = TextBox2

End Sub

Private Sub TextBox3_Change()

Range("C9").FormulaR1C1 = TextBox3

End Sub

Si con el Botón Consulta tienes un error cuando no encuentra a la persona, entonces tendrás que agregar esto a tu código del Botón Consultar

Page 43: Creación y aplicación de macros

BOTON DE CONSULTA

Private Sub CommandButton1_Click()

On Error Goto noencontro

Rem esta línea genera una trampa de error si Excel encuentra un error se le dice que se vaya a la etiqueta noencontro que esta definida mas adelante en el código. No use la trampa de error si no tiene problemas a la hora de que no encuentra a la persona. Recuerde si usted comete cualquier error Excel se dirigirá a la etiqueta noencontro.y esquivara cualquier error, hasta uno que usted cometa en la programación.

Cells.Find(What:=TextBox1, After:=ActiveCell, LookIn:=xlFormulas, LookAt _

:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:= _

False).Activate

Page 44: Creación y aplicación de macros

ActiveCell.Offset(0, 1).Select

TextBox2 = ActiveCell

ActiveCell.Offset(0, 1).Select

TextBox3 = ActiveCell

Rem También se puede utilizar este código para leer la información de las celdas lo que esta en azul. La diferencia es que se asignan los valores a variables y después se descargan a los TextBoxs.

ActiveCell.Offset(0, 1).Select

Direccion = Activecell

ActiveCell.Offset(0, 1).Select

Telefono = Activecell

TextBox2 = Direccion

TextBox3 = Telefono

noencontro:

Rem Aquí se esquiva el error

End Sub

Page 45: Creación y aplicación de macros

Que te parece es increíble como una Macro combinada con Visual Basic puede hacer hasta lo imposible

Bueno ya tenemos elaborado un ejercicio de consultas de datos, ahora accesaremos al formulario desde Excel sin necesidad de entrar al Editor de Visual Basic.

Para realizar este ejercicio debemos permanecer dentro del Editor de Visual Basic para poder introducir el código en un Modulo, por lo tanto deberás seguir los siguientes pasos:

De clic en el Menú Insertar y elija la opción Modulo Escriba dentro del Modulo el nombre del modulo en este caso Sub Entrada

Cuando usted escriba Sub Entrada aparecerá de la siguiente manera:

Sub Entrada()

Load UserForm1

UserForm1.Show

End Sub

Usted deberá escribir las dos líneas que están en medio que son:

Load UserForm1

Page 46: Creación y aplicación de macros

UserForm1.Show

La primer línea significa que cargue a la memoria el formulario que se llama UserForm1, la segunda línea significa que lo muestre, esto quiere decir que en el modulo estamos escribiendo el código de una macro que permitirá cargar el formulario desde Excel sin necesidad de entrar al Editor de Visual Basic.

Si te fija en el explorador de proyecto aparece el Modulo que creamos.

si queremos volver al formulario solo da doble clic en UserForm1

Bueno ya esta listo ahora salgamos del Editor de Visual Basic y volvamos a Excel.

De clic en el Menú Archivo del Editor de Visual Basic Elija la opción Cerrar y volver a Microsoft Excel

Ya que estamos en Excel, podemos insertar una imagen o un botón o cualquier grafico, por ejemplo:

Page 47: Creación y aplicación de macros

De clic en el Menú Insertar Elija la opción Imagen, seguido por Imagen Prediseñada inserte cualquier imagen y dele el tamaño que usted desea. De clic derecho sobre la Imagen Elija la opción Asignar Macro De clic en la Macro que se llama Entrada, es obvio la única que hicimos De Clic en Aceptar

De clic fuera de la imagen en cualquier celda y listo si presionas la imagen cargara el formulario.

Introducción a las macrosLas 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.

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

Page 48: Creación y aplicación de macros

Pero no te preocupes si no eres un programador de computadoras, Excel provee de una herramienta especial que permite crear una macro sin necesidad de conocer los detalles del lenguaje de programación.

Aunque si aceptas el desafío y te introduces en el mundo de la programación VBA pronto te convertirás en un Ninja de Excel. Verás que crear una macro en Excel no es tan complicado y será una manera fácil y rápida de eliminar esas tareas repetitivas que todos los días te quitan minutos preciados de tu tiempo.

Para qué sirve una macro en Excel

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

Page 49: Creación y aplicación de macros

Automatización de tareas

Seguramente estás familiarizado con procesos de automatización en el ámbito industrial. Un ejemplo muy claro son las plantas ensambladoras de automóviles donde existen robots que han sustituido tareas que antes eran hechas por humanos. La automatización trajo beneficios como mayor eficiencia y productividad de las plantas y un mejor aprovechamiento del tiempo del personal al reducir la cantidad de tareas repetitivas que realizaban.De la misma manera las macros nos ayudan a eliminar esas tareas repetitivas de nuestro trabajo cotidiano al permitirnos utilizar mejor nuestro tiempo en el análisis de los datos  y en la toma de decisiones.

¿Cómo se ve una macro en Excel?

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

Aprender el lenguaje VBA no es nada complicado y se puede lograr fácilmente. Lo que toma un poco más de tiempo es pulir nuestras habilidades de programación. Lo que quiero decir con esto es que para ser un buen programador de macros debes  dedicar tiempo en resolver múltiples problemas en donde puedas llevar al límite el lenguaje VBA.Creación de una macroLas 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é sire una macro en Excel puedes dar los primeros pasos en este camino utilizando el tutorial Introducción a las macros.

Page 50: Creación y aplicación de macros

 Mostrar la ficha ProgramadorSi quieres escribir una nueva macro o ejecutar una macro previamente creada, entonces debeshabilitar la ficha Programador dentro de la cinta de opciones. Para mostrar esta ficha sigue los siguientes pasos.Mostrar la ficha Programador en Excel 2010Haz clic en la ficha Archivo y elige la sección Opciones. Se mostrará el cuadro de diálogoOpciones 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.

Page 51: Creación y aplicación de macros

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

Grupos de la ficha ProgramadorEl 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.

Page 52: Creación y aplicación de macros

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 macrosPuedes 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 2010La grabadora de macros almacena cada acción que se realiza en Excel, por eso es conveniente planear con antelación los pasos a seguir de manera que no se realicen acciones innecesarias mientras se realiza la grabación. Para utilizar la grabadora de macros debes ir a la ficha Programador y seleccionar el comando Grabar macro.

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

En el cuadro de texto Nombre de la macro deberás colocar el nombre que identificará de manera única a la macro que estamos por crear. De manera opcional puedes asignar un método abreviado de teclado el cual permitirá ejecutar la macro con la combinación de teclas especificadas.

Page 53: Creación y aplicación de macros

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.

El código de la Grabadora de macrosUna manera muy interesante de descubrir y aprender más sobre código VBA es analizar el código generado por la Grabadora de macros. Para este ejemplo grabaremos una macro muy sencilla que solamente cambie el color de la fuente de la celda actual.Para comenzar debemos ir a la ficha Programador y pulsar el comando Grabar macro lo cual mostrará el cuadro de diálogo donde asignaré un nombre a la macro que estoy por crear.

Pulsa el botón Aceptar y se comenzarán a grabar todas las acciones, así que debes actuar con cuidado porque se grabará absolutamente todo. Para la macro que estoy grabando solo haré lo siguiente: iré a la ficha Inicio y pulsaré el comando Color de fuente y seleccionaré el color rojo para la celda activa.

Page 54: Creación y aplicación de macros

Una vez hecho esto debo detener la grabación de la macro y una alternativa para hacerlo es pulsar el icono que se muestra en la barra de estado.

Ahora que ya hemos generado la macro, pulsa el botón Macros que se encuentra en el grupo Código de la ficha Programador. Se mostrará el cuadro de diálogo  Macro que enlista todas las macros que hemos creado.

Page 55: Creación y aplicación de macros

Selecciona la macro recién creada y pulsa el botón Modificar. Esto abrirá el Editor de Visual Basic y mostrará el código generado para la macro.

Observando este código podemos aprender varias cosas. Para empezar observamos que el objeto Selection tiene una propiedad llamada Font que es la que hace referencia a la fuente de la celda o rango seleccionado. A su vez, la propiedad Font tiene otra propiedad llamada Color que es precisamente la que define el color rojo de nuestra celda.Aunque este ha sido un ejercicio muy sencillo, cuando tengas curiosidad o duda sobre qué objetos utilizar al programar en VBA considera utilizar la Grabadora de macros para darte una idea del camino a seguir.Establecer seguridad de macrosLa 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.

Page 56: Creación y aplicación de macros

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.

Programando en VBA

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

Page 57: Creación y aplicación de macros

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

Principios fundamentales

La programación en VBA puede ser un tanto misteriosa para la mayoría de los usuarios de Excel, sin embargo una vez que se comprenden los principios básicos de programación en VBA se comenzarán a crear soluciones robustas y efectivas.

El primer concepto importante a entender es que cada elemento de Excel es representado en VBA como un objeto. Por ejemplo, existe el objeto Workbook que representa a un libro de Excel. También existe el objeto Sheet que representa una hoja y el objeto Chart para un gráfico.

El segundo concepto importante a entender es que cada uno de estos objetos tiene propiedades y métodos. Para explicar mejor este concepto utilizaré una analogía.

Propiedades y Métodos

Supongamos que tenemos el objeto auto. Así es, un auto como el que manejamos todos los días para ir al trabajo. Este auto tiene varias propiedades como son: marca, modelo, color, tipo de transmisión las cuales ayudan a describir mejor al auto. También hay propiedades que indican su estado actual como por ejemplo gasolina disponible, temperatura del aceite, velocidad, kilómetros recorridos entre otras propiedades más. Podemos decir que las propiedades de un objeto nos ayudan a describirlo mejor en todo momento.

Por otro lado tenemos los métodos de un objeto que en resumen son las acciones que podemos realizar con dicho objeto. Por ejemplo, con nuestro auto podemos hacer lo siguiente: encenderlo, avanzar, vuelta a la izquierda, vuelta a la derecha, reversa, detener, apagar, etc. Todas las acciones que se pueden llevar a cabo con un objeto son conocidas como métodos.

Volviendo al terreno de Excel, el objeto Workbook tiene propiedades como ActiveSheet (Hoja activa), Name (Nombre), ReadOnly (Solo Lectura), Saved (Guardado) y algunos de sus métodos son Save (Guardar), Close (Cerrar), PrintOut (Imprimir), Protect (Proteger), Unprotect(Desproteger).

Será difícil mencionar todos los objetos de Excel y sus propiedades en esta publicación, pero lo importante a recordar en este ocasión es que cada elemento de Excel está siempre representado por un objeto en VBA y cada objeto tiene a su vez propiedades y métodos que nos permitirán trabajar con nuestros datos.

El Editor de Visual Basic

Page 58: Creación y aplicación de macros

El Editor de Visual Basic, VBE por sus siglas en inglés, es un programa independiente a Excel pero fuertemente relacionado a él porque es el programa que nos permite escribir código VBA que estará asociado a las macros.

Existen al menos dos alternativas para abrir este editor, la primera de ellas es a través del botón Visual Basic de la ficha Programador.

El segundo método para abrir este programa es, en mi opinión, el más sencillo y rápido y que es a través del atajo de teclado: ALT + F11. El Editor de Visual Basic contiene varias ventanas y barras de herramientas.

En la parte izquierda se muestra el Explorador de proyectos el cual muestra el proyecto VBA creado para el libro actual y además muestra las hojas pertenecientes a ese libro de Excel. Si por alguna razón no puedes visualizar este módulo puedes habilitarlo en la opción de menú Ver y seleccionando la opción Explorador de proyectos.

Page 59: Creación y aplicación de macros

El Explorador de proyectos también nos ayuda a crear o abrir módulos de código que se serán de gran utilidad para reutilizar todas las funciones de código VBA que vayamos escribiendo.

Dentro del Editor de Visual Basic puedes observar una ventana llamada Inmediato que está en la parte inferior. Esta ventana es de mucha ayuda al momento de escribir código VBA porque permite introducir instrucciones y observar el resultado inmediato. Además, desde el código VBA podemos imprimir mensajes hacia la ventana Inmediato con el comando Debug.Print de manera que podamos depurar nuestro código. Si no puedes observar esta ventana puedes mostrarla también desde el menú Ver.

El área más grande en blanco es donde escribiremos el código VBA. Es en esa ventana en donde escribimos y editamos las instrucciones VBA que dan forma a nuestras macros.

Es importante familiarizarnos con el Editor de Visual Basic antes de iniciar con la creación de macros.

Tu primera macro con VBA

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

Page 60: Creación y aplicación de macros

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.

Page 61: Creación y aplicación de macros

Si el módulo no está abierto solamente deberás hacer doble clic sobre él. Posiciónate en el área de código e introduce las siguientes instrucciones:

Antes de avanzar explicaré con detalle las instrucciones mostradas.

Subrutinas en VBA

El primer concepto que explicare es la instrucción Sub que es la abreviación de la palabra subrutina. Una subrutina no es más que un conjunto de instrucciones que se ejecutarán una por una hasta llegar al final de la subrutina que está especificado por la instrucción End Sub.

Las subrutinas nos ayudan a agrupar varias instrucciones de manera que podamos organizar adecuadamente nuestro código. Una subrutina siempre tiene un nombre el cual debe ser especificado justo después de la instrucción Sub y seguido por paréntesis.

Page 62: Creación y aplicación de macros

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ónMsgBox la cual solamente tiene un solo argumento que es precisamente el mensaje que necesitamos mostrar en pantalla al usuario.

Ejecutar macro

Para probar nuestro código bastará con pulsar el botón Ejecutar que se encuentra dentro de la barra de herramientas.

En cuanto se pulsa el botón se ejecutará el código recién ingresado y obtendremos el resultado en pantalla.

Listo, has creado tu primera macro la cual muestra una ventana de mensajes y despliega el texto especificado en la función MsgBox. Para guardar la macro recuerda que debes guardar el archivo como Libro de Excel habilitado para macros, de lo contrario perderás el código del módulo creado.

Utilizar comentarios en VBA

Page 63: Creación y aplicación de macros

Utilizar comentarios dentro del código VBA es una de las mejores prácticas que debes adoptar desde que inicias en el mundo de la programación en Excel. Los comentarios harán que tu código sea fácil de entender.

Un comentario en VBA es una línea dentro del código que no será tomada en cuenta al momento de realizar la ejecución. Los comentarios serán solo visibles por ti al momento de editar el código dentro del Editor de Visual Basic.

Para agregar un comentario será suficiente con colocar una comilla sencilla (‘) al inicio de la línea. Después de colocar la comilla sencilla debes escribir el comentario y al terminar de insertar la línea Excel colocará automáticamente el texto en color verde indicando que ha reconocido la línea como un comentario en VBA.

He visto en más de una ocasión que muchas personas no tienen esta buena práctica al programar en VBA y el problema se presentará cuando pase el tiempo y tengan que modificar el código pero  ya no recuerden la lógica implementada ni lo que significa cada una de las variables.

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

Comentar varías líneas de código

Como ya lo mencioné, un comentario en VBA será omitido al momento de la ejecución. En ocasiones cuando está haciendo pruebas con tu código VBA deseas evitar que ciertas líneas de código se ejecuten y una manera de hacer es comentando dichas líneas.

Page 64: Creación y aplicación de macros

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.

Page 65: Creación y aplicación de macros

Objetos, propiedades y métodos

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

Cada uno de los objetos de Excel tiene propiedades y métodos. Las propiedades son las características del objeto y los métodos son las acciones que el objeto puede hacer.

Propiedades de un objeto

Si una persona fuera un objeto de Excel sus propiedades serían el color de sus ojos, el color de su cabello, su estatura, su peso. De la misma manera, un objeto de Excel tiene propiedades por ejemplos, una celda (Range) tiene las propiedades valor (Value) y dirección (Address) entre muchas otras. Estas propiedades describen mejor al objeto.

Métodos de un objeto

Siguiendo con el ejemplo de una persona, si fuera un objeto de Excel sus métodos serían correr, caminar, hablar, dormir. Los métodos son las actividades o acciones que el objeto puede realizar. Los objetos de Excel se comportan de la misma manera que el ejemplo de una persona. Una celda (Range) tiene los métodos activar (Activate), calcular (Calculate), borrar (Clear) entre muchos más.

Utilizando las propiedades y los métodos

Para acceder a las propiedades y métodos de un objeto lo hacemos a través de una nomenclatura especial. Justo después del nombre del objeto colocamos un punto seguido del nombre de la propiedad o del método. Observa este ejemplo donde hacemos uso de la propiedadValue para la celda A1:

Range("A1").Value = "Hola"

Page 66: Creación y aplicación de macros

De esta manera asignamos una cadena de texto al valor de la celda A1. Ahora bien, si queremos borrar ese valor que acabamos de colocar en la celda podemos utilizar el método Clear de la siguiente manera:

Range("A1").Clear

Ver todas las propiedades y métodos

Los objetos tienen muchas propiedades y métodos y a veces es difícil pensar que los llegaremos a memorizar todos por completo. Sin embargo, el Editor de Visual Basic es de gran ayuda porque justamente al momento de escribir nuestro código nos proporciona la lista completa de propiedades y métodos para un objeto.

Esto sucede al momento de introducir el punto después del nombre del objeto. Puedes distinguir entre las propiedades y métodos porque tienen iconos diferentes. En la imagen de arriba los métodos son los que tienen el icono de color verde.

Recuerda, los objetos son cosas en Excel y sus características las llamamos propiedades las cuales  nos ayudan a definir al objeto. Los métodos son las acciones que cada objeto puede realizar.

Navegando el modelo de objetos

Excel tiene un modelo de objetos el cual es una jerarquía de todos los objetos que podemos utilizar desde el lenguaje VBA. En la parte superior de la jerarquía se encuentra el objeto Application y todos los demás objetos estarán por debajo de él.

Acceder a objetos inferiores

Para tener acceso a los objetos que están por debajo del objeto Application podemos utilizar el punto. El punto nos ayuda a navegar por la jerarquía hacia un nivel inferior. Observa lo que se muestra en el Editor de Visual Basic al colocar un punto después del objeto Application:

Page 67: Creación y aplicación de macros

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, pero describe por completo la jerarquía de los objetos.

Objetos predeterminados

Existe una funcionalidad intrínseca de VBA conocida como objetos predeterminados la cual nos permite omitir la escritura de algunos objetos y aun así tener un código funcional. Por ejemplo, en la sentencia mostrada previamente podemos omitir el objeto Application y tener nuestro código funcionando correctamente:

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

Referencias completas a objetos

A algunas personas les gusta utilizar las referencias completas a los objetos, es decir, especificar toda la ruta completa hasta llegar al objeto deseado. Una razón para hacer esto es porque da una claridad absoluta sobre la ubicación exacta de cada objeto lo cual ayudará a evitar cualquier mala interpretación del código.

Si decides no hacer uso de los objetos predeterminados sino que deseas utilizar las referencias completas hacia cada objeto aún hay una manera de ahorrar algunas líneas de código. Supongamos las siguientes instrucciones en VBA:

Page 68: Creación y aplicación de macros

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

Page 69: Creación y aplicación de macros

Application.Workbooks.Open Filename:="C:Libro1.xlsx"

Esta instrucción abrirá el archivo ubicado en “C:Libro1.xlsx” y lo agregará a la colección de objetos Workbooks. De esta manera podemos abrir tantos archivos como sean necesarios y para cada uno de ellos se creará un objeto Workbook el cual será almacenado dentro de Workbooks.

Hacer referencia a un libro en VBA

Una vez que hemos abierto los archivos que necesitamos podremos hacer referencia a cada uno de ellos a través de la colección de objetos Workbooks de la siguiente manera:

Application.Workbooks (1).Activate

El número que observas dentro de los paréntesis indica el índice del objeto Workbook dentro de la colección de objetos Workbooks. De manera predeterminada el índice 1 será para el libro de Excel que contiene el código VBA y a partir de ahí la numeración será de acuerdo al orden en que hayamos abierto otros archivos.

Si conocemos el nombre del libro podemos utilizarlo en lugar del índice y tener una instrucción como la siguiente:

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

La colección de objetos Workbooks nos permitirá acceder a todos los libros que hayamos abierto dentro de nuestra aplicación VBA.

Acceder las hojas de un libro

De igual manera podemos acceder las hojas de cualquier libro a través de su colección de objetos Worksheets. Esta colección también puede ser accedida por el índice de cada una de las hojas del libro:

Application.Workbooks (1).Worksheets(1).Range("A1").Value = "Hola"

Esta instrucción accede a la hoja con el índice 1 y coloca el valor “Hola Mundo”  en la celda A1. También podemos acceder a una hoja a través de su nombre en caso de que lo conozcamos:

Application.Workbooks(1).Worksheets("Hoja1").Range("A1").Value = "Hola"

Agregar una nueva hoja

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

Page 70: Creación y aplicación de macros

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.

Artículos relacionadosNavegando el modelo de objetos en VBAObjetos, propiedades y métodos en VBA

El objeto Application en VBA

Cuando escribimos macros con VBA trabajamos con múltiples objetos que pueden ejecutar nuestras instrucciones adecuadamente, pero el objeto Application está en el nivel más alto de la jerarquía del modelo de objetos de Excel.

El objeto Application simboliza a Excel mismo y nos da acceso a opciones y configuraciones a nivel de la aplicación. Muchas de las opciones que podemos modificar con el objeto Application son las mismas que encontramos en la ficha Archivo dentro del cuadro de diálogo Opciones de Excel.

Ya que el objeto Application es el objeto principal dentro de VBA todos los demás objetos derivan de él. Es por ello que encontrarás frecuentemente instrucciones que comienzan especificando el objeto Application:

Application.ActiveSheet.Name = "Reporte de Ventas"

Sin embargo, VBA nos permite, en la mayoría de los casos, omitir la escritura del objeto Application ya que supone que todos los demás objetos provienen de él. De esta manera la siguiente instrucción también es válida.

Page 71: Creación y aplicación de macros

ActiveSheet.Name = "Reporte de Ventas"

Colecciones del objeto Application

El objeto Application tiene algunas colecciones que son de mucha utilidad como Sheets, Columnsy Rows. La colección Sheets nos permite acceder a todas las hojas de un libro:

Application.Sheets.Count

Es muy importante mencionar que la colección Sheets se referirá al libro de Excel que se encuentre activo en el momento de ejecutar esta instrucción. Las colecciones Columns y Rows nos permitirán acceder a las columnas y filas de la hoja activa.

Application.Columns (5).Select

Application.Rows (5).Select

Propiedades del objeto Application

El objeto Application tiene muchas propiedades como para mencionarles todas en esta ocasión, pero algunas de las más importantes son las siguientes:

ActiveWorkbook. Devuelve un objeto Workbook que representa el libro de Excel activo.

ActiveSheet. Regresa un objeto Worksheet que representa a la hoja que esté actualmente seleccionada (activa).

ActiveCell. Devuelve un objeto Range que representa la celda activa dentro de la hoja activa en el libro de Excel activo.

ThisWorkbook. Esta propiedad devolverá un objeto Workbook que representará el libro que contiene la macro que está siendo ejecutada.

Métodos del objeto Application

Uno de los métodos más utilizados del objeto Application es el método InputBox que nos ayuda a mostrar un cuadro de diálogo que solicita al usuario el ingreso de algún valor. Observa la siguiente línea de código:

Impresiones = Application.InputBox(Prompt:="Número de impresiones:", _

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

Page 72: Creación y aplicación de macros

Esta instrucción hará que Excel muestre un cuadro de diálogo pidiendo al usuario ingresar 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

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]\AppData\Roaming\Microsoft\Excel\XLSTART

En la ruta que observas arriba [Usuario] es el nombre de tu usuario en el equipo. Además la carpeta App Data 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.

Creación del libro de macros personal

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.

Page 73: Creación y aplicación de macros

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:

Page 74: Creación y aplicación de macros

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:

Page 75: Creación y aplicación de macros

En este ejemplo he intentado utilizar la palabra Next en lugar del tipo de dato de la variable. Es por eso que el Editor de Visual Basic muestra un mensaje de error de compilación. La palabra Next es parte del lenguaje VBA pero la he utilizado en el lugar inapropiado y por eso obtengo el error.

De igual manera el Editor de Visual Basic notará si hemos utilizado una palabra que no pertenece al lenguaje VBA. En el siguiente ejemplo he confundido la instrucción Mod (módulo) y he colocado la palabra Mud.

Estos son solo unos ejemplos de errores de sintaxis que podemos cometer pero como lo he mencionado antes, el Editor de Visual Basic nos alertará sobre dichos errores y podremos detectarlos y corregirlos.

Errores en tiempo de ejecución

Page 76: Creación y aplicación de macros

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

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

Intentar realizar una operación no permitida por el ordenador. Por ejemplo una división entre cero o intentar sumar una cadena de texto y un valor Double.

Intentar utilizar una librería de código que no está accesible en ese momento. Utilizar un bucle con una condición que nunca se cumple. Tratar de asignar un valor que está fuera de los límites de una variable.

Existen muchas otras razones por las que podemos tener un error en tiempo de ejecución.  La mejor manera de prevenir estos errores será haciendo una depuración de nuestro código pero eso  será tema de otro artículo.

Lo importante por ahora es estar consiente de estos dos tipos de errores en VBA y saber que debemos estar atentos para corregir todos los errores de sintaxis de nuestro código y minimizar al máximo los posibles errores de ejecución.

Depurar macros en Excel

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

Depurar código VBA

Para iniciar con la depuración del código podemos seleccionar la opción de menú Depuración >Paso a paso por instrucciones o simplemente pulsar la tecla F8.

Page 77: Creación y aplicación de macros

Esto hará que se inicie la ejecución en la primera línea, la cual se mostrará con un fondo amarillo indicando que esa instrucción es la que esta por ejecutarse.

Para continuar con la depuración debemos pulsar de nuevo la tecla F8 hasta llegar al final del código. Cada vez que pulsamos la techa F8 suceden las siguientes cosas:

1. Excel ejecuta la instrucción que está sombreada en color amarillo2. 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:

Page 78: Creación y aplicación de macros

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.

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

Page 79: Creación y aplicación de macros

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:

Page 80: Creación y aplicación de macros

Esto creará automáticamente la subrutina para el evento SelectionChange pero podemos fácilmente crear otro evento seleccionándolo de la lista de Procedimientos. Para este ejemplo crearé el evento Activate:

Una vez creada la subrutina para el evento Activate solamente insertaré el código para que se muestre el mensaje dentro del cuadro de diálogo:

Ahora que hemos definido una acción asociada al evento Activate de la Hoja2, el mensaje se mostrará cada vez que actives la Hoja2.

Los eventos en VBA son de mucha utilidad porque nos ayudan a controlar el momento exacto en que deseamos ejecutar algún bloque de código al iniciarse alguna acción por el usuario.

ARREGLOS EN VBA

Los arreglos en VBA pueden ser entendidos como un grupo de variables contenidas dentro de otro repositorio. Dentro de un arreglo podemos referirnos a un valor específico (elemento) utilizando su posición (índice).

Page 81: Creación y aplicación de macros

Para comprender mejor lo que es un arreglo observa la siguiente imagen:

Un arreglo es una colección de “casillas” que contendrán variables individuales. Casa casilla tendrá un número de índice el cual nos permitirá asignar u obtener el valor que contiene.

Crear un arreglo en VBA

Para crear un arreglo en VBA utilizamos la siguiente instrucción:

Dim Paises(1 To 5) As String

Con este código estamos creando el arreglo llamado Paises que tendrá 5 elementos y estamos indicando que cada uno de los elementos será del tipo String, es decir, cadenas de texto. Una vez que ha sido creado el arreglo podemos asignar sus valores de la siguiente manera.

Paises(1) = "Argentina"

Paises(2) = "Colombia"

Paises(3) = "España"

Paises(4) = "México"

Paises(5) = "Perú"

Acceder un elemento del arreglo

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

MsgBox Paises(3)

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

Page 82: Creación y aplicación de macros

FECHA Y HORA EN VBA

Los valores de fecha y hora en VBA pueden ser manipulados de diversas maneras. En esta ocasión aprenderemos cómo obtener el año, mes y día en VBA y cómo hacer operaciones básicas con fechas.

Para realizar estos ejemplos debes colocar un control de botón en una hoja de Excel y colocar las líneas de código mostradas.

Obtener la fecha y hora actual

Para obtener la fecha actual en VBA utilizamos la función Date y para obtener la hora actual usamos Now.

En este ejemplo las variables fechaActual y horaActual contienen la fecha y horas actuales respectivamente.

Obtener el año, mes y día

En el ejemplo anterior he obtenido la fecha actual en la variable fechaActual, sin embargo, si deseo mostrar solamente el año puedo utilizar la función Year.

Page 83: Creación y aplicación de macros

El resultado de este código es el siguiente:

Al trabajar con fechas podremos obtener el mes utilizando la función Month y para obtener el día la función Day.

Obtener la hora, minuto y segundo

Para obtener la hora de la variable horaActual utilizaremos la función Hour de la siguiente manera:

El resultado es el siguiente:

Page 84: Creación y aplicación de macros

Para obtener el minuto y el segundo podremos utilizar las funciones Minute y Second.

Convertir una cadena de texto en fecha

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

El único argumento de la función DateValue es la cadena de texto que convertirá en fecha. El resultado de esta conversión es el siguiente:

Sumar días a una fecha

Para sumar días a una fecha en VBA utilizaremos la función DateAdd. Esta función nos permite especificar la cantidad exacta de días a sumar:

Page 85: Creación y aplicación de macros

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

El primer argumento de la función DateAdd determina la unidad de tiempo que será sumada. En este ejemplo especifiqué “d” para indicar días, pero podemos utilizar otras medidas de tiempo:

“yyyy” para años “m” para meses “d” para días “ww” para semanas

Las fechas y horas son un tipo de dato muy común con el que seguramente tendrás que trabajar  al crear tus macros. Es importante que aprendas a utilizar las funciones VBA que nos permitirán manipular adecuadamente la información.

FUNCIONES VBA

El lenguaje de programación VBA contiene un número considerable de funciones que podemos utilizar para construir código en Excel. Cuando estás escribiendo código,

Page 86: Creación y aplicación de macros

puedes introducir la palabra VBA seguida de un punto y verás una lista desplegable de estas funciones.

La siguiente tabla provee una descripción breve de algunas de las funciones VBA más utilizadas.

FUNCIÓN DESCRIPCIÓN

Abs Regresa el valor absoluto de un número

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

CBool Convierte una expresión a su valor booleano

CByte Convierte una expresión al tipo de dato Byte

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

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

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

CDec Convierte una expresión al tipo de dato decimal (Decimal)

Choose Selecciona un valor de una lista de argumentos

Chr Convierte un valor ANSI en valor de tipo texto

CInt Convierte una expresión en un dato de tipo entero (Int)

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

CreateObject Crea un objeto de tipo OLE

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

Page 87: Creación y aplicación de macros

CurDir Regresa la ruta actual

CVar Convierte una expresión en un dato de tipo variante (Var)

Date Regresa la fecha actual del sistema

DateAdd Agrega un intervalo de tiempo a una fecha especificada

DateDiff Obtiene la diferencia entre una fecha y un intervalo de tiempo especificado

DatePart Regresa una parte específica de una fecha

DateSerial Convierte una fecha en un número serial

DateValue Convierte una cadena de texto en una fecha

Day Regresa el día del mes de una fecha

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

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

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

FileLen Regresa el número de bytes en un archivo

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

FormatPercent Regresa un número como un texto con formato de porcentaje

Hour Regresa la hora de un valor de tiempo

Page 88: Creación y aplicación de macros

IIf Regresa un de dos partes, dependiendo de la evaluación de una expresión

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

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

InStrRev Regresa la pocisión de una cadena de texto dentro de otra cadena pero 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

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

LCase Regresa una cadena convertida en minúsculas

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

Len Regresa la longitud de una cadena (en caracteres)

LTrim Remueve los espacios a la izquierda de una cadena

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

Page 89: Creación y aplicación de macros

Minute Regresa el minuto de una dato de tiempo

Month Regresa el mes de una fecha

MsgBox Despliega un cuadro de dialogo con un mensaje especificado

Now Regresa la fecha y hora actual del sistema

Replace Reemplaza una cadena de texto con otra

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

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

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

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

Rnd Regresa un número aleatorio entre 0 y 1

Round Redondea un número a una cantidad específica de decimales

RTrim Remueve los espacios en blanco a la derecha de una cadena de texto

Second Regresa los segundos de un dato de tiempo

StrComp Compara dos cadenas de texto

StrReverse Invierte el orden de los caracteres de una cadena

Page 90: Creación y aplicación de macros

Time Regresa el tiempo actual del sistema

Timer Regresa el número de segundos desde la media noche

TimeValue Convierte una cadena de texto a un númer de serie de tiempo

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

TypeName Obtiene el nombre del tipo de dato de una variable

UCase Convierte una cadena de texto en mayúsculas

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

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

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

Year Obtiene el año de una fecha

CREANDO UNA FUNCIÓN VBA

Como hemos visto en el artículo Tu primera macro con VBA, una subrutina nos ayuda a organizar y agrupar las instrucciones en nuestro código. El día de hoy te mostraré cómo crear una función VBA, la cual es similar a una subrutina excepto por una cosa.

A diferencia de las subrutinas, las funciones VBA fueron diseñadas para retornar un valor. A través de una función podemos agrupar código que nos ayudará a hacer algún cálculo específico y obtener un resultado de regreso. Una función VBAtambién es conocida

Page 91: Creación y aplicación de macros

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 esMiSuma seguida de paréntesis que de manera opcional pueden contener una lista de parámetros.

Parámetros  de una función VBA

Los parámetros son el medio por el cual pasamos información de entrada a la función. Algunas funciones necesitarán de dichas entradas para realizar algún cálculo y algunas otras no, es por ello que los parámetros de una función son opcionales. Puedes incluir tantos parámetros como sean necesarios y solamente debes recordar separarlos por una coma.

Un parámetro no es más que una variable y por lo tanto puedes observar que en el ejemplo he definido la variable rango que será del tipo Range.

Valor de retorno

Como mencioné al principio, la característica principal de una función es que puede regresar un valor. Es por eso que al definir una función se debe indicar el tipo del valor de retorno que tendrá dicha función. En este caso el valor de retorno será de tipo Double y

Page 92: Creación y aplicación de macros

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 Mi Suma = resultado.

Probando la función VBA

Finalmente probaré la función VBA 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.

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

Page 93: Creación y aplicación de macros

Algunos ejemplos de eventos en VBA son los siguientes:

WorkbookOpen: El usuario abre un libro de Excel. WorkbookActivate: El usuario activa un libro de Excel. SelectionChange: El usuario cambia la selección de celdas en una hoja.

Para descubrir los eventos que tiene un objeto es suficiente con abrir el Editor de Visual Basic y posteriormente el Examinador de objetos (F2). En el panel izquierdo se mostrarán los objetos y en el panel derecho las propiedades, métodos y eventos de dicho objeto. Podrás distinguir los eventos porque tienen un icono en forma de rayo (color amarillo):

Un ejemplo de eventos en VBA

El ejemplo que crearemos en esta ocasión es para activar un cuadro de diálogo con el mensaje “Bienvenido a la Hoja 2” y que se mostrará cuando activemos la Hoja2 de nuestro libro. Para comenzar, debes seleccionar el objeto Hoja2 del panel izquierdo del Editor de Visual Basic y posteriormente seleccionar la opción Worksheet:

Page 94: Creación y aplicación de macros

Esto creará automáticamente la subrutina para el evento SelectionChange pero podemos fácilmente crear otro evento seleccionándolo de la lista de Procedimientos. Para este ejemplo crearé el evento Activate:

Una vez creada la subrutina para el evento Activate solamente insertaré el código para que se muestre el mensaje dentro del cuadro de diálogo:

Ahora que hemos definido una acción asociada al evento Activate de la Hoja2, el mensaje se mostrará cada vez que actives la Hoja2.

Page 95: Creación y aplicación de macros

Los eventos en VBA son de mucha utilidad porque nos ayudan a controlar el momento exacto en que deseamos ejecutar algún bloque de código al iniciarse alguna acción por el usuario.

ARREGLOS EN VBA

Los arreglos en VBA pueden ser entendidos como un grupo de variables contenidas dentro de otro repositorio. Dentro de un arreglo podemos referirnos a un valor específico (elemento) utilizando su posición (índice).

Para comprender mejor lo que es un arreglo observa la siguiente imagen:

Un arreglo es una colección de “casillas” que contendrán variables individuales. Casa casilla tendrá un número de índice el cual nos permitirá asignar u obtener el valor que contiene.

Crear un arreglo en VBA

Para crear un arreglo en VBA utilizamos la siguiente instrucción:

Dim Paises(1 To 5) As String

Con este código estamos creando el arreglo llamado Paises que tendrá 5 elementos y estamos indicando que cada uno de los elementos será del tipo String, es decir, cadenas de texto. Una vez que ha sido creado el arreglo podemos asignar sus valores de la siguiente manera.

Paises(1) = "Argentina"

Paises(2) = "Colombia"

Page 96: Creación y aplicación de macros

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.

Page 97: Creación y aplicación de macros

En este ejemplo las variables fechaActual y horaActual contienen la fecha y horas actuales respectivamente.

Obtener el año, mes y día

En el ejemplo anterior he obtenido la fecha actual en la variable fechaActual, sin embargo, si deseo mostrar solamente el año puedo utilizar la función Year.

El resultado de este código es el siguiente:

Al trabajar con fechas podremos obtener el mes utilizando la función Month y para obtener el día la función Day.

Obtener la hora, minuto y segundo

Page 98: Creación y aplicación de macros

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.

Page 99: Creación y aplicación de macros

El único argumento de la función DateValue es la cadena de texto que convertirá en fecha. El resultado de esta conversión es el siguiente:

Sumar días a una fecha

Para sumar días a una fecha en VBA utilizaremos la función DateAdd. Esta función nos permite especificar la cantidad exacta de días a sumar:

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

El primer argumento de la función DateAdd determina la unidad de tiempo que será sumada. En este ejemplo especifiqué “d” para indicar días, pero podemos utilizar otras medidas de tiempo:

“yyyy” para años

Page 100: Creación y aplicación de macros

“m” para meses “d” para días “ww” para semanas

Las fechas y horas son un tipo de dato muy común con el que seguramente tendrás que trabajar  al crear tus macros. Es importante que aprendas a utilizar las funciones VBA que nos permitirán manipular adecuadamente la información.

FUNCIONES VBA

El lenguaje de programación VBA contiene un número considerable de funciones que podemos utilizar para construir código en Excel. Cuando estás escribiendo código, puedes introducir la palabra VBA seguida de un punto y verás una lista desplegable de estas funciones.

La siguiente tabla provee una descripción breve de algunas de las funciones VBA más utilizadas.

FUNCIÓN DESCRIPCIÓN

Abs Regresa el valor absoluto de un número

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

CBool Convierte una expresión a su valor booleano

CByte Convierte una expresión al tipo de dato Byte

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

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

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

CDec Convierte una expresión al tipo de dato decimal (Decimal)

Page 101: Creación y aplicación de macros

Choose Selecciona un valor de una lista de argumentos

Chr Convierte un valor ANSI en valor de tipo texto

CInt Convierte una expresión en un dato de tipo entero (Int)

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

CreateObject Crea un objeto de tipo OLE

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

CurDir Regresa la ruta actual

CVar Convierte una expresión en un dato de tipo variante (Var)

Date Regresa la fecha actual del sistema

DateAdd Agrega un intervalo de tiempo a una fecha especificada

DateDiff Obtiene la diferencia entre una fecha y un intervalo de tiempo especificado

DatePart Regresa una parte específica de una fecha

DateSerial Convierte una fecha en un número serial

DateValue Convierte una cadena de texto en una fecha

Day Regresa el día del mes de una fecha

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

Page 102: Creación y aplicación de macros

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

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

FileLen Regresa el número de bytes en un archivo

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

FormatPercent Regresa un número como un texto con formato de porcentaje

Hour Regresa la hora de un valor de tiempo

IIf Regresa un de dos partes, dependiendo de la evaluación de una expresión

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

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

InStrRev Regresa la pocisión de una cadena de texto dentro de otra cadena pero 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

Page 103: Creación y aplicación de macros

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

LCase Regresa una cadena convertida en minúsculas

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

Len Regresa la longitud de una cadena (en caracteres)

LTrim Remueve los espacios a la izquierda de una cadena

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

Minute Regresa el minuto de una dato de tiempo

Month Regresa el mes de una fecha

MsgBox Despliega un cuadro de dialogo con un mensaje especificado

Now Regresa la fecha y hora actual del sistema

Replace Reemplaza una cadena de texto con otra

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

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

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

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

Page 104: Creación y aplicación de macros

Rnd Regresa un número aleatorio entre 0 y 1

Round Redondea un número a una cantidad específica de decimales

RTrim Remueve los espacios en blanco a la derecha de una cadena de texto

Second Regresa los segundos de un dato de tiempo

StrComp Compara dos cadenas de texto

StrReverse Invierte el orden de los caracteres de una cadena

Time Regresa el tiempo actual del sistema

Timer Regresa el número de segundos desde la media noche

TimeValue Convierte una cadena de texto a un númer de serie de tiempo

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

TypeName Obtiene el nombre del tipo de dato de una variable

UCase Convierte una cadena de texto en mayúsculas

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

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

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

Year Obtiene el año de una fecha

Page 105: Creación y aplicación de macros

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 VBAtambié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 esMiSuma seguida de paréntesis que de manera opcional pueden contener una lista de parámetros.

Page 106: Creación y aplicación de macros

Parámetros  de una función VBA

Los parámetros son el medio por el cual pasamos información de entrada a la función. Algunas funciones necesitarán de dichas entradas para realizar algún cálculo y algunas otras no, es por ello que los parámetros de una función son opcionales. Puedes incluir tantos parámetros como sean necesarios y solamente debes recordar separarlos por una coma.

Un parámetro no es más que una variable y por lo tanto puedes observar que en el ejemplo he definido la variable rango que será del tipo Range.

Valor de retorno

Como mencioné al principio, la característica principal de una función es que puede regresar un valor. Es por eso que al definir una función se debe indicar el tipo del valor de retorno que tendrá dicha función. En este caso el valor de retorno será de tipo Double y se está especificado por las palabras As Double que aparecen después de los paréntesis.

Cuerpo de la función VBA

Una vez definida la función se pueden especificar todas las instrucciones que serán ejecutas. En el ejemplo he comenzado por definir un par de variables, la variable celda que será del tipo Range y la variable resultado del tipo Double. En ésta última variable es donde se irá acumulando la suma de todas las celdas.

La parte central de la función se encuentra en la instrucción For Each ya que realiza un recorrido por todas las celdas del rango que fue especificado como parámetro. Para cada celda que se encuentra se va sumando su contenido en la variable resultado.

Retornando el valor

Una vez que se han hecho los cálculos necesarios, es importante regresar el valor. Para hacerlo es indispensable igualar el nombre de la función al valor o variable que contiene el valor que se desea regresar.  En nuestro ejemplo, la variable resultado es la que contiene la suma de todas las celdas por lo que se iguala con el nombre de la función en la línea Mi Suma = resultado.

Probando la función VBA

Finalmente probaré la función VBA 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.

Page 107: Creación y aplicación de macros

Controles de formulario en Excel

Los controles de formulario en Excel son objetos que podemos colocar dentro de una hoja de nuestro libro, o dentro de un formulario de usuario en VBA, y nos darán funcionalidad adicional para interactuar mejor con los usuarios y tener un mejor control sobre la información.

Podemos utilizar estos controles para ayudar a los usuarios a seleccionar elementos de una lista predefinida o permitir que el usuario inicie una macro con tan solo pulsar un botón. Los controles de formulario en Excel se encuentran dentro de la ficha Programador dentro del grupo Controles. Solamente pulsa el botón Insertar y observarás cada uno de ellos:

Justo por debajo de los controles de formulario podrás observar el grupo de controles ActiveX pero sus diferencias y similitudes las discutiremos en otro artículo. Por ahora nos enfocaremos solamente en los controles de formulario.

¿Cómo insertar un control de formulario en Excel?

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

Page 108: Creación y aplicación de macros

Los diferentes controles de formulario

Existen diferentes tipos de controles de formulario en Excel que ofrecen diversos tipos de funcionalidad e interacción con el usuario. Desde una simple etiqueta hasta controles que permiten una selección múltiple de sus opciones. A continuación una breve descripción de cada uno de ellos.

Barra de desplazamiento. Al hacer clic en las flechas se va desplazando la barra dentro de un intervalo predefinido.

Botón. El botón nos permite ejecutar una macro al momento de hacer clic sobre él.

Botón de opción. Nos permite una única selección dentro de un conjunto de opciones.

Casilla de verificación. Permite la selección o no selección de una opción. Control de número.  Nos ayuda a aumentar o disminuir un valor numérico. Cuadro combinado. Es una combinación de un cuadro de texto con un cuadro de

lista. Cuadro de grupo. Agrupa varios controles dentro de un rectángulo. Cuadro de lista. Muestra una lista de valores de los cuales podemos elegir una

sola opción  o múltiples opciones de acuerdo a la configuración del control. Etiqueta. Permite especificar un texto o breves instrucciones en el formulario.

Controles de formulario no disponibles en Excel 2010

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

Controles ActiveX en Excel

Los controles ActiveX son un tipo de controles que nos permiten agregar funcionalidad de formularios a nuestros libros de Excel. Existe otro tipo de controles que es conocido

Page 109: Creación y aplicación de macros

como Controles de formulario y que tienen una funcionalidad similar, sin embargo existen algunas diferencias entre ambos tipos.

Controles ActiveX y controles de formulario

Los controles de formulario fueron introducidos desde la versión 4 de Excel y por lo tanto han estado presentes en la aplicación por más tiempo que los controles ActiveX los cuales comenzaron a ser utilizados a partir de Excel 97. Ya que los controles ActiveX fueron introducidos posteriormente ofrecen más posibilidades de configuración y formato que los controles de formulario.  Ambos tipos de controles se encuentran en la ficha Programador.

La diferencia más significativa entre ambos es la manera en como podemos obtener información de los controles al momento de interactuar con el usuario. Los controles de formulario solamente responderán después de que el usuario ha interactuado con ellos, como después de haber pulsado el botón. Por el contrario, los controles ActiveX responden de manera continua a las acciones del usuario lo cual nos permite realizar acciones como cambiar el tipo de puntero del mouse que se muestra al colocar el puntero del ratón sobre el botón.

Propiedades de los controles ActiveX

A diferencia de los controles de formulario, los controles ActiveX tienen una serie de propiedades que podemos configurar pulsando el botón Propiedades que se encuentra dentro del grupo Controles de la ficha Programador.

Antes de poder ver las propiedades de un control ActiveX debemos pulsar el botón Modo Diseño el cual nos permitirá seleccionar el control y posteriormente ver sus

Page 110: Creación y aplicación de macros

propiedades. Cada tipo de control ActiveX mostrará una ventana de Propiedades con sus propias características. A continuación un ejemplo de la ventana Propiedades para un botón de comando ActiveX:

Controles ActiveX con subrutinas VBA

Otra diferencia entre los controles de formulario y los controles ActiveX es que los primeros pueden tener asignada una macro y al hacer clic sobre el control de formulario se iniciará la ejecución de dicha macro.

Los controles ActiveX no tienen asignada una macro explícitamente sino que podemos asignar código VBA para cada evento del control. Un evento de un control ActiveX puede ser el evento de hacer clic sobre el control, el evento de hacer doble clic, el evento de obtener el foco sobre el control ActiveX, entre otros eventos más.

Para asignar código a uno de los eventos de un control ActiveX solamente debemos hacer clic derecho sobre él y seleccionar la opción Ver código.

Page 111: Creación y aplicación de macros

Esto mostrará el Editor de Visual Basic con una subrutina para el evento Click() donde

podremos escribir nuestro código.

En la lista desplegable de la derecha podemos observar la lista de eventos disponibles para nuestro control ActiveX y para los cuales podemos escribir código VBA. Al seleccionar cualquiera de dichos eventos se insertará una nueva subrutina que podremos utilizar. Son precisamente la gran cantidad de eventos disponibles para los controles ActiveX lo que los hace controles muy poderosos que podemos utilizar en nuestros formularios.

Otra ventaja de los controles ActiveX

En la versión de Excel 2010 algunos controles de formulario han dejado de ser soportados y no podemos utilizarlos más. Ese es el caso del control de formulario conocido como campo de texto. Sin embargo, dentro de la lista de controles ActiveXtenemos disponibles un control llamado Cuadro de texto lo cual puede hacer atractiva la opción de utilizar controles ActiveXen lugar de controles de formulario.

Cuadro de texto en Excel

Page 112: Creación y aplicación de macros

El cuadro de texto es un control ActiveX que muestra un campo vacío donde el usuario puede introducir cualquier texto. En esta ocasión revisaremos cómo incrustar un cuadro de texto y hacer referencia al mismo desde código VBA.

Insertar un cuadro de texto en Excel

Para insertar un cuadro de texto en una hoja de Excel debes ir a la ficha Programador y hacer clic en el botón Insertar y entonces hacer clic sobre la opción Cuadro de texto  de la sección Controles ActiveX.

El puntero del ratón se convertirá en una cruz la cual nos permitirá dibujar el cuadro de texto sobre la hoja de Excel. Una vez dibujado el cuadro de texto podrás hacer clic derecho sobre él y seleccionar la opción Propiedades para conocer el nombre que la ha sido asignado.

También puedes ver las propiedades de cualquier control seleccionándolo primero y pulsando el botón Propiedades que se encuentra dentro del grupo Controles de la ficha Programador.

Page 113: Creación y aplicación de macros

Modificar valor del cuadro de texto

Si deseas colocar un texto dentro del cuadro de texto desde VBA puedes utilizar una instrucción como la siguiente:

TextBox1.Text = "Texto inicial"

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

 

Leer valor del cuadro de texto

Si quieres leer el valor del cuadro de texto y colocarlo en una celda podemos utilizar la siguiente instrucción:

Range("A1").Value = TextBox1.Text

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

Si deseas limpiar el cuadro de texto puedes utilizar la siguiente instrucción:

TextBox1.Text = ""

Cuadro de lista en VBA

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

Page 114: Creación y aplicación de macros

Dibujar un cuadro de lista

Para insertar un cuadro de lista en una hoja de Excel debemos ir a la ficha Programador y pulsar el botón Insertar para seleccionar la opción Cuadro de lista (control ActiveX).

Especificar los elementos del cuadro de lista

Una alternativa para indicar los elementos de un cuadro de lista es a través de la propiedad llamada ListFillRange. Para ello debemos abrir las propiedades del control e indicar el rango de celdas que contiene los elementos:

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

Page 115: Creación y aplicación de macros

Elementos del cuadro de lista por código

Otra alternativa para indicar los elementos de un cuadro de lista es a través de código VBA. Para ello puedes incluir el siguiente código en el evento Workbook_Open:

De esta manera cuando se abra el libro se agregarán las opciones al cuadro de lista llamado ListBox1.

Asociar una celda al cuadro de lista

Adicionalmente podemos asociar una celda al cuadro de lista la cual mostrará la selección que hagamos. Para hacer esta asociación debemos especificar la dirección de la celda en la propiedad LinkedCell:

Page 116: Creación y aplicación de macros

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

Cuadro combinado en VBA

Excel tiene un control ActiveX conocido como Cuadro combinado el cual también es llamado comúnmente por su nombre en inglés: Combo Box. Este control nos permite crear listas desplegables en nuestros formularios.

Para insertar un Cuadro combinado debemos ir a la ficha Programador y dentro del botón Insertar pulsar el comandoCuadro combinado (control ActiveX):

Page 117: Creación y aplicación de macros

Después de dibujar el Cuadro combinado tendrás un resultado como el siguiente:

Agregar elementos al cuadro combinado

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

Page 118: Creación y aplicación de macros

Como resultado obtendré los valores de las celdas como elementos del Cuadro combinado:

Diferencia con el cuadro de lista

Una diferencia importante entre el Cuadro combinado y el cuadro de lista es que el primero permite que el usuario capture una opción diferente a las mostradas en la lista. En el ejemplo anterior no aparecía el día domingo como parte de los elementos, sin embargo puedo capturar el día domingo dentro del cuadro de lista.

Si quieres evitar que el usuario introduzca sus propios valores existen dos opciones:

Utilizar el control ActiveX Cuadro de lista en lugar del Cuadro combinado Utilizar el Cuadro combinado pero validar la opción seleccionada con código VBA

de manera que nos aseguremos que el usuario ha seleccionado una opción de la lista. Un ejemplo de código de validación es el siguiente:

Page 119: Creación y aplicación de macros

Asociar una celda al cuadro combinado

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

Cuando selecciones un elemento del cuadro combinado se reflejará dicha selección en la celda indicada en la propiedadLinkedCell:

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

Page 120: Creación y aplicación de macros

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

Propiedades de una casilla de verificación

La primera propiedad que desearas modificar de una casilla de verificación será su propiedad Caption que es la que almacena el texto desplegado dentro del control ActiveX. Por ejemplo, si deseo que el control muestre el texto “Mayor de edad” debo hacer el cambio de la siguiente manera:

Page 121: Creación y aplicación de macros

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:

Page 122: Creación y aplicación de macros

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

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

Page 123: Creación y aplicación de macros

Un solo botón de opción no hace mucho sentido, así que siempre agregamos dos o más botones de opción para permitir que usuario haga una selección de cualquiera de ellos.

Una vez que se ha agregado un segundo botón de opción podrás notar que al seleccionar uno de ellos se desmarcarán todos los demás.

La propiedad Caption

De manera predeterminada Excel colocará el botón de opción con un nombre como OptionButton1. Para cambiar este texto debemos editar la propiedad Caption del botón de opción.

Page 124: Creación y aplicación de macros

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.

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.

Page 125: Creación y aplicación de macros

Inmediatamente se mostrar un formulario en blanco y de igual manera podrás observar el Cuadro de herramientas:

Si no ves el Cuadro de herramientas puedes seleccionar el menú Ver y la opción Cuadro de herramientas.

Page 126: Creación y aplicación de macros

Agregar controles al formulario

Para agregar un control al formulario debes seleccionarlo del Cuadro de herramientas y dibujarlo sobre el formulario. En mi formulario he agregado etiquetas y cuadros de texto así como un par de botones de comando:

El texto de las etiquetas se modifica en la propiedad llamada Caption. Para realizar este cambio solamente selecciona el control y se mostrará la ventana de Propiedades donde podrás hacer la modificación.  De igual manera el texto desplegado en los botones de comando se modifica en su propiedad Caption.

Código para el botón Cancelar

El botón cancelar cerrará el formulario sin guardar la información capturada en ningún lugar. El código que debemos utilizar es el siguiente:

Private Sub CommandButton2_Click()

Unload Me

End Sub

Para agregar este código puedes hacer doble clic sobre el control. La sentencia “Unload Me” cerrará el formulario.

Código para el botón Aceptar

A diferencia del botón Cancelar, el botón Aceptar colocará los datos de las cajas de texto en las celdas A1, B1 y C1. El código utilizado es el siguiente:

Private Sub CommandButton1_Click()

Worksheets("Hoja1").Range("A1").Value = Me.TextBox1.Value

Page 127: Creación y aplicación de macros

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:

Page 128: Creación y aplicación de macros

BIBLIOGRAFÍA.

http://www.queesexcel.net/funciones-excel.html

http://office.microsoft.com/es-hn/excel-help/funciones-HP005198425.aspx

http://office.microsoft.com/es-mx/excel-help/lista-de-funciones-de-hoja-de-calculo-por-categoria-HP010079186.aspx

http://www.aulaclic.es/macros-excel/

http://office.microsoft.com/es-mx/excel-help/inicio-rapido-crear-una-macro-HA010370613.aspx

http://www.comolohago.cl/como-hacer-una-macro-en-excel/

http://www.queesexcel.net/que-son-las-macros-excel.html

http://hojasdecalculo.about.com/od/Excel_avanzado/a/Descubre-Con-Macros-Los-Atajos-Para-Automatizar-Acciones-Repetidas-Con-Asiduidad.htm

http://www.webandmacros.com/macros_en_excel.htm

http://conalep.cjb.net

http://www.geocities.com/conalepnogales

http://conalep.cjb.net

http://webnogales.cjb.net