Sei sulla pagina 1di 129

TEMA 5. Creacin y aplicacin de Macros.

Todo debera ser hecho tan simple como sea posible pero no ms 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 frmulas de cualquier tipo en tu libro de Excel y que sean replicables a tus dems libros Puedo ayudarte a programar funciones que no existen en Excel y as realizar frmulas nicas que te faciliten algn clculo especfico. Puedo ayudarte a automatizar a travs de Macros (VBA) cualquier tipo de manipulacin manual que realices a tus archivos (sean cuales sean) y hacer que Excel los realice por ti en segundos con tan slo un click Puedo ayudarte a importar o exportar informacin de cualquier base de datos ( SQL, SAP, Oracle, Access, Archivos de texto), ordenar y acomodar la informacin como la necesites. Excel y Visual Basic (es el lenguaje con el que se programan las macros) son herramientas muy poderosas y prcticamente pueden hacer cualquier cosa, lo que a usted se le ocurra, su imaginacin es el lmite. Aprovchate de mis conocimientos y escrbeme. No importa la Ciudad o Pas dnde vivas, en estos tiempos con la tecnologa 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 sabrs cuanto tendrs que invertir por el desarrollo y no tendrs que preocuparte por costos ocultos y el trabajo est totalmente garantizado. Crear o eliminar una macro Para automatizar una tarea repetitiva, puede grabar rpidamente una macro en Microsoft Office Excel. Tambin 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 botn de la barra de herramientas, un grfico 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.

1. Si la ficha Programador no est disponible, haga lo siguiente para mostrarla: 1. Haga clic en el botn de Microsoft Office en Opciones de Excel. y, a continuacin, haga clic

2. En la categora Ms frecuentes, bajo Opciones principales para trabajar con Excel, active la casilla de verificacin Mostrar ficha Programador en la cinta de opciones y, a continuacin, haga clic en Aceptar. 2. Para establecer el nivel de seguridad de manera que estn habilitadas temporalmente todas las macros, haga lo siguiente: 1. En la ficha Programador, en el grupo Cdigo, haga clic en Seguridad de macros.

2. En Configuracin de macros, haga clic en Habilitar todas las macros (no recomendado; puede ejecutarse cdigo posiblemente peligroso) y, a continuacin, haga clic en Aceptar. NOTA Para ayudar a evitar que se ejecute cdigo potencialmente peligroso, recomendamos que vuelva a cualquiera de las configuraciones que deshabilitan todas las macros cuando termine de trabajar con las macros. Para obtener ms informacin acerca de cmo cambiar la configuracin, vea el tema sobre cmo cambiar la configuracin de seguridad de macros en Excel. 1. En la ficha Programador, en el grupo Cdigo, haga clic en Grabar macro. 2. En el cuadro Nombre de la macro, escriba un nombre para la macro. NOTA El primer carcter del nombre de la macro debe ser una letra. Los caracteres posteriores pueden ser letras, nmeros o caracteres de subrayado. No pueden usarse espacios en un nombre de macro; puede utilizarse un carcter de subrayado para separar palabras. Si utiliza un nombre de macro que tambin es una referencia de celda, puede aparecer un mensaje de error indicando que el nombre de la macro no es vlido. 3. Para asignar una combinacin de tecla de mtodo abreviado con CTRL para ejecutar la macro, en el cuadroTecla de mtodo abreviado, escriba cualquier letra en maysculas o minsculas que desee utilizar. NOTA La tecla de mtodo abreviado suplantar a cualquier tecla de mtodo abreviado predeterminada equivalente en Excel mientras est abierto el libro que contiene la macro. Para obtener una lista de teclas de mtodo abreviado que utilicen la tecla CTRL que ya estn asignadas en Excel, vea Teclas de funcin y de mtodo abreviado de Excel. 4. En la lista Guardar macro en, seleccione el libro donde desea almacenar la macro.

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 automticamente siempre que se ejecuta Excel. Si desea que se ejecute automticamente una macro del libro de macros personal en otro libro, tambin debe guardar ese libro en la carpeta XLStart, de forma que ambos libros se abran cuando se inicie Excel. 5. Escriba una descripcin de la macro en el cuadro Descripcin. 6. Haga clic en Aceptar para iniciar la grabacin. 7. Realice las acciones que desee grabar. 8. En la ficha Programador, . en el lado en el grupo Cdigo, haga clic en Detener

grabacin

SUGERENCIA Tambin puede hacer clic en Detener grabacin 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 botn de Microsoft Office en Opciones de Excel. y, a continuacin, haga clic

2. En la categora Ms frecuentes, bajo Opciones principales para trabajar con Excel, active la casilla de verificacin Mostrar ficha Programador en la cinta de opciones y, a continuacin, haga clic en Aceptar. 2. Para establecer el nivel de seguridad de manera que estn habilitadas temporalmente todas las macros, haga lo siguiente: 1. En la ficha Programador, en el grupo Cdigo, haga clic en Seguridad de macros.

En Configuracin de macros, haga clic en Habilitar todas las macros (no recomendado; puede ejecutarse cdigo posiblemente peligroso) y, a continuacin, haga clic en Aceptar.

NOTA Para ayudar a evitar que se ejecute cdigo 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 Cdigo 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 Mdulo. NOTA Se crean mdulos automticamente para todas las hojas del libro. En la ventana de cdigo del mdulo, escriba o copie el cdigo de macro que desea utilizar. Para ejecutar la macro desde la ventana del mdulo, 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 botn de Microsoft Office en Opciones de Excel. y, a continuacin, haga clic

2. En la categora Ms frecuentes, bajo Opciones principales para trabajar con Excel, active la casilla de verificacin Mostrar ficha Programador en la cinta de opciones y, a continuacin, haga clic en Aceptar. 2. Para establecer el nivel de seguridad de manera que estn habilitadas temporalmente todas las macros, haga lo siguiente: 1. En la ficha Programador, en el grupo Cdigo, haga clic en Seguridad de macros.

2. En Configuracin de macros, haga clic en Habilitar todas las macros (no recomendado; puede ejecutarse cdigo posiblemente peligroso) y, a continuacin, haga clic en Aceptar. NOTA Para ayudar a evitar que se ejecute cdigo 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 Cdigo, haga clic en 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 cdigo del Editor de Visual Basic, seleccione las lneas de la macro que desee copiar. SUGERENCIA Para copiar toda la macro, asegrese de incluir las lneas Sub y End Sub en la seleccin. 6. En el men Edicin, elija Copiar. SUGERENCIA Tambin puede hacer clic con el botn secundario y seleccionar Copiar, o puede presionar CTRL+C. 7. En el cuadro Procedimiento de la ventana de cdigo, haga clic en el mdulo en el que desea colocar el cdigo. 8. En el men Edicin, elija Pegar. SUGERENCIA Tambin puede hacer clic con el botn 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. Tambin puede abrirlo en el Editor de Visual Basic presionando ALT+F11. Asignar una macro a un objeto, grfico o control 1. En una hoja de clculo, haga clic con el botn secundario en el objeto, grfico o control al que desea asignar una macro existente y, a continuacin, 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 despus en Aceptar.

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

1. Haga clic en el botn de Microsoft Office en Opciones de Excel.

y, a continuacin, haga clic

2. En la categora Ms frecuentes, bajo Opciones principales para trabajar con Excel, active la casilla de verificacin Mostrar ficha Programador en la cinta de opciones y, a continuacin, haga clic en Aceptar. 1. En la ficha Programador, en el grupo Cdigo, 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 harn el trabajo por usted, gestione de manera eficaz y eficiente su negocio...... Macros en Excel - Olvdese 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 definicin 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 gestin 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 - Gestin de stocks y almacenes, generacin automtica de informes de situacin actual de stocks, clculo del stock mnimo de seguridad...

Macro Excel Produccin - Macro vba realizada en Excel que optimiza la secuencia de produccin de varios pedidos.... Macro Excel MRP - Clculo del MRP automatizado, facilita la gestin de stocks y produccin en un entorno de fabricacin... Macro Excel Gantt - Planificacin de proyectos mediante la herramienta Gantt, permite calcular el avance o retraso de cualquier proyecto, representacin grfica 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, tamao que ocupa, fecha de creacin... Macros en Excel 2007 - Existen diferencias de programacin de la versin 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 versin. Macro Excel descargas - Descarga todas las macros vba Excel disponibles para poder utilizarlas y observar su funcionamiento ..
Cada da las grandes y pequeas empresas estn descubriendo el poder de utilizar conjuntamente las macros con Excel, las compaas requieren de programas informticos realizados a "medida" de sus necesidades, para gestionar de manera automtica, rpida 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 das enteros en realizar informes de manera manual los cuales, con un simple clic a un botn en cuestin de segundos estara 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?.

Realizacin de programas a medida, cada empresa posee sus peculiaridades y caractersticas, en muchas ocasiones se adquieren paquetes de software estandarizado que no cumplen las expectativas iniciales y que acaban por no aportar una solucin real a las necesidades del negocio, mediante las macros en Excel cada programa desarrollado se adapta fcilmente a cada tipo de empresa, proporcionando un versatilidad y flexibilidad incomparable.

Rpido y fcil 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 estn desarrolladas bajo Excel, herramienta conocida por una gran publico y extendida en la mayora de las empresas.

Realizacin de tareas y clculos complejos, en muchas ocasiones dejamos de utilizar tcnicas conocidas para la resolucin de problemas, que nos podran aportar datos de vital importancia ,por la gran

complejidad de calculo que conllevan , mediante macros en Excel estas tareas y clculos 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 automticas, ocupando el tiempo ganado en otros asuntos.

Macros en Excel
El nombre macros en Excel proviene de la palabra macroinstruccin. Una macro o macroinstruccin es un conjunto de instrucciones que estn almacenadas y listas para ser ejecutadas en cualquier momento al pulsar un botn 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 programacin que sea comprendido por Excel mismo de manera que puedan ser ejecutadas de manera adecuada. El lenguaje de programacin utilizado para este fin lleva el nombre Visual Basic para Aplicaciones que tambin es conocido por su abreviatura VBA.

VBA y las macros en Excel


VBA es todo un ambiente de programacin que fue pensado para que los desarrolladores pudieran crear soluciones personalizadas en Excel. A travs del lenguaje de programacin VBA tendremos acceso a todas las propiedades y funcionalidades de Excel de manera que podamos hacer prcticamente cualquier cosa desde nuestras macros en Excel. En estricto sentido podramos crear cualquier solucin 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 travs 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 programacin VBA y su modelo de objetos. Dicho modelo de objetos refleja cada una de las partes de Excel en donde la aplicacin est representada por el objeto Applicatio

El objeto Application representa a Excel mismo podemos entender que los libros de Excel formarn 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 travs del objeto Range. De esta manera podemos resumir la relacin entre estos objetos de la siguiente manera: El objeto Application representa toda la aplicacin, la cual puede contener varios libros de Excel representados por el objeto Workbooks. Cada libro tiene hojas que estn representadas por el objeto Worksheets y sus celdas pueden ser accedidas a travs del objeto Range. Cada uno de los objetos en VBA tendr una serie de propiedades y mtodos que nos permitirn crear las instrucciones necesarias dentro de nuestras macros en Excel.

Cmo crear macros en Excel


Existen dos opciones para crear macros en Excel. La ms sencilla es utilizar la grabadora de Macros la cual nos permite grabar las acciones que tomemos en la aplicacin y las convierte en cdigo VBA por nosotros. La desventaja de este

