Sunteți pe pagina 1din 45

Utilidad de una macro

Anteriormente definimos a las macros como algo que nos permite expandir e incrementar las prestaciones de la hoja Excel. Cules seran algunos ejemplos de esto? Bueno, los ejemplos los iremos viendo en este manual, pero a grandes rasgos podemos comentar que las 4 grandes "reas" donde se aplican las macros son:

1. Automatizacin de procesos Cansado de realizar tareas repetitivas o manuales en Excel? Las macros nos permiten grabar o definir nuestros procesos y luego ejecutarlos automticamente con 1 clic. Nos pueden ahorrar muchas horas de trabajo! Con las macros podrs hacer tu trabajo mucho ms rpido. Hemos visto casos extremos de trabajos en Excel que llevaban 6 o 7 horas de armado manual y luego pudieron ser automatizados en una macro que haca todo en pocos segundos!

2. Creacin de funciones a medida Deseas crear nuevas funciones y clculos personalizados? Las funciones y frmulas Excel son la esencia de la hoja de clculos. Podemos programar funciones a medida que hagan exactamente lo que nosotros queremos. Y esas funciones se comportarn igual que las de Excel (aparecern en el men de funciones en la categora que nosotros indiquemos, tendrn sus respectivos argumentos, etc).

3. Creacin de nuevos comandos, complementos y mens Excel trae una gran cantidad de comandos y mens predefinidos que nos asisten para las operaciones ms habituales. Las macros nos permiten crear nuestros propios comandos y mens personalizados, e incorporarlos al Excel. La utilidad de los mismos depende tan solo de nuestras necesidades. Los complementos Excel tambin estn creados con macros.

4. Creacin de aplicaciones a medida Excel es utilizado en diversos campos y por una gran cantidad de usuarios. Las macros te permitirn construir complejas y elegantes aplicaciones para cualquier uso que quieras darles. El lmite solo es tu imaginacin. Una aplicacin Excel consiste en algo ms que una simple plantilla con datos y frmulas. Una aplicacin Excel es un verdadero programa de software con una serie de caractersticas que lo hacen utilizable por cualquier usuario sin que el mismo tenga que entender la lgica "exceliana" que hay por detrs.

5. Formularios Finalmente, con las macros podremos armar todo tipo de formulario para entrada y gestin de datos. Dichos formularios pueden tener botones, listas desplegables, y todas las herramientas que encuentras en formularios profesionales. Adems, puedes hacer que los datos del formulario se vayan guardando en una tabla Excel para posteriores anlisis y reportes!

Barra de herramientas
La barra de herramientas de macros es considerablemente diferente entre Excel 2.003 e inferior y Excel 2.007. Excel 2.003 El primer paso para empezar a programar macros es familiarizarnos con las herramientas que nos ofrece Excel para programarlas. Excel posee una Barra de Herramientas de Macros o VBA. Puedes acceder a la misma desde el men Herramientas > Macros. Dicho men se ve como en la fotografa a continuacin (fjate que tambin se indican las combinaciones de teclas para acceder a dichas opciones).

Tambin tienes la opcin de dejar siempre visible dicha barra de herramientas. Puedes hacer esto desde el men Ver > Barras de Herramientas > Visual Basic. Veras como aparece una nueva barra de herramientas de macros. Puedes ubicar esta barra de herramientas donde te sea ms cmodo.

Excel 2.007 En la nueva versin de Excel, las opciones del men de macros se encuentran en la ficha programador,.

Si no tienes visible la ficha Programador, puedes activarla de la siguiente forma 1. Presiona el botn de Office (botn redondo en la parte superior izquierda de la pantalla) 2. En la parte inferior del men que se despliega, presiona el botn Opciones de Excel 3. En la lista de opciones Ms Frecuentes, selecciona la casilla de Mostrar ficha programador en la cinta de opciones.

Editor VBA
El Editor de Visual Basic es la aplicacin que trae Excel desde donde se escriben y guardan las macros. Tienes 3 formas de acceder al editor: Excel 2.003 1. Desde el men Herramientas > Macros > Editor de Visual Basic 2. Desde el botn Editor de Visual Basic de la Barra de Herramientas Visual Basic. 3. Desde el teclado (Teclas de Mtodo Abreviado): ALT+F11 (El acceso a la Barra de Herramientas de la opcin 1 y 2 los explicamos en la seccin anterior) Excel 2.007 1. Desde la ficha Programador > botn Visual Basic 2. Desde el teclado (Teclas de Mtodo Abreviado): ALT+F11 (El acceso a la ficha programador lo explicamos en la seccin anterior) Nuestra forma preferida de acceder al editor de macros es con las teclas ALT + F11 Una vez que hayas accedido al editor de visual basic vers algo similar a la figura siguiente (no importa si no lo ves estrictamente similar, eso depender de las ventanas

que tengas visibles y ocultas). Puedes mostrar u ocultar estas ventanas desde el men Ver.

El editor contiene 4 ventanas principales: La Ventana Proyecto (parte izquierda superior) La Ventana de Cdigo (parte derecha) La Ventana Propiedades (parte izquierda inferior) La Ventana Inmediato (parte inferior derecha) Ventana Proyecto - VBA Project: esta ventana muestra los libros excel (xls) o los complementos (xla) abiertos. Usualmente vers nombres del tipo "VBAProject" y entre parntesis el nombre del archivo o complemento excel. Veamos el caso de VBAProject (Libro1). Simplemente significa que tienes abierto un libro Excel llamado Libro 1. Luego cuelgan 3 carpetas ms: Hoja1 (Hoja1), ThisWorkbook y Modulo (no importa si ves todos estos elementos ahora, luego te ensearemos como activarlos). Estas carpetas es donde habitan las macros. Haciendo doble clic en ellas activars la ventana donde se escriben las macros.

Ventana de Cdigo: esta es el lugar donde escribiremos el cdigo propiamente dicho de las macros. Como no hemos escrito ninguna macro todava veremos la hoja en blanco. Recuerda bien estas dos ventanas, ya que las usaremos a continuacin para escribir nuestra primera macro.