mtodo es que no siempre el cdigo est optimizado y puede incluir lneas de cdigo innecesarias. La grabadora de macros es de gran ayuda cuando no ests familiarizado con VBA pero puede ser una buena fuente de aprendizaje cuando comienzas con la programacin de macros en Excel. El segundo mtodo para crear macros en Excel es utilizar el Editor de Visual Basic el cual nos permite introducir el cdigo de manera manual. La desventaja de este mtodo 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 travs del cdigo 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 da tras da. En lugar de realizar esas tareas repetitivas podrs ejecutarlas con un solo clic. Las macros en Excel tambin te ayudarn a crear funciones personalizadas que harn tareas que no son posibles realizar con las funciones predeterminadas de Excel y por lo tanto podrs realizar clculos y operaciones con tus datos que de otra manera seran casi imposibles. Adems, las macros en Excel te permitirn crear aplicaciones profesionales a la medida de tus necesidades y que significarn un gran ahorro de cientos de horas de trabajo manual en Excel. Una vez que te familiarices con las macros en Excel comenzars a vislumbrar toda una nueva gama de oportunidades para desarrollar y aplicar el potencial de Excel en tus actividades cotidianas. Toma la decisin ahora y aprende a crear macros en Excel.
Las herramientas del Excel (I) Introduccin Antes de ingresar al desarrollo del Lenguaje Visual Basic para Aplicaciones, haremos una breve exposicin 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 exposicin de la secuencia de pasos que se sigue para ejecutar o usar determinadas herramientas. Este repaso nos servir tambin para mostrar dicha secuencia usado en las versiones Excel 2003 y Excel 2007.

El objetivo de esta seccin es, entonces, refrescar al participante de dichos procedimientos a fin de que pueda usarlos sea durante la grabacin 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 grabacin 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 introduccin termina con una breve exposicin de la filosofa de objetos en la Programacin Orientada a Objetos (POO), tcnica empleada en la programacin 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.

En la ventana de dilogo Filtro avanzado seleccione dnde desea el listado, cul 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, slo que, para mayor facilidad se puede usar tambin nombre de rango. En la versin 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 envo sea Speddy Express. Solucin 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 nmero 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>.

Completamos la ventana de dilogo que aparece, segn 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 envo pero repetido, como se muestra en la siguiente imagen:

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

Programacin orientada a objetos (I) La programacin orientada a objetos (POO) es una forma de programacin en computadoras que tiene surge los aos 70 pero tiene un desarrollo sorprendente los aos 90 al utilizarlo en las microcomputadoras. Se diferencia de la programacin clsica 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, estn 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 (mtodos) 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 relacin con objetos: los creamos, los usamos, los modificamos cambiando sus atributos, caractersticas o propiedades, los relacionamos con otros objetos, etc. Por ejemplo tomemos el objeto Automvil. Un automvil es un objeto bastante pesado que tiene un conjunto de propiedades como su identificacin (placa), color, marca, modelo, accesorios, etc. Tiene tambin 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 accin 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 mtodos podemos darle uso al objeto automvil. En la POO el objeto es el automvil; las propiedades de este objeto son sus caractersticas y los mtodos lo constituyen las funcionalidades o procedimientos con los cuales hacemos uso del objeto y modificamos su estado o contenido.

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 tamao, 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 Grfico, Libro, etc. Propiedades Son variables que describen algunos aspectos o caractersticas del objeto en el que estn 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 Automvil; 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 omisin 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 explicacin 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 mdulos (procedimientos) y formularios. Aqu podemos modificar las macros y potenciarlas dndole la interactividad que no posee. Para usar el editor, haga uso de la siguiente secuencia: <Herramientas> - <Macro> - <Editor de Visual Basic> o tambin usando <ALT> + <F11>.

Si se desea editar o abrir una macro en particular, seleccione: <Herramientas> - <Macro> - <Macros> Seleccione la macro - <Modificar>. Puede usar tambin, <ALT> +<F8>, luego seleccionar la macro y hacer clic en <Modificar>. El Editor y la programacin orientada a objetos Todo lo que se puede hacer en el editor, est relacionada con programas. La filosofa de programacin usada en este editor, es el de la Programacin Orientada a Objetos (POO), la que nos permitir hacer modificaciones sobre la programacin 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 programacin 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 caractersticas, como sus relaciones entre otros objetos, estn agrupados o "encapsulados" en los objetos. Los objetos en Excel estn constituidos por Celdas, Rangos, Hojas, Libros, Grficos, Tablas, archivos externos, etc. Los objetos, refirindonos a Excel, poseen cuatro caractersticas empleados en la codificacin de un programa: Propiedades de los objetos, Mtodos para manipularlos, Eventos que causan la manipulacin de los mismos y, Colecciones o Clases a las que pertenecen los objetos. Propiedades Las propiedades son las caractersticas, atributos, formas o aspectos del objeto, a las que se hace referencia mediante el uso de variables. Una propiedad de objeto comn 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, grfico 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 Mtodos Un mtodo es una accin, un procedimiento (un hilo), que tiene efectos sobre un objeto. Ejemplo: Aqu se hace referencia al nombre del objeto Range de la celda A5.

Range("A5").Select Aqu se ejecuta el mtodo Select, que permite activar la celda A5 y ponerla en disponible para cualquier otra operacin. Range("B2:G4").Formato En este caso, se ejecuta el mtodo Formato sobre el rango B2:G4. Se supone que el mtodo Formato ya est definido previamente. Pg. 3.1 VBA. Ms estructuras (I) Sentencias repetitivas SENTENCIA FOR NEXT Permite ejecutar un determinado nmero 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 iteracin que se realiza, se incrementa en una determinada cantidad (Incr), hasta llegar al extremo (ValFinal), despus 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 nmeros 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

Suma = Suma + I^2 Next MsgBox("La suma de los primeros 20 nmeros es: " & Suma) End Sub Programacin 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 coleccin. La tabla presentada en la siguiente pgina, muestra la estructura de los objetos y colecciones en Excel. En esta tabla se observa que las colecciones estn con fondo gris con poca tonalidad y los objetos en un color gris con ms tonalidad. Se puede apreciar que dentro del objeto CellFormat se tiene la coleccin o conjunto Borders y dentro de ste, el objeto Borde. En el caso de la coleccin 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. Creacin de formularios de usuario (I) Ejemplos de interaccin con mdulos y macros.

Un formulario es una ventana o cuadro de dilogo que contiene un conjunto de controles insertados por nosotros desde la barra de herramientas o cuadro de control al cual se le denomina tambin conjunto de Controles Activex.

En el VBA a un formulario se le denomina USERFORM quizs recogiendo el nombre que tradicionalmente lo ha usado el lenguaje de programacin 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

En la figura anterior se muestra el formulario llamado UserForm1. Si se desea cambiar este nombre se debe hacer clic en la opcin 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 continuacin vamos a desarrollar dos aplicaciones del uso macros y formularios en la solucin de ciertos problemas Aplicacin 1 : Consulta y extraccin 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 informacin de uno o ms clientes hacia una nueva hoja. La macro debe solicitar el nombre de la hoja hacia donde se desea extraer y tambin el DNI para realizar la bsqueda. Los datos se encuentran en el archivo QbdClientes.xlsm. Procedimiento:

P1. Insertamos un mdulo en el editor. Digitamos: Sub Consulta y presionamos <Enter> para crear el mdulo: 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 nmero de DNI que se consultar. P3. El siguiente cdigo permite saber el nmero 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 cdigo permite realizar la bsqueda en toda la tabla por el DNI solicitado, usando a Ix como puntero de fila. Si lo encuentra Ix contendr el nmero de fila desde donde se extraern 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

MsgBox ("No existe este DNI(RUC). Verifique") If Iz > 2 Then Iz = Iz - 1 End If P6. Finalmente el siguiente cdigo permite retornar a la hoja de datos y saber si se desea hacer otra bsqueda. 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 botn 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.

De la observacin de esta tabla, podemos decir que el objeto Application proporciona un contenedor de toda la aplicacin 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 rpido: Crear una macro

Si hay tareas de Microsoft Excel que realiza reiteradamente, puede grabar una macro para automatizarlas. Una macro es una accin 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. Despus 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 rpidamente estos cambios de formato en las celdas seleccionadas. Cmo? Antes de grabar una macro Compruebe que se muestra la ficha Programador en la cinta de opciones. Dado que la fichaProgramador no se muestra de manera predeterminada, haga lo siguiente: 1. Haga clic en la pestaa Archivo, elija Opciones y, a continuacin, haga clic en la categoraPersonalizar cinta de opciones. 2. En Personalizar cinta de opciones, en la lista Fichas principales, haga clic en Programador y, a continuacin, haga clic en Aceptar. Grabe una macro. 1. En el grupo Cdigo en la pestaa Programador, haga clic en Grabar macro y luego haga clic enAceptar para comenzar a grabar.

2. Realice algunas acciones en la hoja de clculo como escribir algn texto, seleccionar algunas columnas o filas o rellenar con algunos datos. 3. En el grupo Cdigo en la pestaa Programador, haga clic en Detener grabacin.

Examine la macro y prubela. Al modificar la macro que ha grabado, puede aprender un poco acerca del lenguaje de programacin Visual Basic.

Para editar una macro, en el grupo Cdigo en la pestaa Programador, haga clic en Macros, seleccione el nombre de la macro que ha grabado y haga clic en Editar. Esta accin har que se inicie el Editor de Visual Basic. Observe el cdigo y vea de qu manera las acciones que ha grabado aparecen como cdigo. Es probable que entienda bien algo del cdigo y que otra parte le resulte un poco misteriosa. Experimente con el cdigo, 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 artculos de procedimientos, vdeos y cursos de aprendizaje. Si en la parte inferior del visor de Ayuda se muestra Sin conexin y est conectado a Internet, haga clic en Sin conexin y, a continuacin, elija Mostrar contenido de Office.com. O bien, visite la pgina 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 clculo electrnica Excel, las cuales automatizan las operaciones que realiza la aplicacin ofimtica Excel con el objetivo de eliminar tareas repetitivas o realizar clculos complejos en un corto espacio de tiempo y con una nula probabilidad de error.

Vba es el lenguaje de programacin que se utiliza para la creacin 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 informticos 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 dlar, para posteriormente realizar una serie de clculos 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 clculos oportunos. Mediante las macros Excel al apretar un botn automticamente la aplicacin Excel realizar cada una de las operaciones descritas anteriormente por nosotros, dando el resultado fiable en apenas 1 segundo.

En el anterior ejemplo si realizsemos este trabajo de manera manual podemos decir que invertiramos 10 minutos, que al cabo del ao supondra 3300 minutos, equivalente a casi 7 das laborables dedicados a realizar esta operacin, Qu pasara si se tuviese que realizar este tipo de trabajo diariamente pero con una gama de 50 monedas diferentes?, estara dispuesto a dedicarse ntegramente el da 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 programacin 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 ms fcil, dado a que solo requiere apretar al botn 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 botn ejecutar macro y seleccionarla.

Esta primera opcin es la ms fcil de usar pero es la que presenta ms limitaciones, dado a que solo ejecutar una vez la tarea grabada as como no utilizar toda la potencia del lenguaje VBA.

La segunda opcin requiere del conocimiento y prctica del lenguaje de programacin VBA, pero es sin duda la opcin ms potente en cuestin de desarrollo de aplicaciones, cualquier cosa que se nos ocurra puede realizarse mediante el uso de VBA, desde una aplicacin compleja hasta la automatizacin de tareas repetitivas de nuestra hoja de clculo Excel.

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 ms 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 continuacin te presento varios ejemplos de macros que puedes usar en tu da a da. Para poder realizarlos con soltura te recomiendo leer antes estos dos artculos: 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 Formacin New York, con el formato siguiente: fondo de celda verde y color de la fuente beis, tamao 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 continuacin detener la macro. Cada vez que ejecutes la macro se insertara el texto en la hoja de clculo.

Macro para insertar una imagen Anlogamente a lo indicado en el apartado anterior, previamente recorre las imgenes que existen en Imgenes prediseadas o escoge una imagen de tu equipo.

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, haras 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, botn derecho, Formato de celdas, Moneda, quitas los decimales y pones 0, aceptas para finalizar vamos a Herramientas, Macro y Detener Grabacin. 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 seleccionars las celdas, seguirs 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 realizars 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 relacin con esta macro tambin 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 vers que te resulta de gran utilidad.

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

Realizacin de programas a medida, cada empresa posee sus peculiaridades y caractersticas, en muchas ocasiones se adquieren paquetes de software estandarizado que no cumplen las expectativas iniciales y que acaban por no aportar una solucin real a las necesidades del negocio, mediante las macros en Excel cada programa desarrollado se adapta fcilmente a cada tipo de empresa, proporcionando un versatilidad y flexibilidad incomparable.

Rpido y fcil 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 estn desarrolladas bajo Excel, herramienta conocida por una gran publico y extendida en la mayora de las empresas.

Realizacin de tareas y clculos complejos, en muchas ocasiones dejamos de utilizar tcnicas conocidas para la resolucin de problemas, que nos podran aportar datos de vital importancia ,por la gran complejidad de calculo que conllevan , mediante macros en Excel estas tareas y clculos 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 automticas, ocupando el tiempo ganado en otros asuntos.

MACROS EN EXCEL
Hola amigos, estamos de nuevo aqu para mostrar la segunda parte de Gua de Macros en Excel que te ser de gran utilidad, ya que se manejaran Formulas en los Formularios, Bsquedas 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 mayora de las hojas de clculos 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 opcin Explorador de Proyectos De clic en el Men ver y elija la opcin Ventana Propiedades 3. Del Men Insertar elija la Opcin 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 Un Botn de Comando

Los datos que se preguntaran sern Nombre y Edad, los Das Vividos se generaran automticamente cuando insertes la edad. A continuacin se muestra como se deben de programar estos Controles:

Programacin 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

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 multiplicacin del Textbox2 por 365 Rem El Comando Val permite convertir un valor de Texto a un Valor Numrico Rem Esto se debe a que los Textbox no son Numricos 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 das vividos aparecer en el Textbox3 y se escribir tambin en Excel. El comando Val es un comando de Visual Basic que te permite convertir un valor de texto a un valor numrico. Recuerden el Comando Rem se utiliza para poner Comentarios nicamente y no afecta a la programacin.

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:

5 Etiquetas 5 Textbox 1 Botn de Comando

Los datos que se preguntaran sern Nombre, Das Trabajados, Pago por Da, Bonos y Sueldo Neto.

Genera el siguiente cdigo:

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

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 automticamente se generara el Sueldo Neto.

Este ejemplo viene en el Archivo Macros de Sueldo Neto

BUSANDO INFORMACIN CON UN TEXTBOX

Se puede buscar informacin con un Textbox programndolo de la siguiente forma:

Dibuje una Etiqueta, un Textbox y un Botn de Comando y agregue el siguiente Cdigo:

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

False).Activate End Sub

Si te fijas inclu en la programacin del Botn 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 animacin, Moverse, Hacer Preguntas, Etc.

A continuacin se muestran algunos cdigos del Asistente:

Este cdigo permite hacer visible el ayudante o sea mostrarlo. Si deseas ocultarlo solo cambia la opcin True por False.

Assistant.Visible = True

Este cdigo permite Mover el Asistente a un nuevo lugar, solo cambia los valores numricos y cambiara de posicin.

Assistant.Move 430, 230

Este cdigo permite activar un efecto de animacin, cuando escribas el signo Igual despus de Assistant.Animation = aparecer un men con diferentes efectos de animacin

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

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

End If

Este ejemplo viene en el archivo Macro2

Si deseas que siga saliendo esta gua solo escrbeme pidiendo que sigan saliendo ejemplos.

MACROS EN EXCEL
Hola amigos, estamos de nuevo aqu para mostrar la tercera parte de Gua 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 mtodos de trabajar mas fcil. De antemano muchas gracias por apoyar este curso de Excel creo que les ha servido, no haba tenido mucho tiempo para escribir esta tercera parte pero creo que ya esta. !!!Mucho Animo!!!.

ELABORANDO UNA CONSULTA

Todo Registro de informacin debe de tener su propia Consulta, Baja y Modificacin, es por eso que en este nuevo capitulo nos concentramos en ello, primeramente en poder consultar la informacin 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 opcin Explorador de Proyectos

De clic en el Men ver y elija la opcin Ventana Propiedades 6. Del Men Insertar elija la Opcin 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 sern Nombre, Direccin y Telfono. Los tres botones nos servirn para lo siguiente: Consultar consultara la informacin que hayamos insertado desde el botn insertar. Baja podr eliminar algn dato que se consulto y no lo queremos. Insertar tendr la funcin de insertar los registros que vayamos dando de alta, es como los ejercicios anteriores. A continuacin se muestra como se deben de programar estos Controles:

Programacin de los Controles:

BOTON DE CONSULTA

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 lnea que contiene el ActiveCell.Offset(0, 1).Select permite moverse una columna a la derecha, por lo tanto despus de la bsqueda de las primeras lneas con Cell.Find si encuentra el Nombre de la persona se mueve a la siguiente columna y la lnea 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 lnea 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 podra generar un error porque fallara 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 solucionara con una trampa de error.

End Sub

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

CUADROS DE TEXTO

Private Sub TextBox1_Change() Range("A9").FormulaR1C1 = TextBox1

Rem esta primer lnea reemplaza a estas dos que te parece todava 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 Botn Consulta tienes un error cuando no encuentra a la persona, entonces tendrs que agregar esto a tu cdigo del Botn Consultar

BOTON DE CONSULTA

Private Sub CommandButton1_Click()

On Error Goto noencontro

Rem esta lnea 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 cdigo. 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 programacin.

Cells.Find(What:=TextBox1, After:=ActiveCell, LookIn:=xlFormulas, LookAt _ :=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:= _ False).Activate

ActiveCell.Offset(0, 1).Select TextBox2 = ActiveCell ActiveCell.Offset(0, 1).Select TextBox3 = ActiveCell

Rem Tambin se puede utilizar este cdigo para leer la informacin de las celdas lo que esta en azul. La diferencia es que se asignan los valores a variables y despus 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

Que te parece es increble 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 cdigo en un Modulo, por lo tanto debers seguir los siguientes pasos:

De clic en el Men Insertar y elija la opcin 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 lneas que estn en medio que son:

Load UserForm1

UserForm1.Show

La primer lnea significa que cargue a la memoria el formulario que se llama UserForm1, la segunda lnea significa que lo muestre, esto quiere decir que en el modulo estamos escribiendo el cdigo 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 opcin Cerrar y volver a Microsoft Excel

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

De clic en el Men Insertar Elija la opcin Imagen, seguido por Imagen Prediseada inserte cualquier imagen y dele el tamao que usted desea. De clic derecho sobre la Imagen Elija la opcin 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.

Introduccin a las macros Las macros de Excel nos permiten automatizar tareas que realizamos cotidianamente de manera que podamos ser ms eficientes en nuestro trabajo. Una macro no es ms que una serie de comandos o instrucciones que permanecen almacenados dentro de Excel y que podemos ejecutar cuando sea necesario y cuantas veces lo deseemos. Aunque las macros son un tema avanzado de Excel puedes consultar los siguientes artculos para comenzar a familiarizarte con este tema. Qu es una macro de Excel? Si utilizas Excel frecuentemente es posible que en alguna ocasin te hayas encontrado ejecutando una misma serie de acciones una y otra vez. Esas acciones que haces repetidas veces se podran automatizar con una macro. Una macro es un conjunto de comandos que se almacena en un lugar especial de Excel de manera que estn siempre disponibles cuando los necesites ejecutar. Por ejemplo, si todas las maanas creas un reporte de ventas y en ese reporte siempre das el mismo formato a los textos, se podra crear una macro para que lo haga automticamente por ti. Las macros se utilizan principalmente para eliminar la necesidad de repetir los pasos de aquellas tareas que realizas una y otra vez. Un lenguaje de programacin Las macros se escriben en un lenguaje de computadora especial que es conocido como Visual Basic for Applications (VBA). Este lenguaje permite acceder a prcticamente todas las funcionalidades de Excel y con ello tambin ampliar la funcionalidad del programa.

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

Aunque si aceptas el desafo y te introduces en el mundo de la programacin VBA pronto te convertirs en un Ninja de Excel. Vers que crear una macro en Excel no es tan complicado y ser una manera fcil y rpida de eliminar esas tareas repetitivas que todos los das te quitan minutos preciados de tu tiempo. Para qu sirve una macro en Excel Para qu sirve una macro en Excel? Una macro nos ayuda a automatizar aquellas tareas que hacemos repetidamente. Una macro es una serie de instrucciones que son guardadas dentro de un archivo de Excel para poder ser ejecutadas cuando lo necesitemos.

Automatizacin de tareas Seguramente ests familiarizado con procesos de automatizacin en el mbito industrial. Un ejemplo muy claro son las plantas ensambladoras de automviles donde existen robots que han sustituido tareas que antes eran hechas por humanos. La automatizacin trajo beneficios como mayor eficiencia y productividad de las plantas y un mejor aprovechamiento del tiempo del personal al reducir la cantidad de tareas repetitivas que realizaban. De la misma manera las macros nos ayudan a eliminar esas tareas repetitivas de nuestro trabajo cotidiano al permitirnos utilizar mejor nuestro tiempo en el anlisis de los datos y en la toma de decisiones. Cmo se ve una macro en Excel? Las macros son escritas en un lenguaje de computadora conocido como VBA por sus siglas en ingls (Visual Basic for Applications). Como cualquier otro lenguaje de computadora debemos aprender a utilizar los comandos que nos ayudarn a indicar a Excel lo que deseamos hacer con nuestros datos.

Aprender el lenguaje VBA no es nada complicado y se puede lograr fcilmente. Lo que toma un poco ms de tiempo es pulir nuestras habilidades de programacin. Lo que quiero decir con esto es que para ser un buen programador de macros debes dedicar tiempo en resolver mltiples problemas en donde puedas llevar al lmite el lenguaje VBA. Creacin de una macro Las macros se crean con el Editor de Visual Basic el cual nos permitir introducir el cdigo con las instrucciones que sern ejecutadas por la macro. Existe otro mtodo que es utilizar la Grabadora de macros la cual ir grabando todas las acciones que realicemos en Excel hasta que detengamos la grabacin. Una vez grabada la macro podremos reproducir de nuevo las acciones con tan solo un clic. Ahora que ya sabes para qu sire una macro en Excel puedes dar los primeros pasos en este camino utilizando el tutorial Introduccin a las macros.

Mostrar la ficha Programador Si 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 2010 Haz clic en la ficha Archivo y elige la seccin Opciones. Se mostrar el cuadro de dilogoOpciones de Excel donde debers seleccionar la opcin Personalizar cinta de opciones.

En el panel de la derecha debers asegurarte de seleccionar la ficha Programador.

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