Como vers el Editor de VB tiene muchas ventanas. Pero de momento solo nos interesan las dos ventanas que te indicamos anteriormente: la Ventana Proyecto VBA Project y la Ventana de Cdigo donde se escribe el cdigo de las macros. La Ventana de Propiedades e Inmediato las dejaremos para ms adelante.

Recuerda: presionando las teclas ALT+F11 puedes ir desde Excel al Editor o desde el Editor al Excel de forma alterna (debes mantener presionada la tecla ALT y presionar F11 repetidas veces, vers como pasas de Excel al editor y viceversa).

Si estas en el editor y quieres regresar a la hoja Excel tambin puedes utilizar el cono de Excel que se encuentra en el men superior del editor (primer cono de la izquierda, con la X de Excel).

Escribir una macro


Nuestro objetivo fue crear una macro que escribiera el valor 1500 en la celda A1 de la Hoja1 de Excel. Como era una macro sencilla decidimos escribir el cdigo manualmente. Vamos a resumir todos los pasos que hicimos hasta aqu: 1. Creamos un nuevo libro Excel y lo guardamos con el nombre Libro1. 2. Accedimos el Editor de Visual Basic con las teclas ALT+F11 3. En la Ventana Proyecto, en VBAProject (Libro1), hicimos doble clic en Hoja1 (Hoja1). 4. En la Ventana de Cdigo escribimos textualmente el siguiente cdigo: ' Esta macro escribe el 1500 en la celda A1 Sub MiPrimeraMacro() Range("A1").Value = 1500 End Sub

Todo qued como se aprecia en la foto...

5. Finalmente abrimos el men de macros con ALT+F8, seleccionamos MiPrimeraMacro desde la lista de nombres y presionamos Ejecutar.

6. El resultado es que en la celda A1 se vuelve a escribir el valor 1500, que fue justamente lo que le indicamos a la macro que haga.

Recuerda: en estos 5 pasos hemos visto rpidamente como escribir una macro sencilla y ejecutarla. En las secciones siguientes iremos profundizando ms estos temas, sobre todo el referente el cdigo de la macro.

Ejecutar la macro
Excel 2.003 Si ya tienes escrita la macro en el editor, ahora podrs que ejecutarla, o sea hacer que funcione. Tienes 2 formas de hacer esto: A. Ejecutar la macro desde el mismo Editor Si te posicionas en cualquiera de las lneas de cdigo de la macro y luego presionas la tecla F5 la macro se ejecutar (para ver el resultado puedes volver a la hoja excel con ALT+F11). B. Ejecutar la macro desde Excel Otra forma de ejecutar la macro es desde el mismo Excel. Puedes hacerlo desde el men Herramientas > Macros > Macro.

Se abrir un cuadro que contiene una lista con los nombres de las macros creadas. Selecciona MiPrimeraMacro y haz clic en Ejecutar.

Si has seguido cualquiera de los 2 pasos anteriores ya podrs ver el resultado de la macro. Qu hizo la Macro? Si te fijas en el Libro 1, Hoja 1, Celda A1 vers que se escribi el valor 1.500. Eso es exctamente lo que queramos hacer con nuestra macro, as que tarea cumplida. Hemos escrito un valor en una celda excel desde una macro ! Excel 2.007 Si ya tienes escrita la macro en el editor, ahora podrs que ejecutarla, o sea hacer que funcione. Tienes 2 formas de hacer esto: A. Ejecutar la macro desde el mismo Editor Si te posicionas en cualquiera de las lneas de cdigo de la macro y luego presionas la tecla F5 la macro se ejecutar (para ver el resultado puedes volver a la hoja excel con ALT+F11). B. Ejecutar la macro desde Excel Otra forma de ejecutar la macro es desde el mismo Excel. Esto se hace desde la ficha Programador > Macros

Se abrir un cuadro que contiene una lista con los nombres de las macros creadas. Selecciona MiPrimeraMacro y haz clic en Ejecutar.

Si has seguido cualquiera de los 2 pasos anteriores ya podrs ver el resultado de la macro. Qu hizo la Macro? Si te fijas en el Libro 1, Hoja 1, Celda A1 veras que se escribi el valor 1.500. Eso es exactamente lo que queramos hacer con nuestra macro, as que tarea cumplida. Hemos escrito un valor en una celda excel desde una macro !

Grabar una macro


Excel trae incorporada una grabadora de macros. La misma funciona de forma muy fcil. Encendemos la grabadora, ejecutamos las acciones que nos interesan sobre la hoja excel, paramos la grabadora ylisto!. Excel escribe de forma automtica el cdigo VBA de la macro. Ahora podemos hacer un experimento muy interesante. Repetir nuestra primera macro, pero esta vez hacindola con la grabadora de macros. Sigue los pasos a continuacin: Excel 2.003 1. Vamos a grabar la macro 1.1 V al men Herramientas > Macros 1.2 Selecciona la opcin Grabar nueva macro

1.3 Se abrir un cuadro de dilogo como el que se muestra a continuacin.

1.4 Donde dice Nombre de la macro escribe MiPrimeraMacro. Ese ser el nombre que le daremos a nuestra macro. 1.5 Presiona Aceptar y la macro comenzar a grabar todo lo que hagas. 1.6 Posicinate en la celda A1 y escribe el valor 1500. 2. Barra para frenar la grabacin Cuando comienza a grabar la macro activa una nueva barra de macros como la que se muestra en la foto. El botn cuadrado de la izquierda te permitir parar la grabacin y finalizar la macro.

Otra forma de detener la grabacin de la macro es desde el men Herramientas > Macros > Detener grabacin. Hazlo ahora para detener la grabacin.

3. Veamos como qued la macro grabada 3.1 Accede al editor de visual basic con ALT+F11. 3.2 Debes hacer clic en Mdulo1 para visualizar el cdigo de la nueva macro grabada. Vers una pantalla como la siguiente:

* Podrs obsevar que el cdigo que se grab es distinto que el cdigo que habamos escrito cuando hicimos la macro manualmente. Ms adelante en este mismo captulo analizaremos y explicaremos las diferencias. 4. Vamos a probar la macro 4.1 Vuelve a Excel con ALT+F11. 4.2 Vers que la celda A1 tiene el valor 1500 porque lo escribimos mientras grabbamos la macro. 4.3 Para ver como opera la macro borra dicho valor.

4.4 Abre el men de macros desde el men Herramientas > Macro > Macros 4.5 Selecciona MiPrimeraMacro (no te confundas con Hoja1.MiPrimeraMacro que es la que hicimos primero). 4.6 Presiona Aceptar y vers como se escribe nuevamente el valor 1500 en la celda A1. Excel 2.007 1. Vamos a grabar la macro 1.1 V a la ficha Programador > Grabar macro

1.2 Se abrir un cuadro de dilogo como el que se muestra a continuacin.

1.4 Donde dice Nombre de la macro escribe MiPrimeraMacro. Ese ser el nombre que le daremos a nuestra macro. 1.5 Presiona Aceptar y la macro comenzar a grabar todo lo que hagas. 1.6 Posicinate en la celda A1 y escribe el valor 1500. 2. Detener la grabacin Para terminar de grabar, debemos presionar el botn de detener grabacin

3. Veamos como qued la macro grabada 3.1 Accede al editor de visual basic con ALT+F11. 3.2 Debes hacer clic en Mdulo1 para visualizar el cdigo de la nueva macro grabada. Vers una pantalla como la siguiente:

* Podrs observar que el cdigo que se grab es distinto que el cdigo que habamos escrito cuando hicimos la macro manualmente. Ms adelante en este mismo captulo analizaremos y explicaremos las diferencias. 4. Vamos a probar la macro 4.1 Vuelve a Excel con ALT+F11. 4.2 Vers que la celda A1 tiene el valor 1500 porque lo escribimos mientras grabbamos la macro. 4.3 Para ver como opera la macro borra dicho valor. 4.4 Abre el men de macros presionando ALT+F8 4.5 Selecciona MiPrimeraMacro (no te confundas con Hoja1.MiPrimeraMacro que es la que hicimos primero).

4.6 Presiona Aceptar y vers como se escribe nuevamente el valor 1500 en la celda A1.

Cmo acceder
El Editor de Visual Basic es la aplicacin que trae Excel desde donde se escriben y guardan las macros. Tienes 3 formas de acceder al editor: La forma ms rpida de acceder al editor es presionando ALT+F11 Tambin tienes otras formas de acceder: Excel 2.003: desde el men Herramientas > Macros > Editor de Visual Basic Excel 2.007: desde la ficha Programador > Visual Basic Cuando accedas al editor vers algo como similar a esto:

Las principales ventanas de editor son: Proyecto (arriba a la izquierda) Propiedades (abajo a la izquierda) Inmediato (arriba a la derecha) Cdigo (abajo a la derecha)

No importa si no ves todas las ventanas (se pueden mostrar u ocultar desde el men "Ver"). En las secciones siguientes te explicaremos la utilidad de cada una de estas ventanas.

Ventana Proyecto
Veamos una foto para ver como se ve la ventana de Proyecto. Si no la puedes visualizar esta ventana puedes activarla desde el men Ver > Explorador de proyectos, dentro del editro de visual basic. En la ventana de Proyecto hay carpetas donde se guardarn y escribirn las macros. Hemos presionado el botn Alternar Carpetas para que se ordenen mejor los elementos, como se ve a continuacin:

Proyectos En un primer nivel tenemos los proyectos. Por regla general, cada libro excel tiene asociado un proyecto. Por ejemplo, si creas un nuevo libro Excel desde el men de Excel Archivo > Nuevo y vuelves al editor de macros (ALT+F11), vers que aparece el proyecto VBAProject(Libro1). Dentro del parntesis aparece el nombre de tu libro excel y lo de VBAProject podrs cambiarlo luego. En resumen VBAProject(Libro1) es la carpeta principal, asociada a un libro Excel determinado, donde insertaremos todo lo referido a las macros para dicho libro. Carpetas En un segundo nivel tenemos 3 carpetas: - Microsoft Excel Objetos - Formularios - Mdulos.

Veamos cada una de ellas: 1. Microsoft Excel Objetos En esta carpeta vemos que cuelgan dos elementos: 1.1 ThisWorkbook siempre est presente. Si escribimos una macro aqu la misma afectar a todo el libro. 1.2 Hoja1 (Hoja1) hace referencia las hojas de Excel (habr 1 por cada hoja de nuestro libro). Si escribimos una macro aqu la misma solo afectar a la hoja en cuestin. 2. Formularios Los formularios son ms conocidos como UserForms. Si no lo visualizas puedes agregarlos desde el men Insertar > Userform. 2.1 Dentro de la carpeta de Formularios vemos un elemento llamado Userform1. Todo el tema de formularios lo veremos con ms en detalle en el captulo "Formularios". 3. Mdulos Los mdulos sirven para escribir macros a nivel genrico, sin estar relacionadas a la hoja o libro en particular. Si no visualizas ninguno puedes agregarlos desde el men Insertar > Mdulo. 3.1 Dentro de la carpeta de Mdulos vemos que hay un elemento llamado Mdulo1. Podemos insertar tantos mdulos como necesitemos. En los mdulos podemos escribir macros que operan de forma genrica, sin distinguir entre hojas o libros. Haciendo doble clic izquierdo en cualquiera de estos objetos vers que se habilita la Ventana de Cdigo de la izquierda (una hoja en blanco grande). En la misma es donde se escriben las macros. Recuerda: antes de escribir una macro debes evaluar donde hacerlo. 1. Si es una macro que solo debe afectar una hoja en particular escrbela en los objetos de Hoja, en el nombre de Hoja correspondiente. 2. Si la macro debe afectar a todo un libro en particular escrbela en el objeto ThisWorkbook. Estas suelen ser macros que se ejecutan al abrir, cerrar o guardar el libro. 3. Si la macro es de tipo genrica escrbela en un Mdulo. 4. Si quieres hacer un formulario utiliza el objeto Userform.