Grupos de la ficha Programador El grupo Cdigo tienes los comandos necesarios para iniciar el Editor de Visual Basic donde se puede escribir directamente cdigo VBA. Tambin nos permitir ver la lista de macros disponibles para poder ejecutarlas o eliminarlas. Y no podramos olvidar mencionar que en este grupo se encuentra el comando Grabar macro el cual nos permite crear una macro sin necesidad de saber sobre programacin en VBA.

El grupo Complementos nos permite administrar y habilitar complementos como el Solver. El grupo Controles incluye funcionalidad para agregar controles especiales a las hojas de Excel como los controles de formulario que son botones, casillas de verificacin, botones de opcin entre otros ms que sern de gran utilidad para ampliar la funcionalidad de Excel. El grupo XML permite importar datos de un archivo XML as como opciones tiles para codificar archivos XML. Finalmente el grupo Modificar solamente contiene el comando Panel de documentos. Aunque pueden parecer intimidantes los comandos de la ficha Programador con el paso del tiempo te irs familiarizando poco a poco con cada uno de ellos. La grabadora de macros Puedes crear una macro utilizando el lenguaje de programacin VBA, pero el mtodo ms sencillo es utilizar la grabadora de macros que guardar todos los pasos realizados para ejecutarlos posteriormente. La grabadora de macros en Excel 2010 La grabadora de macros almacena cada accin que se realiza en Excel, por eso es conveniente planear con antelacin los pasos a seguir de manera que no se realicen acciones innecesarias mientras se realiza la grabacin. Para utilizar la grabadora de macros debes ir a la ficha Programador y seleccionar el comando Grabar macro.

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

En el cuadro de texto Nombre de la macro debers colocar el nombre que identificar de manera nica a la macro que estamos por crear. De manera opcional puedes asignar un mtodo abreviado de teclado el cual permitir ejecutar la macro con la combinacin de teclas especificadas.

La lista de opciones Guardar macro en permite seleccionar la ubicacin donde se almacenar la macro. Este libro. Guarda la macro en el libro actual. Libro nuevo. La macro se guarda en un libro nuevo y que pueden ser ejecutadas en cualquier libro creado durante la sesin actual de Excel. Libro de macros personal. Esta opcin permite utilizar la macro en cualquier momento sin importar el libro de Excel que se est utilizando. Tambin puedes colocar una Descripcin para la macro que vas a crear. Finalmente debes pulsar el botn Aceptar para iniciar con la grabacin de la macro. Al terminar de ejecutar las acciones planeadas debers pulsar el botn Detener grabacin para completar la macro.

El cdigo de la Grabadora de macros Una manera muy interesante de descubrir y aprender ms sobre cdigo VBA es analizar el cdigo generado por la Grabadora de macros. Para este ejemplo grabaremos una macro muy sencilla que solamente cambie el color de la fuente de la celda actual. Para comenzar debemos ir a la ficha Programador y pulsar el comando Grabar macro lo cual mostrar el cuadro de dilogo donde asignar un nombre a la macro que estoy por crear.

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

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

Ahora que ya hemos generado la macro, pulsa el botn Macros que se encuentra en el grupo Cdigo de la ficha Programador. Se mostrar el cuadro de dilogo Macro que enlista todas las macros que hemos creado.

Selecciona la macro recin creada y pulsa el botn Modificar. Esto abrir el Editor de Visual Basic y mostrar el cdigo generado para la macro.

Observando este cdigo podemos aprender varias cosas. Para empezar observamos que el objeto Selection tiene una propiedad llamada Font que es la que hace referencia a la fuente de la celda o rango seleccionado. A su vez, la propiedad Font tiene otra propiedad llamada Color que es precisamente la que define el color rojo de nuestra celda. Aunque este ha sido un ejercicio muy sencillo, cuando tengas curiosidad o duda sobre qu objetos utilizar al programar en VBA considera utilizar la Grabadora de macros para darte una idea del camino a seguir. Establecer seguridad de macros La seguridad es un tema importante al hablar de macros en Excel. Si abres algn archivo que contenga una macro maliciosa puedes causar algn tipo de dao al equipo. De manera predeterminada Excel no permite ejecutar macros automticamente. Sin embargo, si ests creando tus propias macros y deseas remover esta proteccin porque sabes que no existe cdigo malicioso, entonces puedes modificar la configuracin para habilitar todas las macros. Para hacerlo debes seguir los siguientes pasos. Haz clic en la ficha Archivo y posteriormente en Opciones. Dentro del cuadro de dilogo mostrado selecciona la opcin Centro de confianza y posteriormente pulsa el botn Configuracin del centro de confianza. Se mostrar el cuadro de dilogo Centro de confianza.

Dentro de la seccin Configuracin de macros selecciona alguna de las opciones disponibles. Deshabilitar todas las macros sin notificacin. Deshabilita las macros y permite ejecutar solamente aquellas que estn almacenadas en un lugar confiable. Los lugares confiables se configuran en la seccin Ubicaciones de confianza del mismo cuadro de dilogo. Deshabilitar todas las macros con notificacin. Muestra una alerta de seguridad advirtiendo sobre la intencin de ejecutar una macro de manera que se pueda decidir si se desea ejecutar. Esta es la opcin predeterminada de Excel. Deshabilitar todas las macros excepto las firmadas digitalmente. Solamente se podrn ejecutar las macros que estn firmadas digitalmente. Habilitar todas las macros. Permite ejecutar todas las macros sin enviar alguna notificacin al usuario. Esta opcin es til si se ejecutan mltiples macros totalmente confiables. Esta opcin es la que corre los mayores riesgos al ejecutar una macro de una fuente desconocida. Una vez seleccionada la opcin deseada se debe pulsar el botn Aceptar para hacer los cambios permanentes.

Programando en VBA Excel 2010 es una de las herramientas de software ms poderosas para el manejo, anlisis y presentacin de datos. Aun y con todas sus bondades, en ocasiones Excel no llega a suplir algunas necesidades especficas de los usuarios.

Afortunadamente Excel cuenta con VBA que es un lenguaje de programacin que permite extender las habilidades del programa para cubrir nuestros requerimientos. Utilizando VBA se pueden desarrollar nuevos algoritmos para analizar la informacin o para integrar a Excel con alguna otra aplicacin como Microsoft Access. Principios fundamentales La programacin en VBA puede ser un tanto misteriosa para la mayora de los usuarios de Excel, sin embargo una vez que se comprenden los principios bsicos de programacin en VBA se comenzarn a crear soluciones robustas y efectivas. El primer concepto importante a entender es que cada elemento de Excel es representado en VBA como un objeto. Por ejemplo, existe el objeto Workbook que representa a un libro de Excel. Tambin existe el objeto Sheet que representa una hoja y el objeto Chart para un grfico. El segundo concepto importante a entender es que cada uno de estos objetos tiene propiedades y mtodos. Para explicar mejor este concepto utilizar una analoga. Propiedades y Mtodos Supongamos que tenemos el objeto auto. As es, un auto como el que manejamos todos los das para ir al trabajo. Este auto tiene varias propiedades como son: marca, modelo, color, tipo de transmisin las cuales ayudan a describir mejor al auto. Tambin hay propiedades que indican su estado actual como por ejemplo gasolina disponible, temperatura del aceite, velocidad, kilmetros recorridos entre otras propiedades ms. Podemos decir que las propiedades de un objeto nos ayudan a describirlo mejor en todo momento. Por otro lado tenemos los mtodos de un objeto que en resumen son las acciones que podemos realizar con dicho objeto. Por ejemplo, con nuestro auto podemos hacer lo siguiente: encenderlo, avanzar, vuelta a la izquierda, vuelta a la derecha, reversa, detener, apagar, etc. Todas las acciones que se pueden llevar a cabo con un objeto son conocidas como mtodos. Volviendo al terreno de Excel, el objeto Workbook tiene propiedades como ActiveSheet (Hoja activa), Name (Nombre), ReadOnly (Solo Lectura), Saved (Guardado) y algunos de sus mtodos son Save (Guardar), Close (Cerrar), PrintOut (Imprimir), Protect (Proteger), Unprotect(Desproteger). Ser difcil mencionar todos los objetos de Excel y sus propiedades en esta publicacin, pero lo importante a recordar en este ocasin es que cada elemento de Excel est siempre representado por un objeto en VBA y cada objeto tiene a su vez propiedades y mtodos que nos permitirn trabajar con nuestros datos.

El Editor de Visual Basic

El Editor de Visual Basic, VBE por sus siglas en ingls, es un programa independiente a Excel pero fuertemente relacionado a l porque es el programa que nos permite escribir cdigo VBA que estar asociado a las macros. Existen al menos dos alternativas para abrir este editor, la primera de ellas es a travs del botn Visual Basic de la ficha Programador.

El segundo mtodo para abrir este programa es, en mi opinin, el ms sencillo y rpido y que es a travs del atajo de teclado: ALT + F11. El Editor de Visual Basic contiene varias ventanas y barras de herramientas.

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

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

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

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

Se crear la seccin Mdulos y dentro de la misma se mostrar el mdulo recin creado. Puedes saber que el mdulo est abierto porque su nombre se muestra en el ttulo entre corchetes.

Si el mdulo no est abierto solamente debers hacer doble clic sobre l. Posicinate en el rea de cdigo e introduce las siguientes instrucciones:

Antes de avanzar explicar con detalle las instrucciones mostradas. Subrutinas en VBA El primer concepto que explicare es la instruccin Sub que es la abreviacin de la palabra subrutina. Una subrutina no es ms que un conjunto de instrucciones que se ejecutarn una por una hasta llegar al final de la subrutina que est especificado por la instruccin End Sub. Las subrutinas nos ayudan a agrupar varias instrucciones de manera que podamos organizar adecuadamente nuestro cdigo. Una subrutina siempre tiene un nombre el cual debe ser especificado justo despus de la instruccin Sub y seguido por parntesis.

La funcin MsgBox en VBA La subrutina que acabamos de crear para este ejemplo solamente tiene una instruccin dentro la cual hace uso de la funcin MsgBox. Esta funcin nos ayuda a mostrar una ventana de mensaje de manera que podamos estar comunicados con el usuario sobre cualquier error o advertencia que necesitamos darle a conocer. Para este ejemplo he utilizado la forma ms sencilla de la funcinMsgBox la cual solamente tiene un solo argumento que es precisamente el mensaje que necesitamos mostrar en pantalla al usuario. Ejecutar macro Para probar nuestro cdigo bastar con pulsar el botn Ejecutar que se encuentra dentro de la barra de herramientas.

En cuanto se pulsa el botn se ejecutar el cdigo recin ingresado y obtendremos el resultado en pantalla.

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

Utilizar comentarios en VBA

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

He visto en ms de una ocasin que muchas personas no tienen esta buena prctica al programar en VBA y el problema se presentar cuando pase el tiempo y tengan que modificar el cdigo pero ya no recuerden la lgica implementada ni lo que significa cada una de las variables. Aunque pareciera una actividad aburrida, creme que te ahorrar mucho tiempo cuando te veas en la necesidad de modificar tu cdigo. Adems, si por alguna razn necesitas que otra persona haga modificaciones al cdigo le sern de gran ayuda los comentarios que hayas agregado. Comentar varas lneas de cdigo Como ya lo mencion, un comentario en VBA ser omitido al momento de la ejecucin. En ocasiones cuando est haciendo pruebas con tu cdigo VBA deseas evitar que ciertas lneas de cdigo se ejecuten y una manera de hacer es comentando dichas lneas.

Para comentar varias lneas de cdigo en una macro, sin la necesidad de estar colocando la comilla sencilla al principio de cada una de las lneas, puedes seguir los siguientes pasos. En primer lugar selecciona todas las lneas de cdigo que deseas convertir en comentarios y posteriormente oprime el botn Bloque con comentarios de manera que Excel coloque todas las comillas sencillas () a cada lnea de cdigo seleccionada.

De la misma manera puedes remover las comillas sencillas si pulsas el botn Bloque sin comentarios que se encuentra justo al lado derecho del botn Bloque con comentarios.

Si no puedes ver los botones anteriores en el Editor de Visual Basic es porque seguramente tienes oculta la barra de herramientas de Edicin. Para mostrarla, haz clic derecho sobre un rea libre del men superior y seleccionar la opcin Edicin.

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

Cada uno de los objetos de Excel tiene propiedades y mtodos. Las propiedades son las caractersticas del objeto y los mtodos son las acciones que el objeto puede hacer. Propiedades de un objeto Si una persona fuera un objeto de Excel sus propiedades seran el color de sus ojos, el color de su cabello, su estatura, su peso. De la misma manera, un objeto de Excel tiene propiedades por ejemplos, una celda (Range) tiene las propiedades valor (Value) y direccin (Address) entre muchas otras. Estas propiedades describen mejor al objeto. Mtodos de un objeto Siguiendo con el ejemplo de una persona, si fuera un objeto de Excel sus mtodos seran correr, caminar, hablar, dormir. Los mtodos son las actividades o acciones que el objeto puede realizar. Los objetos de Excel se comportan de la misma manera que el ejemplo de una persona. Una celda (Range) tiene los mtodos activar (Activate), calcular (Calculate), borrar (Clear) entre muchos ms. Utilizando las propiedades y los mtodos Para acceder a las propiedades y mtodos de un objeto lo hacemos a travs de una nomenclatura especial. Justo despus del nombre del objeto colocamos un punto seguido del nombre de la propiedad o del mtodo. Observa este ejemplo donde hacemos uso de la propiedadValue para la celda A1: Range("A1").Value = "Hola"

De esta manera asignamos una cadena de texto al valor de la celda A1. Ahora bien, si queremos borrar ese valor que acabamos de colocar en la celda podemos utilizar el mtodo Clear de la siguiente manera: Range("A1").Clear Ver todas las propiedades y mtodos Los objetos tienen muchas propiedades y mtodos y a veces es difcil pensar que los llegaremos a memorizar todos por completo. Sin embargo, el Editor de Visual Basic es de gran ayuda porque justamente al momento de escribir nuestro cdigo nos proporciona la lista completa de propiedades y mtodos para un objeto.

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

Navegando el modelo de objetos Excel tiene un modelo de objetos el cual es una jerarqua de todos los objetos que podemos utilizar desde el lenguaje VBA. En la parte superior de la jerarqua se encuentra el objeto Application y todos los dems objetos estarn por debajo de l. Acceder a objetos inferiores Para tener acceso a los objetos que estn por debajo del objeto Application podemos utilizar el punto. El punto nos ayuda a navegar por la jerarqua hacia un nivel inferior. Observa lo que se muestra en el Editor de Visual Basic al colocar un punto despus del objeto Application:

Por ejemplo, si deseamos poner en negritas el texto de la celda A1 debemos llegar al objeto Range el cual nos dar acceso a modificar la propiedad Bold de la siguiente manera:

Aunque esta lnea de cdigo puede tomarnos un poco de tiempo en escribirla, pero describe por completo la jerarqua de los objetos. Objetos predeterminados Existe una funcionalidad intrnseca de VBA conocida como objetos predeterminados la cual nos permite omitir la escritura de algunos objetos y aun as tener un cdigo funcional. Por ejemplo, en la sentencia mostrada previamente podemos omitir el objeto Application y tener nuestro cdigo funcionando correctamente:

Inclusive podemos omitir los objetos ActiveWorkbook y ActiveSheet sabiendo que el cdigo se ejecutar siempre sobre el libro activo y la hoja que est activa al momento de la ejecucin:

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

Podemos ahorrar algunas palabras de este cdigo haciendo uso del bloque With de la siguiente manera.

En ambos casos el resultado ser el mismo y en el ltimo ahorraremos algunos caracteres dejando nuestro cdigo VBA claro y legible.

Las colecciones de objetos Workbooks y Worksheets Un objeto en VBA puede contener otro objeto y ese objeto a su vez puede contener otro objeto y as sucesivamente. La raz de todos los objetos en VBA se encuentra en el objeto Application el cual a su vez contiene las colecciones de objetos Workbooks y Worksheets. El objeto Workbook y el objeto Worksheet El objeto Workbook representa un libro de Excel y el objeto Worksheet representa una hoja de un libro de Excel. Como sabemos, un libro de Excel puede tener ms de una hoja lo cual significa que un objeto Workbook puede contener ms de un objeto Worksheet. Ya que no hay lmite en el nmero de hojas que puede tener un libro, se volvera complicado organizar esta relacin entre los objetos Workbook y Worksheet y por esta razn se crearon las colecciones de objetos. De esta manera un objeto Workbook tiene asociada una coleccin de objetos Worksheets la cual contiene los objetos Worksheet que representan las hojas de ese libro de Excel. De la misma manera, el objeto Application no tiene asignados directamente todos los libros de Excel sino que tiene una coleccin de objetos Workbooks la cual incluir todos los objetos Workbook de los libros de Excel que abramos en nuestro cdigo VBA. Abrir un libro de Excel Para abrir un libro de Excel en VBA podemos utilizar el mtodo Open del objeto Workbooks de la siguiente manera:

Application.Workbooks.Open Filename:="C:Libro1.xlsx" Esta instruccin abrir el archivo ubicado en C:Libro1.xlsx y lo agregar a la coleccin de objetos Workbooks. De esta manera podemos abrir tantos archivos como sean necesarios y para cada uno de ellos se crear un objeto Workbook el cual ser almacenado dentro de Workbooks. Hacer referencia a un libro en VBA Una vez que hemos abierto los archivos que necesitamos podremos hacer referencia a cada uno de ellos a travs de la coleccin de objetos Workbooks de la siguiente manera: Application.Workbooks (1).Activate El nmero que observas dentro de los parntesis indica el ndice del objeto Workbook dentro de la coleccin de objetos Workbooks. De manera predeterminada el ndice 1 ser para el libro de Excel que contiene el cdigo VBA y a partir de ah la numeracin ser de acuerdo al orden en que hayamos abierto otros archivos. Si conocemos el nombre del libro podemos utilizarlo en lugar del ndice y tener una instruccin como la siguiente: Application.Workbooks("Libro1.xlsx").Activate La coleccin de objetos Workbooks nos permitir acceder a todos los libros que hayamos abierto dentro de nuestra aplicacin VBA. Acceder las hojas de un libro De igual manera podemos acceder las hojas de cualquier libro a travs de su coleccin de objetos Worksheets. Esta coleccin tambin puede ser accedida por el ndice de cada una de las hojas del libro: Application.Workbooks (1).Worksheets(1).Range("A1").Value = "Hola" Esta instruccin accede a la hoja con el ndice 1 y coloca el valor Hola Mundo en la celda A1. Tambin podemos acceder a una hoja a travs de su nombre en caso de que lo conozcamos: Application.Workbooks(1).Worksheets("Hoja1").Range("A1").Value = "Hola" Agregar una nueva hoja A travs de la coleccin de objetos Worksheets podemos crear nuevas hojas en un libro. Observa la siguiente instruccin:

Worksheets.Add Observa que no he iniciado la instruccin anterior con el objeto Application, ni tampoco est precedida por el objeto Workbooks. Esta es una sintaxis aceptable dentro de VBA e indica que se agregar una nueva hoja al libro que est activo en ese momento. Este es un mtodo abreviado que podemos utilizar si estamos seguros de que el libro activo es el libro al que deseamos agregar una nueva hoja. De lo contrario, podemos especificar tota la ruta completa:

Application.Workbooks ("Libro1.xlsx").Worksheets.Add Ahora ya sabemos que VBA tiene un objeto para representar los libros de Excel (Workbook) y otro objeto para representar las hojas de un libro (Worksheet). Ambos tipos de objetos son almacenados dentro de colecciones de objetos que son conocidas como Workbooks, que se refiere a la coleccin de libros que se han abierto y Worksheets que es la coleccin de hojas que pertenecen a un determinado libro. Artculos Navegando el modelo Objetos, propiedades y mtodos en VBA relacionados en VBA

de

objetos

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

ActiveSheet.Name = "Reporte de Ventas" Colecciones del objeto Application El objeto Application tiene algunas colecciones que son de mucha utilidad como Sheets, Columnsy Rows. La coleccin Sheets nos permite acceder a todas las hojas de un libro: Application.Sheets.Count Es muy importante mencionar que la coleccin Sheets se referir al libro de Excel que se encuentre activo en el momento de ejecutar esta instruccin. Las colecciones Columns y Rows nos permitirn acceder a las columnas y filas de la hoja activa. Application.Columns Application.Rows (5).Select Propiedades del objeto Application El objeto Application tiene muchas propiedades como para mencionarles todas en esta ocasin, pero algunas de las ms importantes son las siguientes:

(5).Select

ActiveWorkbook. Devuelve un objeto Workbook que representa el libro de Excel activo. ActiveSheet. Regresa un objeto Worksheet que representa a la hoja que est actualmente seleccionada (activa). ActiveCell. Devuelve un objeto Range que representa la celda activa dentro de la hoja activa en el libro de Excel activo. ThisWorkbook. Esta propiedad devolver un objeto Workbook que representar el libro que contiene la macro que est siendo ejecutada.