Ventana Propiedades
Veamos como se ve la Ventana Propiedades. Esta ventana se ubica en la parte inferior izquierda de la pantalla. Si no la puedes visualizar puedes activarla desde el men Ver > Ventana propiedades. Cada objeto tiene sus propiedades. Por ejemplo, si hacemos doble clic en el objeto Mdulo1 que vimos en la seccin anterior, podremos ver sus propiedades:

Algunos objetos tienen muchas propiedades (por ej. los Userforms) as que tenemos la opcin de ordenar lso mismos de forma alfabtica o por categora. El objeto Mdulo1 solo tiene la propiedad (Name)Mdulo1. Si quisiramos podramos reemplazar el nombre de Mdulo1 y asignar otro nombre a gusto. Consejo: en la medida que vamos insertando muchas macros en nuestro proyecto, conviene ir creando nuevos mdulos con nombres apropiados para mantener ordenadas nuestras macros. El resto de las propiedades de los otros objetos escapa al alcance de esta seccin, pero podrs ver algunas en la 2 parte de este curso.

Ventana Cdigo
Veamos una foto para ver como se ve la Ventana de Cdigo. Cada vez que hagas doble clic izquierdo en algn Objeto de la Ventana Proyecto se activar a la derecha la Ventana de Cdigo. Si no la puedes visualizar puedes activarla posicionndote en el Objeto en cuestin y luego desde el men Ver > Cdigo. Si todava no has escrito ninguna macro vers la ventana de cdigo en blanco. En nuestro ejemplo hemos escrito 3 macros:

Esta ventana no tiene mayores complicaciones. Lo que interesa es ms bin el cdigo que escribamos aqu. Puedes escribir todas las macros que quieras en esta ventana. Recuerda que el mismo editor asignar automticamente los colores al cdigo y adems separar con una lnea continua cada macro. En la medida que empecemos a escribir muchas macros, existe una forma rpida de movernos entre ellas. Desde la lista desplegable de la parte superior derecha podremos ver la lista de macros escritas. Haciendo clic en cualquiera de ellas el editor nos posicionar rpidamente en la misma.

Ventana Inmediata
Veamos como se ve la Ventana de Inmediato. Si no la puedes visualizar puedes activarla desde el men Ver > Ventana Inmediato.

La ventana inmediata sirve para escribir, ejecutar y probar un cdigo macro rpidamente, sin tener que armar toda la macro con la estrucuta que comentamos en secciones anteriores. Por ejemplo, si quisiramos averiguar la cantidad de hojas que tiene un Libro podramos escribir la siguiente macro en un mdulo y ejecutarla: Sub ContarHojas() Dim N As Long N= thisworkbook.Sheets.Count Msgbox N End Sub De momento no importa los objetos, propiedades o mtodos que hemos utilizado. Solo te queremos mostrar que es una macro de 5 lneas. Ahora supongamos que solo nos interesa saber el nmero de hojas del libro, pero no queremos armar toda la macro, solo nos interesa obtener el resultado. Entonces, en la ventana inmediato podemos escribir: ?thisworkbook.Sheets.Count y al presionar Enter en la fila siguiente nos mostrar el nmero de hojas que posee el libro. El signo ? al comienzo significa que estamos buscando conocer el resultado de algo. El resultado final se vera as, suponiendo que el libro tiene 1 hoja:

Veamos otro ejemplo. Si el libro fue guardado, podramos querer averiguar el directorio donde se encuentra. Podramos averiguarlo desde la Ventana Inmediato, escribiendo ?thisworkbook.Path y presionando Enter. Al presionar Enter, en la fila siguiente se mostrar la ruta del libro, por lo que en la Ventana Inmediato veremos algo as, suponiendo que el libro se encuentra guardado en ese directorio:

En los 3 ejemplos anteriores buscbamos un resultado y anteponamos el signo ? al comienzo de la instruccin (buscbamos un nombre o un nmero). En otros casos podemos ejecutar una accin directamente y por lo tanto escribimos la macro sin el signo ?. Por ejemplo, si queremos que en la celda A1 aparezca el valor 100 lo podemos ejecutar desde la Ventana Inmediato como se ve a continuacin:

En la celda A1 de la Hoja activa de Excel aparecer el valor 100. Recuerda: desde la Ventana Inmediato puedes ejecutar macros de forma inmediata, como su nombre lo indica. Pero dichas macros solo se ejecutan 1 vez al presiona enter y no quedan disponibles en la lista de macros ni las puedes utilizar en tus desarrollos (asignndolas a botones o formularios).

Proteger el cdigo
As como se pueden proteger los libros, las hojas y las celdas de Excel, tambin es posible proteger con una contrasea el cdigo de nuestras macros. Una vez que tengas tus macros escritas en el editor puedes ir al men Herramientas > Propiedades de VBAProject... y luego hacer clic en la pestaa de Proteccin. Vers una ventana como la de la siguiente:

Para proteger tus macros sigue estos pasos: 1. Tilda la casilla Bloquear proyecto para su visualizacin 2. Escribe una Contrasea 3. Vuelve e escribir tu contrasea en Confirmar contrasea De esta forma, cuando alguien acceda al editor, ver la ventana proyecto del libro pero no podr ver los objetos donde quedan escritas las macros (mdulos, hojas y userforms). Si hace doble clic en el Proyecto aparecer una ventana solicitando la clave.

Desde objetos
Muchas veces, y sobre todo cuando desarrolles aplicaciones en Excel, te interesar asignar macros a objetos grficos insertados en la hoja. Excel posee una gran cantidad de figuras y dibujos que puedes insertar en la hoja. Excel 2.003: desde el men Ver > Barra de Herramientas > Dibujo. Esto muestra un men como el siguiente:

Excel 2.007: desde la ficha Insertar > Formas. Esto muestra un men como el siguiente:

Si ya has insertado una figura en tu hoja Excel, podrs asociarle una macro siguiendo estos pasos: 1. Haz clic izquierdo en la figura para desplegar su men de opciones. 2. Elige la opcin Asignar macro

3. Al elegir la opcin de Asignar macro abrirs el el men de macros. Selecciona de la lista la macro de tu inters luego Aceptar.

4. Finalmente la figura quedar con la macro asignada, de tal forma que cada vez que hagas un clic encima de la figura, se ejecutar la macro.

Formularios
Un Formulario (o su denominacin en ingls Userform) se utiliza para crear un Cuadro de Dilogo donde el usuario puede introducir informacin, o realizar otras operaciones. Al ejecutar muchas de las opciones del men de Excel se abren formularios. Por ejemplo, desde el men Herramientas > Opciones se abre un formulario como el siguiente, desde donde se pueden activar o desactivar distintas opciones de Excel.

Este formulario es muy completo y posee pestaas en la parte superior, casillas de seleccin (cuadraditos con tildes), casillas de opciones (crculos con un punto dentro) y listas desplegables (lista con una flechita que despliega distintas opciones). Tambin podemos crear nuestros propios formularios como se ve a continuacin.

Los Userforms se utilizan mucho para crear aplicaciones Excel que luzcan de forma profesional y permitan al usuario introducir datos o elegir opciones de una forma guiada y ms intuitiva. En este captulo aprenderemos como construir nuestros propios Userforms!

Crear un formulario
Para crear un Userform debemos hacer lo siguiente: 1. Abrir el editor de macros (por ejemplo, con CTRL+F11). 2. Insertar un objeto Userform. Esto podemos hacerlo fcilmente: 2.1 Seleccionamos el Libro Excel donde trabajaremos, en nuestro caso VBAProject (Libro2). 2.2 Hacemos clic derecho en el mismo y elegimos la opcin Insertar > Userform 2.3 Como se ve en la fotografa, veremos que aparece un objeto Userform1 que cuelga de la carpeta Formularios

3. En la ventana de Cdigo de la derecha, veremos que aparece un Userform en blanco, sin controles. Para abrir su Cuadro de Herramientas puedes hacerlo desde el men Ver > Cuadro de Herramientas. Ah figuran los controles que podremos agregar dentro del Userform. Para adir uno, simplemente hacemos clic izquierdo en el control deseado y luego clic izquierdo dentro del Userform, en el sitio donde querramos agregar el control.

La idea es que mediante estos controles podremos tanto capturar como enviar informacin o datos desde o hacia las celdas de Excel respectivamente. Tambin podemos asociar macros a los controles que agreguemos al Userform (todo esto lo veremos en secciones siguientes).

Si te posicionas sobre los Controles del Cuadro de herramientas, vers que aparece su nombre. Simplemente hacemos clic izquierdo en el control deseado y luego clic izquierdo en el Userform, en el sitio donde querramos agregar el control. En nuestro caso hemos agregado algunos controles de forma desordenada dentro del Userform.

Controles del formulario


Como veamos anteriormente, tenemos una serie de controles para agregar al Userform, que los podamos visualizar desde el men Ver > Cuadro de Herramientas.

Ahora explicaremos brevemente la utilidad de cada control. Los controles se explican en el mismo orden que aparecen en el Cuadro de Herramientas y en la figura anterior (de izquierda a derecha y de arriba hacia abajo).

Seleccionar objetos: sirve para seleccionar controles que hayamos insertado en el Userform.

Label (etiqueta): sirve para poner un ttulo o un texto.

Ejemplo: podemos poner un texto del tipo "Complete las opciones a continuacin" y ubicarlo en cualquier sitio del Userform. Tambin podemos agregar ttulos o descripciones al resto de comandos que agregemos en el Userform.

Textbox (cuadro de texto): sirve para que un usuario introduzca datos. Ejemplo: queremos que el usuario introduzca una fecha o un nombre (que luego llevaremos a alguna celda de Excel).

ComboBox (cuadro combinado): sirve para que un usuario elija una opcin de una lista. Ejemplo: creamos una lista con los meses de Enero a Diciembre para que el usuario elija uno de ellos.

ListBox (cuadro de lista): sirve para que un usuario rellene o elija varias opciones de una lista. Ejemplo: creamos una lista con Regiones o Ciudades y el usario deber elegir una o varias de ellas.

CheckBox (casilla de verificacin): sirve para que un usuario active una determinada funcin. Ejemplo: podemos hacer que al cerrar el Userform se imprima un reporte solo si la casilla de seleccin est tildada.

OptionButton (botn de opcin): sirve para que un usuario seleccione una opcin determinada entre varias posibilidades. Ejemplo: queremos que el usuario indique si es de sexo Masculino o Femenino. De todas las opciones solo se puede seleccionar una de ellas.

ToggleButton (botn de alternar): sirve para activar o desactivar alguna funcionalidad. Este botn adopta el modo "Encendido" / "Apagado".

Ejemplo: queremos que el usuario defina su idioma, en modo encendido espaol y en modo apagado ingls.

Frame (marco): sirve para agrupar elementos de un Userform (los elementos se deben ubicar dentro del Frame). Ejemplo: tenemos varias grupos de OptionButton y para distinguirlos los agrupamos con un Frame. Si tenemos un grupo de opciones tipo masculino/femenino los agrupamos dentro de un frame. Si luego tenemos otro gurpo de opciones del tipo Mayor de Edad / Menor de Edad los agrupamos dentro de otro Frame.

CommandButton (botn de comando): es un simple botn que nos permite ejecutar acciones. Ejemplo: un botn de Ayuda que ejecuta otro Userform con ayuda para el usuario.

TabStrip (barra de tabulaciones): en un mismo Userform se pueden crear distintas secciones. Ejemplo: un userform con cuatro secciones: Norte, Sur, Este y Oeste. Dentro de cada seccin podemos ubicar distintos controles.

MultiPage (pgina mltiple): en un mismo Userform se pueden crear distintas pginas. Ejemplo: un userform con 2 pginas: Espaa y Resto del Mundo. Dentro de cada pgina podemos ubicar distintos controles o distintas secciones.

ScrollBar (barra de desplazamiento): si tenemos una lista con muchos elementos el scrollbar nos permite navegarlos. Ejemplo: tenemos una lista con 150 pases. Con el ScrollBar podemos subir y bajar por la lista de los mismos utilizando las flechas de desplazamiento.