Mtodos del objeto Application Uno de los mtodos ms utilizados del objeto Application es el mtodo InputBox que nos ayuda a mostrar un cuadro de dilogo que solicita al usuario el ingreso de algn valor. Observa la siguiente lnea de cdigo: Impresiones = Application.InputBox(Prompt:="Nmero de impresiones:", _

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

Esta instruccin har que Excel muestre un cuadro de dilogo pidiendo al usuario ingresar el nmero de impresiones que desea realizar. El nmero ingresado por el usuario se guardar en la variable Impresiones.

El libro de macros personal en Excel Cuando creamos una macro en Excel podemos guardarla en el libro actual o podemos guardarla en el libro de macros personal. La ventaja de guardar una macro en el libro de macros personal es que nuestra macro estar disponible para cualquier libro. El libro de macros personal El libro de macros personal es en realidad un archivo oculto llamado personal.xlsb y que es cargado cada vez que iniciamos Excel. Si tienes Windows 7 podrs encontrar el archivo personal.xlsb en la siguiente carpeta: C:\Usuarios\[Usuario]\AppData\Roaming\Microsoft\Excel\XLSTART En la ruta que observas arriba [Usuario] es el nombre de tu usuario en el equipo. Adems la carpeta App Data es una carpeta oculta por lo que no la encontrars directamente en el navegador de Windows a menos que habilites la vista de archivos ocultos. Creacin 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.

Cuando guardes el archivo Excel vers un mensaje preguntando si deseas guardar los cambios realizados al libro de macros personal, para lo cual debers pulsar el botn Guardar.

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

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

Tipos de errores en VBA No todas las cosas funcionan bien a la primera y seguramente te encontrars con errores al programar en Excel. Existen dos tipos de errores en VBA: errores de sintaxis y errores en tiempo de ejecucin. Errores de sintaxis en VBA Un error de sintaxis ocurre cuando tenemos un error con el lenguaje VBA, es decir, cuando intentamos hacer algo que no est permitido. Este tipo de errores son los ms fciles de localizar porque el Editor de Visual Basic est configurado para avisarnos en el momento en que encuentra un error de este tipo en nuestro cdigo. Los errores de sintaxis en VBA surgen cuando intentamos insertar algn operador o alguna instruccin de VBA en un lugar que no le corresponde. Observa la siguiente imagen:

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

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

Un error en tiempo de ejecucin ocurre cuando nuestra aplicacin ya est siendo ejecutada e intenta hacer alguna accin que no est permitida por Excel o por Windows. Esto ocasionar que nuestra aplicacin colapse o que Excel deje de responder. Este tipo de errores son mas difciles de encontrar pero aun as se podrn encontrar algunos de ellos al hacer pruebas y depuracin de nuestra aplicacin. Algunos ejemplos de este tipo de errores son los siguientes:

Intentar realizar una operacin no permitida por el ordenador. Por ejemplo una divisin entre cero o intentar sumar una cadena de texto y un valor Double. Intentar utilizar una librera de cdigo que no est accesible en ese momento. Utilizar un bucle con una condicin que nunca se cumple. Tratar de asignar un valor que est fuera de los lmites de una variable.

Existen muchas otras razones por las que podemos tener un error en tiempo de ejecucin. La mejor manera de prevenir estos errores ser haciendo una depuracin de nuestro cdigo pero eso ser tema de otro artculo. Lo importante por ahora es estar consiente de estos dos tipos de errores en VBA y saber que debemos estar atentos para corregir todos los errores de sintaxis de nuestro cdigo y minimizar al mximo los posibles errores de ejecucin. Depurar macros en Excel Cuando nos encontramos con errores en nuestras macros podemos depurar el cdigo utilizando el Editor de Visual Basic para encontrar fcilmente los errores que pueda contener nuestro cdigo VBA. Considera la siguiente macro:

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

Esto har que se inicie la ejecucin en la primera lnea, la cual se mostrar con un fondo amarillo indicando que esa instruccin es la que esta por ejecutarse.

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

El mensaje nos advierte que el objeto no admite esa propiedad o mtodo y se est refiriendo al objeto Range en donde el mtodo Value no est escrito de manera correcta y por lo tanto el depurador de VBA no reconoce dicha propiedad. Pulsa el botn Aceptar para cerrar el cuadro de dilogo y poder corregir el error en el cdigo. Ya hemos hablado sobre los diferentes tipos de errores en VBA y la depuracin nos ayudar a probar nuestro cdigo y a encontrar la gran mayora de los errores que podamos tener. Es probable que al principio veas a la depuracin como un trabajo muy exhaustivo pero cuando tus programas y macros comiencen a crecer entonces vers todos los beneficios que nos da la depuracin de macros en Excel.

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

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

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

Un ejemplo de eventos en VBA El ejemplo que crearemos en esta ocasin es para activar un cuadro de dilogo con el mensaje Bienvenido a la Hoja 2 y que se mostrar cuando activemos la Hoja2 de nuestro libro. Para comenzar, debes seleccionar el objeto Hoja2 del panel izquierdo del Editor de Visual Basic y posteriormente seleccionar la opcin Worksheet:

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

Una vez creada la subrutina para el evento Activate solamente insertar el cdigo para que se muestre el mensaje dentro del cuadro de dilogo:

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

ARREGLOS EN VBA
Los arreglos en VBA pueden ser entendidos como un grupo de variables contenidas dentro de otro repositorio. Dentro de un arreglo podemos referirnos a un valor especfico (elemento) utilizando su posicin (ndice).

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

Un arreglo es una coleccin de casillas que contendrn variables individuales. Casa casilla tendr un nmero de ndice el cual nos permitir asignar u obtener el valor que contiene. Crear un arreglo en VBA Para crear un arreglo en VBA utilizamos la siguiente instruccin: Dim Paises(1 To 5) As String Con este cdigo estamos creando el arreglo llamado Paises que tendr 5 elementos y estamos indicando que cada uno de los elementos ser del tipo String, es decir, cadenas de texto. Una vez que ha sido creado el arreglo podemos asignar sus valores de la siguiente manera. Paises(1) Paises(2) Paises(3) Paises(4) Paises(5) = "Per" Acceder un elemento del arreglo Para acceder cualquier elemento del arreglo simplemente colocamos el nombre del arreglo seguido por parntesis y el nmero de ndice del elemento que necesitamos. Por ejemplo, para desplegar un mensaje con el nombre de pas Espaa puedo utilizar la siguiente instruccin: MsgBox Paises(3) El resultado de esta instruccin ser el siguiente: = = = = "Argentina" "Colombia" "Espaa" "Mxico"

FECHA Y HORA EN VBA


Los valores de fecha y hora en VBA pueden ser manipulados de diversas maneras. En esta ocasin aprenderemos cmo obtener el ao, mes y da en VBA y cmo hacer operaciones bsicas con fechas. Para realizar estos ejemplos debes colocar un control de botn en una hoja de Excel y colocar las lneas de cdigo mostradas. Obtener la fecha y hora actual Para obtener la fecha actual en VBA utilizamos la funcin Date y para obtener la hora actual usamos Now.

En este ejemplo las variables fechaActual y horaActual contienen la fecha y horas actuales respectivamente. Obtener el ao, mes y da En el ejemplo anterior he obtenido la fecha actual en la variable fechaActual, sin embargo, si deseo mostrar solamente el ao puedo utilizar la funcin Year.

El resultado de este cdigo es el siguiente:

Al trabajar con fechas podremos obtener el mes utilizando la funcin Month y para obtener el da la funcin Day. Obtener la hora, minuto y segundo Para obtener la hora de la variable horaActual utilizaremos la funcin Hour de la siguiente manera:

El resultado es el siguiente:

Para obtener el minuto y el segundo podremos utilizar las funciones Minute y Second. Convertir una cadena de texto en fecha Ya hemos visto que la funcin Date nos devuelve la fecha actual, pero podemos utilizar otra funcin que nos permitir convertir una cadena de texto en una fecha. La funcin que utilizaremos para este ser la funcin DateValue.

El nico argumento de la funcin DateValue es la cadena de texto que convertir en fecha. El resultado de esta conversin es el siguiente:

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

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

El primer argumento de la funcin DateAdd determina la unidad de tiempo que ser sumada. En este ejemplo especifiqu d para indicar das, pero podemos utilizar otras medidas de tiempo:

yyyy para aos m para meses d para das ww para semanas

Las fechas y horas son un tipo de dato muy comn con el que seguramente tendrs que trabajar al crear tus macros. Es importante que aprendas a utilizar las funciones VBA que nos permitirn manipular adecuadamente la informacin.

FUNCIONES VBA
El lenguaje de programacin VBA contiene un nmero considerable de funciones que podemos utilizar para construir cdigo en Excel. Cuando ests escribiendo cdigo,

puedes introducir la palabra VBA seguida de un punto y vers una lista desplegable de estas funciones. La siguiente tabla provee una descripcin breve de algunas de las funciones VBA ms utilizadas. FUNCIN DESCRIPCIN

Abs

Regresa el valor absoluto de un nmero

Asc

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

CBool

Convierte una expresin a su valor booleano

CByte

Convierte una expresin al tipo de dato Byte

CCur

Convierte una expresin al tipo de dato moneda (Currency)

CDate

Convierte una expresin al tipo de dato fecha (Date)

CDbl

Convierte una expresin al tipo de dato doble (Double)

CDec

Convierte una expresin al tipo de dato decimal (Decimal)

Choose

Selecciona un valor de una lista de argumentos

Chr

Convierte un valor ANSI en valor de tipo texto

CInt

Convierte una expresin en un dato de tipo entero (Int)

CLng

Convierte una expresin en un dato de tipo largo (Long)

CreateObject

Crea un objeto de tipo OLE

CStr

Convierte una expresin en un dato de tipo texto (String)

CurDir

Regresa la ruta actual

CVar

Convierte una expresin en un dato de tipo variante (Var)

Date

Regresa la fecha actual del sistema

DateAdd

Agrega un intervalo de tiempo a una fecha especificada

DateDiff

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

DatePart

Regresa una parte especfica de una fecha

DateSerial

Convierte una fecha en un nmero serial

DateValue

Convierte una cadena de texto en una fecha

Day

Regresa el da del mes de una fecha

Dir

Regresa el nombre de un archivo o directorio que concuerde con un patrn

EOF

Regresa verdadero si se ha llegado al final de un archivo

FileDateTime

Regresa la fecha y hora de la ltima modificacin de un archivo

FileLen

Regresa el nmero de bytes en un archivo

FormatCurrency

Regresa un nmero como un texto con formato de moneda

FormatPercent

Regresa un nmero como un texto con formato de porcentaje

Hour

Regresa la hora de un valor de tiempo

IIf

Regresa un de dos partes, dependiendo de la evaluacin de una expresin

InputBox

Muestra un cuadro de dilogo que solicita la entrada del usuario

InStr

Regresa la posicin de una cadena de texto dentro de otra cadena

InStrRev

Regresa la pocisin de una cadena de texto dentro de otra cadena pero empezando desde el final

Int

Regresa la parte entera de un nmero

IsDate

Regresa verdadero si la variable es una fecha

IsEmpty

Regresa verdadero si la variable est vaca

IsError

Regresa verdadero si la expresin es un valor de error

IsNull

Regresa verdadero si la expresin es un valor nulo

IsNumeric

Regresa verdadero si la variable es un valor numrico

Join

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

LCase

Regresa una cadena convertida en minsculas

Left

Regresa un nmero especfico de caracteres a la izquierda de una cadena

Len

Regresa la longitud de una cadena (en caracteres)

LTrim

Remueve los espacios a la izquierda de una cadena

Mid

Extrae un nmero especfico de caracteres de una cadena de texto

Minute

Regresa el minuto de una dato de tiempo

Month

Regresa el mes de una fecha

MsgBox

Despliega un cuadro de dialogo con un mensaje especificado

Now

Regresa la fecha y hora actual del sistema

Replace

Reemplaza una cadena de texto con otra

Space

regresa una cadena de texto con el nmero de espacios especidicados

Split

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

Str

Regresa la representacin en texto de un nmero

Right

Regresa un nmero especificado de carecteres a la derecha de una cadena de texto

Rnd

Regresa un nmero aleatorio entre 0 y 1

Round

Redondea un nmero a una cantidad especfica de decimales

RTrim

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

Second

Regresa los segundos de un dato de tiempo

StrComp

Compara dos cadenas de texto

StrReverse

Invierte el orden de los caracteres de una cadena

Time

Regresa el tiempo actual del sistema

Timer

Regresa el nmero de segundos desde la media noche

TimeValue

Convierte una cadena de texto a un nmer de serie de tiempo

Trim

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

TypeName

Obtiene el nombre del tipo de dato de una variable

UCase

Convierte una cadena de texto en maysculas

Val

Regresa el nmero contenido en una cadena de texto

Weekday

Regresa un nmero que representa un da de la semana

WeekdayName

Regresa el nombre de un da de la semana

Year

Obtiene el ao de una fecha

CREANDO UNA FUNCIN VBA

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

La palabra clave Function La primera lnea de cdigo comienza con la palabra Function la cual define el inicio de la funcin. Observa tambin cmo la ltima lnea de cdigo es End Function que est especificando el trmino de la funcin. Inmediatamente despus de la palabra clave Function se debe especificar el nombre de la funcin que en este ejemplo esMiSuma seguida de parntesis que de manera opcional pueden contener una lista de parmetros. Parmetros de una funcin VBA Los parmetros son el medio por el cual pasamos informacin de entrada a la funcin. Algunas funciones necesitarn de dichas entradas para realizar algn clculo y algunas otras no, es por ello que los parmetros de una funcin son opcionales. Puedes incluir tantos parmetros como sean necesarios y solamente debes recordar separarlos por una coma.

Un parmetro no es ms que una variable y por lo tanto puedes observar que en el ejemplo he definido la variable rango que ser del tipo Range. Valor de retorno Como mencion al principio, la caracterstica principal de una funcin es que puede regresar un valor. Es por eso que al definir una funcin se debe indicar el tipo del valor de retorno que tendr dicha funcin. En este caso el valor de retorno ser de tipo Double y se est especificado por las palabras As Double que aparecen despus de los parntesis. Cuerpo de la funcin VBA Una vez definida la funcin se pueden especificar todas las instrucciones que sern ejecutas. En el ejemplo he comenzado por definir un par de variables, la variable celda que ser del tipo Range y la variable resultado del tipo Double. En sta ltima variable es donde se ir acumulando la suma de todas las celdas. La parte central de la funcin se encuentra en la instruccin For Each ya que realiza un recorrido por todas las celdas del rango que fue especificado como parmetro. Para cada celda que se encuentra se va sumando su contenido en la variable resultado. Retornando el valor Una vez que se han hecho los clculos necesarios, es importante regresar el valor. Para hacerlo es indispensable igualar el nombre de la funcin al valor o variable que contiene el valor que se desea regresar. En nuestro ejemplo, la variable resultado es la que contiene la suma de todas las celdas por lo que se iguala con el nombre de la funcin en la lnea Mi Suma = resultado. Probando la funcin VBA Finalmente probar la funcin VBA recin creada dentro de una hoja de Excel. Tal como lo definimos en el cdigo, el nico parmetro de la funcin debe ser un rango del cual me regresar la suma de los valores de la celda. Observa el siguiente ejemplo.

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

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

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

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

nuestro libro. Para comenzar, debes seleccionar el objeto Hoja2 del panel izquierdo del Editor de Visual Basic y posteriormente seleccionar la opcin Worksheet:

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

Una vez creada la subrutina para el evento Activate solamente insertar el cdigo para que se muestre el mensaje dentro del cuadro de dilogo:

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

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

Un arreglo es una coleccin de casillas que contendrn variables individuales. Casa casilla tendr un nmero de ndice el cual nos permitir asignar u obtener el valor que contiene. Crear un arreglo en VBA Para crear un arreglo en VBA utilizamos la siguiente instruccin: Dim Paises(1 To 5) As String Con este cdigo estamos creando el arreglo llamado Paises que tendr 5 elementos y estamos indicando que cada uno de los elementos ser del tipo String, es decir, cadenas de texto. Una vez que ha sido creado el arreglo podemos asignar sus valores de la siguiente manera.

Paises(1) Paises(2) Paises(3) Paises(4) Paises(5) = "Per" Acceder un elemento del arreglo

= = = =

"Argentina" "Colombia" "Espaa" "Mxico"

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

FECHA Y HORA EN VBA


Los valores de fecha y hora en VBA pueden ser manipulados de diversas maneras. En esta ocasin aprenderemos cmo obtener el ao, mes y da en VBA y cmo hacer operaciones bsicas con fechas. Para realizar estos ejemplos debes colocar un control de botn en una hoja de Excel y colocar las lneas de cdigo mostradas. Obtener la fecha y hora actual

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

En este ejemplo las variables fechaActual y horaActual contienen la fecha y horas actuales respectivamente. Obtener el ao, mes y da En el ejemplo anterior he obtenido la fecha actual en la variable fechaActual, sin embargo, si deseo mostrar solamente el ao puedo utilizar la funcin Year.

El resultado de este cdigo es el siguiente:

Al trabajar con fechas podremos obtener el mes utilizando la funcin Month y para obtener el da la funcin Day. Obtener la hora, minuto y segundo Para obtener la hora de la variable horaActual utilizaremos la funcin Hour de la siguiente manera:

El resultado es el siguiente:

Para obtener el minuto y el segundo podremos utilizar las funciones Minute y Second. Convertir una cadena de texto en fecha Ya hemos visto que la funcin Date nos devuelve la fecha actual, pero podemos utilizar otra funcin que nos permitir convertir una cadena de texto en una fecha. La funcin que utilizaremos para este ser la funcin DateValue.

El nico argumento de la funcin DateValue es la cadena de texto que convertir en fecha. El resultado de esta conversin es el siguiente:

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

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

El primer argumento de la funcin DateAdd determina la unidad de tiempo que ser sumada. En este ejemplo especifiqu d para indicar das, pero podemos utilizar otras medidas de tiempo:

yyyy para aos m para meses d para das ww para semanas

Las fechas y horas son un tipo de dato muy comn con el que seguramente tendrs que trabajar al crear tus macros. Es importante que aprendas a utilizar las funciones VBA que nos permitirn manipular adecuadamente la informacin.

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

Abs

Regresa el valor absoluto de un nmero

Asc

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

CBool

Convierte una expresin a su valor booleano

CByte

Convierte una expresin al tipo de dato Byte

CCur

Convierte una expresin al tipo de dato moneda (Currency)

CDate

Convierte una expresin al tipo de dato fecha (Date)

CDbl

Convierte una expresin al tipo de dato doble (Double)

CDec

Convierte una expresin al tipo de dato decimal (Decimal)

Choose

Selecciona un valor de una lista de argumentos

Chr

Convierte un valor ANSI en valor de tipo texto

CInt

Convierte una expresin en un dato de tipo entero (Int)

CLng

Convierte una expresin en un dato de tipo largo (Long)

CreateObject

Crea un objeto de tipo OLE

CStr

Convierte una expresin en un dato de tipo texto (String)

CurDir

Regresa la ruta actual

CVar

Convierte una expresin en un dato de tipo variante (Var)

Date

Regresa la fecha actual del sistema

DateAdd

Agrega un intervalo de tiempo a una fecha especificada

DateDiff

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

DatePart

Regresa una parte especfica de una fecha

DateSerial

Convierte una fecha en un nmero serial

DateValue

Convierte una cadena de texto en una fecha

Day

Regresa el da del mes de una fecha

Dir

Regresa el nombre de un archivo o directorio que concuerde con un patrn

EOF

Regresa verdadero si se ha llegado al final de un archivo

FileDateTime

Regresa la fecha y hora de la ltima modificacin de un archivo

FileLen

Regresa el nmero de bytes en un archivo

FormatCurrency

Regresa un nmero como un texto con formato de moneda

FormatPercent

Regresa un nmero como un texto con formato de porcentaje

Hour

Regresa la hora de un valor de tiempo

IIf

Regresa un de dos partes, dependiendo de la evaluacin de una expresin

InputBox

Muestra un cuadro de dilogo que solicita la entrada del usuario

InStr

Regresa la posicin de una cadena de texto dentro de otra cadena

InStrRev

Regresa la pocisin de una cadena de texto dentro de otra cadena pero empezando desde el final

Int

Regresa la parte entera de un nmero

IsDate

Regresa verdadero si la variable es una fecha

IsEmpty

Regresa verdadero si la variable est vaca

IsError

Regresa verdadero si la expresin es un valor de error

IsNull

Regresa verdadero si la expresin es un valor nulo

IsNumeric

Regresa verdadero si la variable es un valor numrico

Join

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

LCase

Regresa una cadena convertida en minsculas

Left

Regresa un nmero especfico de caracteres a la izquierda de una cadena

Len

Regresa la longitud de una cadena (en caracteres)

LTrim

Remueve los espacios a la izquierda de una cadena

Mid

Extrae un nmero especfico de caracteres de una cadena de texto

Minute

Regresa el minuto de una dato de tiempo

Month

Regresa el mes de una fecha

MsgBox

Despliega un cuadro de dialogo con un mensaje especificado

Now

Regresa la fecha y hora actual del sistema

Replace

Reemplaza una cadena de texto con otra

Space

regresa una cadena de texto con el nmero de espacios especidicados

Split

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

Str

Regresa la representacin en texto de un nmero

Right

Regresa un nmero especificado de carecteres a la derecha de una cadena de texto

Rnd

Regresa un nmero aleatorio entre 0 y 1

Round

Redondea un nmero a una cantidad especfica de decimales

RTrim

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

Second

Regresa los segundos de un dato de tiempo

StrComp

Compara dos cadenas de texto

StrReverse

Invierte el orden de los caracteres de una cadena

Time

Regresa el tiempo actual del sistema

Timer

Regresa el nmero de segundos desde la media noche

TimeValue

Convierte una cadena de texto a un nmer de serie de tiempo

Trim

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

TypeName

Obtiene el nombre del tipo de dato de una variable

UCase

Convierte una cadena de texto en maysculas

Val

Regresa el nmero contenido en una cadena de texto

Weekday

Regresa un nmero que representa un da de la semana

WeekdayName

Regresa el nombre de un da de la semana

Year

Obtiene el ao de una fecha

CREANDO UNA FUNCIN VBA


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

en el artculo Tu primera macro con VBA. Posteriormente ir explicando el detalle de la funcin.

La palabra clave Function La primera lnea de cdigo comienza con la palabra Function la cual define el inicio de la funcin. Observa tambin cmo la ltima lnea de cdigo es End Function que est especificando el trmino de la funcin. Inmediatamente despus de la palabra clave Function se debe especificar el nombre de la funcin que en este ejemplo esMiSuma seguida de parntesis que de manera opcional pueden contener una lista de parmetros. Parmetros de una funcin VBA Los parmetros son el medio por el cual pasamos informacin de entrada a la funcin. Algunas funciones necesitarn de dichas entradas para realizar algn clculo y algunas otras no, es por ello que los parmetros de una funcin son opcionales. Puedes incluir tantos parmetros como sean necesarios y solamente debes recordar separarlos por una coma. Un parmetro no es ms que una variable y por lo tanto puedes observar que en el ejemplo he definido la variable rango que ser del tipo Range. Valor de retorno Como mencion al principio, la caracterstica principal de una funcin es que puede regresar un valor. Es por eso que al definir una funcin se debe indicar el tipo del valor de retorno que tendr dicha funcin. En este caso el valor de retorno ser de tipo Double y se est especificado por las palabras As Double que aparecen despus de los parntesis. Cuerpo de la funcin VBA Una vez definida la funcin se pueden especificar todas las instrucciones que sern ejecutas. En el ejemplo he comenzado por definir un par de variables, la

variable celda que ser del tipo Range y la variable resultado del tipo Double. En sta ltima variable es donde se ir acumulando la suma de todas las celdas. La parte central de la funcin se encuentra en la instruccin For Each ya que realiza un recorrido por todas las celdas del rango que fue especificado como parmetro. Para cada celda que se encuentra se va sumando su contenido en la variable resultado. Retornando el valor Una vez que se han hecho los clculos necesarios, es importante regresar el valor. Para hacerlo es indispensable igualar el nombre de la funcin al valor o variable que contiene el valor que se desea regresar. En nuestro ejemplo, la variable resultado es la que contiene la suma de todas las celdas por lo que se iguala con el nombre de la funcin en la lnea Mi Suma = resultado. Probando la funcin VBA Finalmente probar la funcin VBA recin creada dentro de una hoja de Excel. Tal como lo definimos en el cdigo, el nico parmetro de la funcin debe ser un rango del cual me regresar la suma de los valores de la celda. Observa el siguiente ejemplo.

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

Justo por debajo de los controles de formulario podrs observar el grupo de controles ActiveX pero sus diferencias y similitudes las discutiremos en otro artculo. Por ahora nos enfocaremos solamente en los controles de formulario. Cmo insertar un control de formulario en Excel? Para insertar cualquiera de los controles de formulario debes seleccionarlo del men desplegable y hacer clic sobre la hoja de Excel arrastrando el borde para dibujar el contorno del control. Observa este procedimiento.

Los diferentes controles de formulario Existen diferentes tipos de controles de formulario en Excel que ofrecen diversos tipos de funcionalidad e interaccin con el usuario. Desde una simple etiqueta hasta controles que permiten una seleccin mltiple de sus opciones. A continuacin una breve descripcin de cada uno de ellos.

Barra de desplazamiento. Al hacer clic en las flechas se va desplazando la barra dentro de un intervalo predefinido. Botn. El botn nos permite ejecutar una macro al momento de hacer clic sobre l.

Botn de opcin. Nos permite una nica seleccin dentro de un conjunto de opciones. Casilla de verificacin. Permite la seleccin o no seleccin de una opcin. Control de nmero. Nos ayuda a aumentar o disminuir un valor numrico. Cuadro combinado. Es una combinacin de un cuadro de texto con un cuadro de lista. Cuadro de grupo. Agrupa varios controles dentro de un rectngulo. Cuadro de lista. Muestra una lista de valores de los cuales podemos elegir una sola opcin o mltiples opciones de acuerdo a la configuracin del control. Etiqueta. Permite especificar un texto o breves instrucciones en el formulario.

Controles de formulario no disponibles en Excel 2010 Los controles de formulario han estado presentes por varias versiones de Excel, sin embargo a partir de Excel 2010 existen algunos controles que ya no pueden ser utilizados dentro de las hojas como lo son el Campo de texto, el Cuadro combinado de lista y el Cuadro combinado desplegable, sin embargo podremos alcanzar funcionalidad similar utilizando controles ActiveX. Controles ActiveX en Excel Los controles ActiveX son un tipo de controles que nos permiten agregar funcionalidad de formularios a nuestros libros de Excel. Existe otro tipo de controles que es conocido como Controles de formulario y que tienen una funcionalidad similar, sin embargo existen algunas diferencias entre ambos tipos. Controles ActiveX y controles de formulario Los controles de formulario fueron introducidos desde la versin 4 de Excel y por lo tanto han estado presentes en la aplicacin por ms tiempo que los controles ActiveX los cuales comenzaron a ser utilizados a partir de Excel 97. Ya que los controles ActiveX fueron introducidos posteriormente ofrecen ms posibilidades de configuracin y formato que los controles de formulario. Ambos tipos de controles se encuentran en la ficha Programador.

La diferencia ms significativa entre ambos es la manera en como podemos obtener informacin de los controles al momento de interactuar con el usuario. Los controles de formulario solamente respondern despus de que el usuario ha interactuado con ellos, como despus de haber pulsado el botn. Por el contrario, los controles ActiveX responden de manera continua a las acciones del usuario lo cual nos permite realizar acciones como cambiar el tipo de puntero del mouse que se muestra al colocar el puntero del ratn sobre el botn. Propiedades de los controles ActiveX A diferencia de los controles de formulario, los controles ActiveX tienen una serie de propiedades que podemos configurar pulsando el botn Propiedades que se encuentra dentro del grupo Controles de la ficha Programador.

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

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

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

En la lista desplegable de la derecha podemos observar la lista de eventos disponibles para nuestro control ActiveX y para los cuales podemos escribir cdigo VBA. Al seleccionar cualquiera de dichos eventos se insertar una nueva subrutina que podremos utilizar. Son precisamente la gran cantidad de eventos disponibles para los controles ActiveX lo que los hace controles muy poderosos que podemos utilizar en nuestros formularios. Otra ventaja de los controles ActiveX En la versin de Excel 2010 algunos controles de formulario han dejado de ser soportados y no podemos utilizarlos ms. 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 opcin de utilizar controles ActiveXen lugar de controles de formulario. Cuadro de texto en Excel

El cuadro de texto es un control ActiveX que muestra un campo vaco donde el usuario puede introducir cualquier texto. En esta ocasin revisaremos cmo incrustar un cuadro de texto y hacer referencia al mismo desde cdigo VBA. Insertar un cuadro de texto en Excel Para insertar un cuadro de texto en una hoja de Excel debes ir a la ficha Programador y hacer clic en el botn Insertar y entonces hacer clic sobre la opcin Cuadro de texto de la seccin Controles ActiveX.

El puntero del ratn se convertir en una cruz la cual nos permitir dibujar el cuadro de texto sobre la hoja de Excel. Una vez dibujado el cuadro de texto podrs hacer clic derecho sobre l y seleccionar la opcin Propiedades para conocer el nombre que la ha sido asignado.

Tambin puedes ver las propiedades de cualquier control seleccionndolo primero y pulsando el botn Propiedades que se encuentra dentro del grupo Controles de la ficha Programador.

Modificar valor del cuadro de texto Si deseas colocar un texto dentro del cuadro de texto desde VBA puedes utilizar una instruccin como la siguiente: TextBox1.Text = "Texto inicial" Esto har que el cuadro de texto se vea de la siguiente manera:

Leer valor del cuadro de texto Si quieres leer el valor del cuadro de texto y colocarlo en una celda podemos utilizar la siguiente instruccin: Range("A1").Value = TextBox1.Text El valor de la celda ser el mismo que el del cuadro de texto.

Si deseas limpiar el cuadro de texto puedes utilizar la siguiente instruccin: TextBox1.Text = "" Cuadro de lista en VBA El cuadro de lista es un control ActiveX que nos permite desplegar una serie de opciones de las cuales el usuario puede realizar una seleccin. Podemos configurar el cuadro de lista para permitir seleccionar uno o varios elementos de la lista.

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

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

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

Elementos del cuadro de lista por cdigo Otra alternativa para indicar los elementos de un cuadro de lista es a travs de cdigo VBA. Para ello puedes incluir el siguiente cdigo en el evento Workbook_Open:

De esta manera cuando se abra el libro se agregarn las opciones al cuadro de lista llamado ListBox1. Asociar una celda al cuadro de lista Adicionalmente podemos asociar una celda al cuadro de lista la cual mostrar la seleccin que hagamos. Para hacer esta asociacin debemos especificar la direccin de la celda en la propiedad LinkedCell:

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

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

Despus de dibujar el Cuadro combinado tendrs un resultado como el siguiente:

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

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

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

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

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

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

Cuando selecciones un elemento del cuadro combinado se reflejar dicha seleccin en la celda indicada en la propiedadLinkedCell:

Casilla de verificacin en VBA Una casilla de verificacin es un control ActiveX que podemos utilizar para permitir que un usuario marque una opcin y por lo tanto poder conocer sus preferencias al verificar dicho valor en cdigo VBA. El control ActiveX casilla de verificacin Para insertar este control debemos ir al comando Insertar y seleccionar la opcin Casilla de verificacin (Control ActiveX).

Despus de dibujar este control tendrs el siguiente resultado:

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

La otra propiedad de una casilla de verificacin que tal vez quieras modificar ser la propiedad Value que de manera predeterminada tendr el valor False lo cual indica que el control se mostrar desmarcado. Si deseas que el control se muestre marcado de manera predeterminada, debes poner el valor True en la propiedad Value:

Valor de una casilla de verificacin Una casilla de verificacin nos dir su ha sido seleccionada o no, es decir, nos devolver un valor FALSO o VERDADERO. Para leer este valor debemos acceder a la propiedad Value del control de la siguiente manera: Private Range("C4").Value End Sub Esta lnea de cdigo coloca el valor de la casilla de verificacin en la celda C4. De esta manera, al seleccionar la casilla de verificacin obtendr el siguiente resultado: Sub = CheckBox1_Click() CheckBox1.Value

Para validar en VBA si la casilla de verificacin tiene un valor u otro podemos utilizar un cdigo como el siguiente: If CheckBox1.Value = True Then Range("C4").Value = 1

If CheckBox1.Value = False Then Range("C4").Value = 0 La primera lnea valida si el control ActiveX tiene un valor verdadero y de ser as coloca el nmero 1 en la celda C4. Si lacasilla de verificacin no ha sido seleccionada (falso) entonces colocar el nmero cero en la celda C4. Botn de opcin en VBA Un botn de opcin es un control ActiveX que nos permitir seleccionar una sola opcin dentro de un grupo de botones de opcin. A diferencia de las casillas de verificacin, los botones de opcin dependen uno del otro. El botn de opcin en Excel Para insertar un botn de opcin hacemos clic en el comando Insertar de la ficha Programador.

Un solo botn de opcin no hace mucho sentido, as que siempre agregamos dos o ms botones de opcin para permitir que usuario haga una seleccin de cualquiera de ellos.

Una vez que se ha agregado un segundo botn de opcin podrs notar que al seleccionar uno de ellos se desmarcarn todos los dems. La propiedad Caption De manera predeterminada Excel colocar el botn de opcin con un nombre como OptionButton1. Para cambiar este texto debemos editar la propiedad Caption del botn de opcin.

El botn de opcin en VBA Para saber si un botn de opcin ha sido seleccionado podemos acceder a su propiedad Value de la siguiente manera: Private Sub OptionButton1_Click()

If OptionButton1.Value = True Then MsgBox ("Has seleccionado la opcin Hombre") End Sub La propiedad Value es la que nos indica si el control est seleccionado, en cuyo caso, la propiedad ser igual a True. Para este ejemplo, al validar que el botn de opcin est seleccionado, se mostrar un cuadro de dilogo con un mensaje sobre la opcin seleccionada. Formularios en VBA Los formularios en VBA no son ms que un cuadro de dilogo de Excel donde podremos colocar controles que nos ayudarn a solicitar informacin del usuario. Podremos colocar cajas de texto, etiquetas, cuadros combinados, botones de comando, etc. Crear un formulario en Excel Los formularios de Excel son creados desde el Editor de Visual Basic donde debemos seleccionar la opcin de men Insertar y posteriormente la opcin UserForm.

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

Si no ves el Cuadro de herramientas puedes seleccionar el men Ver y la opcin Cuadro de herramientas.

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

El texto de las etiquetas se modifica en la propiedad llamada Caption. Para realizar este cambio solamente selecciona el control y se mostrar la ventana de Propiedades donde podrs hacer la modificacin. De igual manera el texto desplegado en los botones de comando se modifica en su propiedad Caption. Cdigo para el botn Cancelar El botn cancelar cerrar el formulario sin guardar la informacin capturada en ningn lugar. El cdigo que debemos utilizar es el siguiente: Private Unload End Sub Para agregar este cdigo puedes hacer doble clic sobre el control. La sentencia Unload Me cerrar el formulario. Cdigo para el botn Aceptar A diferencia del botn Cancelar, el botn Aceptar colocar los datos de las cajas de texto en las celdas A1, B1 y C1. El cdigo utilizado es el siguiente: Private Sub = CommandButton1_Click() Me.TextBox1.Value Sub CommandButton2_Click() Me

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

Worksheets("Hoja1").Range("B1").Value Worksheets("Hoja1").Range("C1").Value End Sub

= =

Me.TextBox2.Value Me.TextBox3.Value

Al pulsar el botn Aceptar se transferirn los valores de los controles TextBox hacia las celdas de la Hoja1. Botn para abrir formulario Para facilitar la apertura del formulario puedes colocar un botn ActiveX en la hoja con el siguiente cdigo: Private UserForm1.Show End Sub Probar el formulario Observa cmo cada uno de los botones realiza la accin correcta al pulsarlos: Sub CommandButton1_Click()

BIBLIOGRAFA. 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-porcategoria-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-ParaAutomatizar-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

Potrebbero piacerti anche