SpinButton (botn de nmero): permite aumentar o disminuir valores.

Ejemplo: tenemos una lista con tipos de inters y queremos que sean incrementados o disminudos en cantidades predeterminadas desde el SpinButton.

Image (imagen): permite introducir imgenes en el Userform. Ejemplo: queremos introducir una fotografa como fondo del Userform para darle un aspecto ms profesional.

RefEdit (referencia): permite hacer referencia a una celda de Excel. Ejemplo: queremos que el usuario seleccione un dato que fue introducido previamente en una celda Excel. Haciendo doble clic en cada control se abrir una venta donde podremos escribir y asociarle una macro. En la seccin siguiente veremos un ejemplo simple sobre como crear un Userform paso a paso. Para ver como se veran estos controles dentro del Userform, vamos a crear un Userform que contiene los 15 controles que se pueden agregar. Los hemos agregado en el mismo orden en que aparecen en el Cuadro de Herramientas.

Ejemplo paso a paso


Antes de crear un Userform debemos pensar bien cul ser su objetivo y cules son los controles que utilizaremos.

Objetivo Crear un Userform para que un usuario complete unos datos personales (Nombre, Edad y Fecha de Nacimiento). Luego que el usuario complete sus datos, al apretar un botn, los mismos se volcarn en una tabla de Excel. Los controles que utilizaremos son: Textbox: para que el usuario ingrese los datos Label: para darle el nombre e los Textbox CommandButton: para proceder con el ingreso de datos o cancelar 1. Creamos la tabla en la hoja Excel Primero debemos crear un nuevo libro que contenga una tabla Excel donde se volcarn los datos del Userform. Para esto creamos un nuevo libro llamado Datos.xls y creamos la siguiente tabla:

2. Creamos un Userform (UF) Los UF se crean desde el editor de visual basic. 2.1 Abrimos el editor con ALT+F11 2.2 Seleccionamos Ver > Explorador de Proyectos para ver la lista de proyectos disponibles (los mismos se vern en la parte izquierda de la ventana). 2.3 En la venta de Proyectos seleccionamos VBAProject(Datos.xls) 2.4 Desde el men superior elegimos Insertar > Userform 2.5 Aparecer un nuevo Userform vaco junto con el Cuadro de Herramientas (si el mismo no aparece se puede abrir desde el men Ver > Cuadro de Herramientas)

3. Nombramos el Userform

3.1 Abrimos las propiedades desde el men Ver > Ventana Propiedades. 3.2 Hacemos doble clic en donde dice (Name) UserForm1, en la parte superior y tipeamos DatosUF, luego Enter (este es el nombre con el que nos referiremos al Userform desde las macros). 3.3 El nombre del Userform cambi en la Ventana de Proyecto, pero el Userform mismo sigue mostrando "Userform1" en su barra de su ttulo. Para cambiarlo vamos a la Ventana Propiedades, hacemos doble clic en Caption, escribimos Datos Personales (encima de Userform1) y luego Enter. Ahora, la barra de ttulo del Userform es ms apropiada para nuestro propsito y para darle mejor informacin al usuario.

4. Agregamos un Cuadro de Texto Para permitir que el usuario ingrese datos en el Userform agregamos un control TextBox, desde el Cuadro de Herramientas. 4.1 Hacemos clic en el control de TextBox y luego hacemos clic en el Userform, en la parte donde querramos ubicarlo.

4.2 Con el nuevo TextBox seleccionado hacemos doble clic en la Ventana de Propiedades, propiedad (Name), tipeamos la palabra UFNombre y luego enter (este es el nombre que le asignamos al objeto para luego referirnos a l desde las macros).

4.3 Hacemos clic en una parte vaca del Userform, para volver a seleccionar todo el Userform. 5. Agregamos un Texto Para ayudar al usuario a ingresar sus datos, debemos indicarle que es lo que debe introducir en el Cuadro de Texto del Paso anterior. Podemos agregar una etiqueta de texto que describa la informacin que se debe introducir. 5.1 En el Cuadro de Herramientas hacemos clic en el botn Label o Etiqueta 5.2 En el Userform hacemos clic a la izquierda del TextBox, para agregar la Etiqueta de texto.

5.3 Si fuera necesario podemos cambiar el tamao de la etiqueta de texto o del Cuadro de Texto para que no se superpongan. Se puede hacer clic en sus bordes (pequeos cuadraditos) y arrastrar para cambiar su tamao.

5.4. Seleccionamos la nueva etiqueta, hacemos doble clic en la propiedad Caption de la ventana de propiedades, tipeamos Nombre y luego Enter.

5.5 Hacemos clic en alguna parte vaca del Userform para seleccionarlo y mostrar el cuadro de herramientas. 6. Agregamos los Cuadros de Texto restantes Agregamos los cuadros de texto y las etiquetas restantes (ya lo hicimos para el nombre as que repetimos para Edad y Fecha de Nacimiento). Repetimos los pasos 4 y 5 y agregamos: * Un TextBox cuyo (Name) sea UFEdad, con una Etiqueta llamada "Edad" * Un TextBox cuyo (Name) sea UFFecha, con una Etiqueta llamada "Fecha Nac." Es muy importante que no olvides asignar bien los nombres (Name) a los Textbox, si no la macro dar error. Puedes revisar los pasos 4 y 5 para recordar como hacerlo. Si los textbox no quedan alineados se pueden alinear de la siguiente forma: 1. Clic en el primer TextBox 2. Mantieniendo pulsada la tecla MAYUS, selecciona los otros TextBox 3. Vamos al men Formato > Alinear > Izquierda 4. Hacemos clic en alguna parte vaca del Userform para seleccionarlo y mostrar el cuadro de herramientas.

7. Agregamos los Botones Para permitir que el usuario ejecute una accin, se pueden agregar un Botn de comando. Nuestro Userform tendr un botn para Agregar los datos a la tabla Excel y otro botn para Cerrar el Userform. 7.1 En el Cuadro de Herramientas hacemos clic en Botn de comando. 7.2 En el Userform hacemos clic en la parte inferior izquierda para agregar el botn. 7.3 Con el nuevo botn seleccionado hacemos doble clic en la propiedad (Nombre) de la Ventana de Propiedades, tipeamos UFAgregar y luego enter. 7.4 Con el nuevo botn seleccionado hacemos doble clic en su propiedad Caption en la Ventana de Propiedades, tipeamos Agregar y luego enter. 7.5 Hacemos clic en alguna parte vaca del Userform para seleccionarlo y mostrar el Cuadro de Herramientas. 7.6 Repetimos los pasos anteriores para agregar otro Botn de comando llamado UFCerrar y nombre "Cerrar". 7.8 Si fuese necesario podemos reubicar los botones dentro del Userform.

Es muy importante que no olvides asignar bien los nombres (Name) a los Botones de comando, si no la macro dar error. Esto se explica en el paso 7.3 y luego debers repetirlo para el otro botn, tal cual se indica en el paso 7.6.

8. Agregamos el cdigo al botn Agregar 8.1 Seleccionamos nuestro botn de comando Agregar 8.2 Desde el men superior elegimos la opcin Ver > Cdigo. Esto abrir una ventana donde podremos escribir cdigo macro para dicho objeto. 8.3 Donde titila el cursor escribimos lo siguiente: Private Sub UFAgregar_Click() Dim iFila As Long Dim ws As Worksheet Set ws = Worksheets(1) 'encuenta la siguiente fila vaca iFila = ws.Cells(Rows.Count, 1).End(xlUp).Offset(1, 0).Row 'Verifica que se ingrese un nombre If Trim(Me.UFNombre.Value) = "" Then Me.UFNombre.SetFocus MsgBox "Debe ingresar un nombre" Exit Sub End If 'copy the data to the database ws.Cells(iFila, 1).Value = Me.UFNombre.Value ws.Cells(iFila, 2).Value = Me.UFEdad.Value ws.Cells(iFila, 3).Value = Me.UFFecha.Value 'limpa el formulario Me.UFNombre.Value = "" Me.UFEdad.Value = "" Me.UFFecha.Value = "" Me.UFNombre.SetFocus End Sub

8.4 En el men superior elegimos Ver > Objeto para regresar al Userform. No te preocupes si no comprendes el cdigo. Hay muchos objetos, propiedades y mtodos nuevos. Todos ellos se explican mejor en la 2 parte de este curso. 9. Agregamos el cdigo al botn Cerrar 9.1 Seleccionamos el botn de comando Cerrar 9.2 En el men superior elegimos Ver > Cdigo 9.3 Donde titila el cursor escribimos el siguiente cdigo: Private Sub UFCerrar_Click() Unload Me End Sub 9.4 En el men superior elegimos Ver > Objeto para regresar al Userform. 10. Permitir al usuario cerrar el Userform con la tecla ESC 10.1 Seleccionamos el botn de comando Cerrar 10.2 En la Ventana Propiedades cambiamos la propiedad Cancel a True. Probar el Userform Ya podemos probar el funcionamiento del Userform ! 1. Hacemos clic en alguna parte vaca del Userform para seleccionarlo y mostrar el cuadro de herramientas. 2. En el men superior elegimos Ejecutar > Ejecutar Sub/Userform 3. Ahora podemos comenzar a completar el primer cuadro del Userform y escribimos un nombre, por ej. Juan. 4. Presionamos la tecla TAB para movernos al siguiente cuadro de texto. 5. Cuando hemos completado todos los cuadros de texto, hacemos clic en el botn de Agregar y los datos se completarn en la Tabla de Excel. 6. Podemos repetir los pasos anteriores e ir agregando distintos nombres con sus respectivos datos. 7. Hacemos clic en Cerrar para volver al editor de macros. La tecla TAB sirve para moverse entre los distintos controles de un Userform. Si al presionar TAB el orden del movimiento no es el correcto, es posible camabiarlo:

1. Clic derecho en una parte vaca del USerform 2. Elegimos Orden de Tabulacin. 3. Seleccionamos el control de la lista y con los botones de Mover Arriba o Mover Abajo ajustamos el orden. 4. Hacemos clic en OK Asignar un botn para ejecutar el Userform Podemos agregar un botn para que un usuario pueda ejecutar el Userform desde la hoja Excel. 1. Activamos Excel, libro Datos.xls, Hoja 1 2. En la Barra de Dibujo, en el men Ver > Barras de Herramientas > Dibujo hacemos clic en una figura, por ejemplo el cuadrado, y lo insertamos en la hoja. 3. Seleccionamos dicha figura y con clic derecho en su borde elegimos Asignar Macro 4. Hacemos clic en el botn Nuevo 5. Donde titila el cursor escribimos: DatosUF.Show 6. Cada vez que hagamos clic en la figura se ejecutar el Userform.

Seleccin de celdas
Existen diversas formas de seleccionar celdas, y en todas ellas utilizamos el mtodo Select. Veamos 3 mtodos (equivalentes) para seleccionar una celda, por ejemplo la celda C4: ' La forma clsica de seleccionar Sub Seleccionar () Range("C4").Select End Sub ' Esta es otra terminologa vlida para seleccionar Sub Seleccionar () [C4].Select End Sub

' Finalmente podemos seleccionar de esta otra forma ' El primer N equivale a fila y el segundo a columna. Sub Seleccionar () Cells(4, 3).Select End Sub En los 3 casos anteriores se selecciona la celda C4. En el primer caso utilizamos el objeto Range y en el tercer caso el objeto Cells. Tambin podemos seleccionar determinadas celdas (con datos, con frmulas, etc). En la siguiente macro iremos seleccionando distintos tipos de celdas: Sub Seleccionando () On Error Resume Next ' Colocamos On Error Resume Next ' para evitar el error re compilacin derivado de no poder selecionar un rango que no exi ste ' por ej., si la hoja activa no tuviera comentarios, no podramos selecionarla con el cdig o ' Para seleccionar todas la celdas que contienen comentarios. Cells.SpecialCells(xlCellTypeComments).Select 'Para seleccionar todas la celdas cuyo valor es una constante. Cells.SpecialCells(xlCellTypeConstants, 23).Select ' Para seleccionar todas la celdas que contienen frmulas. Cells.SpecialCells(xlCellTypeFormulas, 23).Select ' Para seleccionar todas la celdas vacas, dentro de la regin usada. Cells.SpecialCells(xlCellTypeBlanks).Select ' Para seleccionar todas la celdas visibles en nuestra hoja. Cells.SpecialCells(xlCellTypeVisible).Select End Sub

Conviene deducir que si quisiramos seleccionar las celdas que contienen comentarios en un rango concreto y no en toda la hoja deberamos utilizar: Sub Seleccion () On Error Resume Next ' Mtodo 1 Range("A1:G10").SpecialCells(xlCellTypeComments).Select ' Mtodo 2 [A1:G10].SpecialCells(xlCellTypeComments).Select ' Mtodo 3 Range(cells(1,1),cells(10,7)).SpecialCells(xlCellTypeComments).Select End Sub Para seleccionar hasta la ltima celda no vaca:

Sub Seleccion () On Error Resume Next ' Es un buen hbito utilizar comodines como este

' aunque si lo mantenemos activo resultara difcil saber donde podra estar el problema ' Selecciona desde la celda actual hasta la ltima celda no vaca hacia la derecha. Selection.End(xlToRight).Select ' Selecciona desde la celda indicada hasta la ltima celda no vaca hacia abajo. Range("AF10").End(xlDown).Select ' Selecciona desde la celda actual hasta la ltima celda no vaca hacia la izquierda. Selection.End(xlToLeft).Select ' Selecciona desde la celda actual hasta la ltima celda no vaca hacia arriba. Selection.End(xlUp).Select End Sub

Otra forma interesante de seleccionar es con el mtodo Offset, que permite seleccionar un rango de acuerdo a unas coordenadas indicadas. Esta instruccin requiere que le indiquemos un origen y una cantidad de filas y columnas desde el origen (es muy til para seleccionar rangos variables). La sintaxis es: Origen.Offset.(filas, columnas).select. Las filas y nmeros se indican como nmeros. Si estos son positivos el desplazamiento es hacia abajo - derecha respectivamente. Si son negativos el desplazamiento es hacia arriba - izquierda respectivamente. Veamos los siguiente ejemplos para entender mejor la seleccin con Offset: Sub Selecciona () On Error Resume Next ' Selecciona desde la celda actual hasta una celda (fila) hacia abajo. Selection.Offset(1, 0).Select ' La instruccin Selection hace que el origen sea la celda actual ' El 1 indica las filas a desplazarce hacia abajo ' El 0 indica las columnas a desplazarce a la derecha ' Hace lo mismo que la anterior. Poner 0 u omitirlo es lo mismo. Selection.Offset(1).Select ' Selecciona desde la celda actual, + una celda hacia abajo + una celda hacia la derecha. Selection.Offset(1, 1).Select 'Selecciona una columna y/o celda hacia la derecha desde la celda [A1] [A1].Offset(0, 1).Select ' Selecciona desde la celda actual hasta la misma celda selecionada, sin cambio alguno. Selection.Offset().Select ' Desde B1 selecciona una celda hacia arriba y otra a la izquierda [B2].Offset(-1, -1).Select ' Recuerda que al poner un signo negativo el movimiento cambia de direccin ' Si el negativo el movimiento es hacia abajo/derecha. Con el negativo es hacia arriba/iz quierda

' Si desde A1 intentamos seleccionar una celda hacia arriba y otra a la izquierda... [A1].Offset(-1, -1).Select ' Se producira un error, porque como A1 es la primera celda, no podemos seleccionar ' una celda ni a la izquierda ni arriba de A1. De todas formas el error se ignora ya que ' hemos escrito On Error Resume Next al comienzo de la macro. ' Selecciona desde la celda actual hasta una celda hacia la izquierda (si fuera posible) Selection.Offset(-1).Select 'Selecciona desde la celda actual hasta una celda hacia la arriba (si fuera posible) Selection.Offset(, -1).Select ' Desde la celda actual, seleciona todo el cuadrante de celdas contiguas. Selection.CurrentRegion.Select ' Selecciona el cuadrante de celdas selecionadas en bloque una celda ms hacia la derec ha y abajo. Selection.CurrentRegion.Offset(1, 1).Select End Sub Todas las acciones anteriores se pueden concatenar de tal manera que podramos realizar lo siguiente: Sub Seleccion () On Error Resume Next [F7].End(xlDown).Offset(4).End(xlToRight).End(xlDown).Select ' Si F7 estuviera vaco y la columna F tambin, ' tras ejecutar [F7].End(xlDown). nos encontraramos en la ltima fila (F65536) ' Pero no podramos ir a [F7].End(xlDown).Offset(4) pues excel tiene 65536 filas y no 6 5536+X+4 End Sub Con la macro anterior iriamos desde la celda F7 hasta la ltima celda no vaca hacia abajo. Luego nos desplazaramos 4 celdas desde esta nueva posicin hacia abajo.

Luego iramos hasta la ltima celda no vaca hacia la derecha desde esta nueva posicin. Finalmente de nuevo hacia abajo desde esta nueva posicin. Tambin es posible la seleccin de rangos utilizando variables en filas y columnas, utilizando el objeto Cells. Esta forma es muy til cuando queremos utilizar variables en la fila la columna. La sintaxis debe ser: cells(fila,columna) Sub Seleccion() ' Seleccin desde A1 hasta fila N y columna J (asumimos que N y J son variables) range(cells(1,1),cells(N,J)).select End Sub

Estos 3 lneas de cdigo seleccionan el mismo rango de celdas: Sub Seleccionar () Range("A1:E5").Select [A1:E5].Select Range(Cells(1, 1), Cells(5, 5)).Select End Sub

LIC. Manuel Eduardo Gabino Quevedo. magavique@hotmail.com

S-ar putea să vă placă și