Вы находитесь на странице: 1из 61

Crear un formulario (UserForm) en Excel I.

Hace mucho tiempo que estoy buscando el momento para poder subir al blog una explicacin de como crear un UserForm (o sea un formulario) desde el Editor de VBA de Excel, esto es , vamos a generar un formulario personalizado. Lo primero es tener claro cmo ser este formulario, y para no complicar demasiado el asunto, he decidido que nuestro formulario tendr dos ComboBox (tambin conocido como Cuadro combinado) y un TextBox (o Cuadro de texto), as como un CommandButton (o Botn de comando), adems de algunas Labels (o Etiquetas). La idea, para no dispersarme demasiado es crear la estructura de un Formulario en el que aparezca junto a una etiqueta un Cuadro combinado, y debajo de estos una nueva etiqueta junto a un Cuadro de texto, acabando el formulario con un Botn de comando que ejecute una accin. Quedar algo as:

La idea es que mediante uno de los ComboBox podamos elegir una de las hojas del libro activo, mientras que con el segundo Combobox seleccionemos de un listado dado uno de sus elementos, para que una vez aadido un valor en el TextBox, al presionar el CommandButton copie dicho valor en la hoja correspondiente y en el lugar asociado al elemento del segundo Combobox Veamos cual es nuestro Libro de trabajo, sobre el cual va a funcionar nuestro Userform. En este Libro existen tres hojas ('Espaa', 'Mxico' y 'Colombia'),y una ms ('Consolidado'), donde se Consolidan las anteriores; cada hoja (cada pas) tiene un listado de clientes nico para todas ellas, que corresponden a un nmero de unidades de un determinado producto y colocadas en las mismas referencias:

haz click en la imagen Como ya conocemos nuestro Libro de trabajo, podemos empezar a crear el formulario, para ello abriremos el Editor de VBA presionando Alt+F11, y buscaremos el Men Insertar > UserForm:

Al insertar el UserForm se abrir una ventana con los Controles que podemos insertar en nuestro formulario, para esto slo es necesario hacer click sobre el Control elegido (para nosotros 'Etiqueta','Cuadro de texto','Cuadro combinado' y 'Botn de comando', e ir agregndolos en el espacio del formulario. Nos aprovecharemos del punteado (del 'grid') para alinear lo mejor posible, en primera instancia, los distintos controles aadidos, hasta conseguir:

La primera parte est lista, aunque la podemos (y debemos) personalizar ms, ya que las distintas etiquetas y botones seran mucho ms descriptivas si, en lugar de 'label1', 'label2', 'label2' o 'CommandButton1', aparecieran nombres algo ms identificativos a lo que se refiere ('Pas', 'Cliente', 'Unidades' o 'Insertar'). Estas modificaciones las conseguiremos buscando la ventana de Propiedades de cada una de ellas, en concreto la Propiedad Caption:

Una vez cambiada la propiedad Caption para 'label1', 'label2', 'label2' y 'CommandButton1' nuestro formulario tendra este aspecto:

Ya podemos dar por finalizado la primera parte de creacin de nuestro formulario, el aspecto es el que queramos... claro, que ahora queda lo ms importante, darle poder!!!. Para asignarle alguna funcionalidad a este formulario (y que haga lo que queramos), tendremos que aadir cierto cdigo VBA a cada uno de los Controles aadidos, en concreto a los dos ComboBox, al TextBox y al CommandButton, para ello haremos doble click sobre cada uno de ellos, lo que nos abrir una ventana de cdigo donde poder incluir nuestras instrucciones y procedimientos... Lo que dejar para la siguiente entrada.

_______________________________________________________________________________

En una entrada pasada, llamada Ejemplo de formulario de captura en Excel expona un ejemplo con un formulario creado en el IDE de Visual Basic para aplicaciones (vba) y que nos permita capturar datos para una tabla de Excel. Beneficios de los formularios diseados ??
1. 2. 3. 4. Puedes crear cuantos objetos desees, desde Texboxes hasta OptionButtons. T defines las validaciones, evitando que se ingresen tipos de texto no deseados. Adecas el diseo a tu gusto. Se considera una aplicacin, ya que utilizas programacin en vba.

Desventajas de los formularios diseados ?? Realmente no existen desventajas. La complejidad radica en el nivel de validacin que el programador desee darle. Solucin para no programadores ??

Si eres un usuario de nivel intermedio a avanzado, pero an no entras en el mundo de la programacin vba, pero requieres una solucin alterna, la solucin es utilizar el Formulario que ofrece Excel. En versiones anteriores a Excel 2007 el Formulario se poda lanzar desde el men Herramientas > Datos. En la versin 2010 debemos aadir el acceso a la barra de acceso rpido: En dicha barra damos click derecho y elegimos Personalizar la barra de herramientas de acceso rpido. En los comandos disponibles elegimos Formulario y presionamos Agregar >>. La condicin para poder utilizar Formulario es que tengamos una tabla de Excel, y para lanzarlo debemos estar posicionados en cualquier celda de la tabla. El ttulo de cada columna ser el nombre de cada campo que mostrar el formulario. Tabla de ejemplo

Formulario

Basta con presionar el botn Nuevo para que los campos del formulario se vacen y podamos ingresar los datos. Despus presionamos Enter para guardar los datos.

Para

alimentar

con

datos,

un

combobox,

tenemos

varias

opciones:

a) Llenar el combo con los datos de determinado rango, y cuyas filas son siempre las mismas (por ejemplo, con los datos del rango E1:E10, con los datos de B12:B15, etc.). En este caso, sabremos que nuestro rango siempre tiene 10 filas, o 4 filas, o las que sean, pero sabremos que siempre es una cantidad fija en invariable.

b) Llenar el combo con los datos de un rango que puede crecer o decrecer, es decir, que en un momento dado el combo puede tener 3 elementos, y al cabo de cinco segundos puede tener 20 elementos. En este caso, estamos hablando de que nuestro combobox se alimenta de un rango dinmico.

Para insertar un combobox directamente en nuestra hoja de clculo, sin tener que insertarlo en un UserForm, haremos lo siguiente: Desde excel, seleccionaremos Ver, a continuacin Barras de herramientas, y seguidamente Cuadro de controles, tal y como aparece en la figura de la izquierda.

Seleccionaremos el control llamado Cuadro combinado (acercando el ratn a cada control, nos aparecer el nombre de cada uno de ellos). Una vez seleccionado, dibujaremos el combobox en la hoja de clculo, dndole el tamao y posicin que deseemos. Arriba a la izquierda, en la barra de frmulas, nos aparecer su nombre, por defecto ComboBoxY, donde Y es un nmero correlativo, de tal forma que si es nuestro primer combobox, se llamar ComboBox1, si es el 2, se llamar ComboBox2, y as sucesivamente.

Para el primer caso, es decir, si queremos llenar el combobox con los datos de un rango fijo, entonces lo tenemos bien fcil. Imaginemos que tenemos un rango con datos que va de I8 a I10, y queremos que

esos valores almacenados en esas celdas (en las 3 celdas: I8, I9, e I10), sean los que aparezcan en nuestro combobox. Supongamos que estamos trabajando con un combobox que se llama ComboBox3. En ese caso, el cdigo que podramos utilizar sera este (estoy suponiendo que el combobox no est insertado dentro de un UserForm, porque en ese caso, el cdigo sera algo distinto, ya que utilizaramos RowSource, en lugar de usar ListFillRange), y desde la pantalla para VBA, lo pegaramos en la hoja1, que es donde tenemos nuestro combobox, y no en un mdulo:
Private Sub ComboBox3_GotFocus() 'Este cdigo se ejecutar cada vez que 'nos situemos sobre el combobox ComboBox3.ListFillRange = "I8:I10" ComboBox.RowSource End Sub

Si por el contrario, el rango que alimenta el combobox es dinmico, deberemos aadir los elementos al combobox, mediante el mtodo AddItem.

Supongamos por ejemplo que tenemos un libro con 3 hojas y queremos que en nuestro combobox nos aparezcan los nombres de esas tres hojas. En ese caso, el cdigo del combobox (en este caso, nuestro ComboBox1) sera el siguiente (estamos haciendo un combobox directamente sobre nuestra hoja de clculo, y no insertado dentro de un formulario), y que tendramos que pegar desde VBA, en la hoja1, que es donde tenemos nuestro combobox, y no en un mdulo:
Private Sub ComboBox1_GotFocus() 'Esto se producir cuando nos 'situemos sobre el combobox1 '********* Llenamos el combobox1 ********* 'antes quitaremos todo lo que haya en el combobox1 ComboBox1.Clear 'Vamos a llenar dinmicamente el combobox 'con los nombres de las hojas For i = 1 To Sheets.Count 'Aadimos los nombres de las hojas al combobox ComboBox1.AddItem Sheets(i).Name Next End Sub

Con ese cdigo, recorremos los nombres de las hojas, y se cargarn en el combobox, cada vez que ste reciba el foco (cada vez que nos situemos sobre l).

Si deseamos que se ejecute cierta accin, cada vez que elijamos un elemento de la lista de ese ComboBox2, aadiremos el cdigo que proceda, tambin dentro de la hoja1. En nuestro caso, cada elemento corresponde a una hoja de clculo del libro, y eso ser lo que nos aparezca en el desplegable del combobox. Nosotros mostraremos un mensaje, aunque podramos haber hecho cualquier cosa: ir a la hoja en cuestin, eliminar la hoja, copiarla, etc:
Private Sub ComboBox1_Click() 'Mostramos un mensaje MsgBox ("Has hecho clic sobre: " & ComboBox1.List(ComboBox1.ListIndex)) End Sub

Si lo que deseamos es llenar dinmicamente un combobox a travs de los datos que hay en un rango de celdas continuo, entonces haremos lo siguiente (suponemos que nuestro combobox se llama ComboBox2, y que est insertado directamente en la hoja de clculo, y no en un formulario), pegndolo en la hoja1 que es donde tenemos nuestro combobox:
Private Sub combobox2_gotfocus() 'Ocultamos el procedimiento Application.ScreenUpdating = False 'fichamos la celda donde estamos, para volver a ella celda = ActiveCell.Address 'Esto se producir cuando nos 'situemos sobre el combobox2 '********* Llenamos el combobox2 ********* 'antes quitaremos todo lo que haya en el combobox2 ComboBox2.Clear 'Vamos a llenar dinmicamente el combobox 'con los datos de la celda F8 en adelante '(siempre que los datos sean continuos) Range("F8").Select Do While Not IsEmpty(ActiveCell)

'Aadimos los nombres de las hojas al combobox ComboBox2.AddItem ActiveCell 'bajamos una fila ActiveCell.Offset(1, 0).Select Loop 'volvemos donde estbamos Range(celda).Select 'Mostramos el procedimiento Application.ScreenUpdating = True End Sub

Si deseamos que se ejecute cierta accin, cada vez que elijamos un elemento de la lista de ese ComboBox3, aadiremos el cdigo que proceda, tambin dentro de la hoja1. En nuestro caso, cada elemento corresponde a los datos que hay desde F8 en adelante (rango continuo de datos), y eso ser lo que nos aparezca en el desplegable del combobox. Nosotros mostraremos un mensaje, aunque podramos haber hecho cualquier otra cosa:
Private Sub ComboBox2_Click() 'Mostramos un mensaje MsgBox ("Has hecho clic sobre: " & ComboBox1.List(ComboBox2.ListIndex)) End Sub

A modo de resumen, hoy hemos visto varias cosas nuevas: a) Cmo crear un combobox, sin necesidad de insertarlo dentro de un UserForm. b) Cmo llenar un combobox de forma dinmica, sin tener que tocar el cdigo cada vez que cambien las dimensiones del rango de datos que lo alimentan.

amos a crear un UserForm, que es un formulario que nos permitir pedir al

usuario que introduzca una serie de datos para ir creando una tabla en Excel, en forma de base de datos. Supongamos que se trata de la empresa UniLink, Co. Ltd. Su departamento de personal est creando una pequea base de datos sobre Excel. Se trata de una tabla con 4 campos: Nombre, Departamento, Extensin y eMail. Disponemos de un botn incrustado que lanza el proceso y llama al Formulario de entrada de datos.

La macro asociada al botn es la siguiente.

Vamos al Editor de Visual Basic y pedimos insertar un UserForm, para ello utilizamos el men Insertar que se encuentra en el propio Editor de Visual Basic, y luego pulsamos sobre UserForm.

Esto genera el UserForm1, que aparecer como una zona rectangular sobre la que posteriormente iremos introduciendo diferentes elementos del Cuadro de herramientas.

Seguidamente se muestra el Cuadro de Herramientas.

Despus de trabajar un rato sobre nuestro primer UserForm quedar as:

Al ejecutar el UserForm1 veremos lo siguiente.

Disponemos de la ventana de propiedades para ir cambiando algunas, como por ejemplo el rtulo que aparece en la cabecera del UserForm1. Hemos denominado al formulario 'Ficha personal'. Esto se hace modificando la propiedad Caption.

Otra ventana importante es la ventana del Proyecto. Finalmente llegaremos a manejar tres formularios, que se pueden ver en la imagen siguiente como:

UserForm1 UserForm2 UserForm3

Pulsando con el botn derecho del ratn sobre el UserForm1 podemos pedir que se vea el objeto (el propio UserForm1) o que se vea el cdigo asociado a sus botones y dems herramientas de control.

Si pedimos Ver cdigo del UserForm1 obtendremos la siguiente ventana.

Aqu se programan todos los botones y etiquetas que utilizamos en el UserForm1.

En el desplegable de arriba, a la izquierda podemos elegir diferentes elementos como se ve en la siguiente imagen.

En el desplegable de la derecha podemos elegir diferentes eventos.

El UserForm2 es el siguiente.

El cdigo del UserForm2 se muestra en la siguiente imagen.

El UserForm3 es el siguiente.

El cdigo del UserForm3 se muestra en la siguiente imagen.

Publicado porAdolfo Aparicioa las10:54 Etiquetas:Macros,UserForm

10 comentarios:

administradordijo...

muy buena la explicacion, basica para dar inicio a la introduccion a los userform, muuuuuuy buena 16 de junio de 2011 15:34

Oscar Efraindijo... Gracias Ingeniero por el aporte, de una utilidad invaluable. Esta es la base para hacer tablas mas complejas...muy buen inicio.. 16 de junio de 2011 17:23

robidijo... Soy principiante en los userfomr, me gustaria que me ayudaran a contactar a mi correo robiervalencia@gmail.com para aclarar algunas dudas, mi skype ramavaro Gracias 21 de febrero de 2012 21:11

rafaeljosedijo... Muy buena la explicacion pero tengo una pregunta para ti Adolfo, que creo que fue el que publico este blog, como se hace con este formulario para no introducir datos repetidos, cualquier informacion me la puedes hacer llegar a cualquiera de mis correos, que son los siguientes: rafa1122000@hotmail.com ; rafa1122000@gmail.com y bhmasociados@cantv.net Esperando tu respuesta Rafael 20 de abril de 2012 21:18 <img src="http://2.bp.blogspot.com/0_igxYj6iAM/Tso5ltk7PvI/AAAAAAAAEDc/RMDyfam2JMM/s45/DSCN1984_4.JPG " width="35" height="35" class="photo" alt=""> Adolfo Apariciodijo...

Para evitar repetidos consulta este post: Impedir repetidos 21 de abril de 2012 07:47

juanfiallodijo... Buen da Ingeniero Excelente uso de userform y una explicacion por dems agradable y muy entendible. Tengo una inquietud al respecto: si quisiera enviar la informacion a la hoja "basededatos" y a otro ms por decir "registromovimientos", como sera la macro en este caso especfico? Muchas gracias por tu valiosos aporte Juan Fiallo 9 de mayo de 2012 16:20 <img src="//lh3.googleusercontent.com/2iOuTXdGBDk/AAAAAAAAAAI/AAAAAAAAAAk/aUopaKW5Y10/s512-c/photo.jpg" width="35" height="35" class="photo" alt=""> eder navarrodijo... buenos dias ing, muy buena publicacion, mi pregunta. como busco un dato dentro de mi base de datos y que me lo muestre en un userform, luego que lo busque imprimirlo. se puede ? y como lo ago? seria de gran ayuda gracias 12 de agosto de 2012 17:45

Eliparckdijo... Hola Sr. Adolfo Buenas tardes.. me llamo Eli.. tengo un codigo para busqueda que no logro que de un buen resultado.. quiza me puedan ayudar..

--------------------------------Es un formulario donde inserto numero de DNI y lo busca.. hasta ahora lo encuentra.. pero no se porque en lugar de devolverlo en el label que le indico.. me borra los datos.. o los vuelve a "0"... quisiera porfavor me pudieran decir en que me equivoco... y poder corregirme.. CODIGO: Private Sub IBUSCAR_Click() Dim RESPUESTADNI As Single Dim RESPUESTANOMBRES As Double Dim RESPUESTAFNAC As Double Dim RESPUESTASISFOH As Double Dim n As Range Set n = Cells.Find(what:=txtFIND, MatchCase:=False) If n Is Nothing Then MsgBox "La Persona no se encuentra registrada en el Sistema", vbExclamation Else n = RESPUESTADNI n.Offset(0, 1) = RESPUESTANOMBRES n.Offset(0, 4) = RESPUESTAFNAC n.Offset(0, 6) = RESPUESTASISFOH resDNI.Caption = RESPUESTADNI resAPELLIDOS.Caption = RESPUESTANOMBRES resFNAC.Caption = RESPUESTAFNAC resSISFOH.Caption = RESPUESTASISFOH End If End Sub

25 de agosto de 2012 00:38

Laura Vqzdijo... Holaaa mucho gusto estaba viendo que buenaa la explicacin y el ejemplo pero de casualidad !! No Sabe O no tiene un ejemplo de una base de datos de una Joyeria en VBA con Excell con la que me pueda ayudar Gracias :D !! 13 de septiembre de 2012 04:20

Eliparckdijo... no lograron responder mi pregunta.. gracias de todas formas por el gran tutorial, logre aclarar mi duda, y conseguir que funcionara.. sin embargo, mientras mas lo avanzo, mas pesado se vuelve el archivo, y mas problemas me genera, y pues tuve que dejarlo, porque en esa data, necesito estar guardando cambios todo el tiempo y se me malograba el archivo.. gracias de todas formas.. buscare otra manera, quiza puro VB. o con PowerBuilder.. 13 de septiembre de 2012 07:48 Publicar un comentario en la entrada

Publicar

Acceder Registrarse

Buscar

Explore Documentos Libros: ficcinLibros: no ficcinSalud y medicinaFolletos o catlogosDocumentos del gobiernoManuales y guas prcticasRevistas y diariosRecetas y mensMaterial acadmico+ todas las categoras RecientesDestacado Personas AutoresEstudiantesInvestigadoresEditorialesGobierno y entidades sin fines de lucroEmpresasMsicosArtistas y diseadoresProfesores+ todas las categoras Los ms seguidosPopular

You are viewing Scribd in Spanish. Change your language preference here.
Idioma: Espaol Download 14 Go BackComment Link Embed Zoom de 165 Readcast 0inShare
1 PARTE - Teora y Programacin de Macros(Nivel principiante - intermedio) Introduccin Bienvenido al Manual de Macros de Exceluciones. Ests por comenzar una de las experiencias ms fascinantesy atractivas de la Hoja de Clculos Excel.Con las macros podrs sorprender y sorprenderte porque incrementars las prestaciones y el potencial de Excelde forma ilimitada. El nico lmite que tendrs ser tu imaginacin.

Excel y Macros La Hoja de Clculos Excel es una de las herramientas ms poderosas para el tratamiento de datos y su anlisis.Una de las mayores ventajas que posee es la flexibilidad que ofrece y la rapidez con la que podemos construir plantillas y todo tipo de modelos, para diversos usos y aplicaciones.Sin embargo, si realmente quieres "exprimir todo el jugo" a Excel, debers conocer y utilizar una de sus mayoresy ms potentes herramientas: las macros.Si eres usuario principiante de la hoja Excel con este manual dars un salto cuntico y te convertirsrpidamente en todo un experto. Y si eres un usuario avanzado de Excel y ya tienes conocimientos previos demacros, este manual te servir para refrescar algunos conceptos pero tambin te sorprenders con nuevoscdigos y secciones especiales que hemos preparado para ti. Una definicin sencilla Una buena forma de introducirnos al mundo de las macros es con una definicin sencilla y directa. Macro: es un conjunto de instrucciones de cdigo (programado) que permiten realizar una tarea determinadacomo as tambin expandir e incrementar las prestaciones de Excel. Las macros se escriben en lenguaje deprogramacin VBA (Visual Basic for Applications). El Excel ya trae incorporado un editor de VBA por lo que lasmacros se programan dentro del mismo programa Excel.Mucha gente le tiene un poco de miedo a la palabra "programacin". Bueno, si ese es tu caso no debespreocuparte. Hace unos aos nosotros mismos no tenamos la ms mnima idea de programacin Excel. Pero labuena noticia es que con un buen manual (confiamos en que este lo es!) podrs aprender y "tomar vuelo"rpidamente en el mundo de las macros.Vers que es fcil, divertido y que puedes expandir al infinito los lmites de Excel Utilidad de una macro Anteriormente definimos a las macros como algo que nos permite expandir e incrementar las prestaciones de lahoja 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 tareas y procesos que involucran muchos pasos2. Creacin de nuevas funciones a medida (aparte de las que ya posee Excel).3. Creacin de nuevos comandos, complementos y mens.4. Creacin de completas aplicaciones a medida.Como queda en claro, con las macros podemos automatizar y crear. Veamos un poco ms en detalle estas 4reas donde aplicaremos las macros.Automatizacin de procesos: supongamos que todos los das debemos trabajar en nuestro libro Excel en el cualdebemos seleccionar un rango, centrarlo, cambiarle la fuente, poner la fuente en cursiva, aplicarle negrita yfinalmente aplicarle bordes a toda la seleccin. Estas 6 acciones las hacemos manualmente y no parecenmuchas, pero que tal si hay que hacer esto en repetidas ocasiones y todos los das? Una macro nos permiteejecutar los 6 pasos automticamente, tan solo presionando un botn o una tecla. Las tareas ideales paraautomatizar son aquellas que se hacen de forma repetida e involucran muchos pasos, por ejemplo: imprimir informes, configurar la vista de la hoja, actualizar datos de tablas dinmicas, etc...Creacin de funciones a medida: las funciones y frmulas Excel son quizs la esencia de la hoja de clculos (sino se pudieran utilizar funciones y frmulas no habra clculos!). Excel trae incorporada unas 330 funcionesestndar las cuales se pueden utilizar en forma aislada o en forma combinada (anidadas). Sin embargo suelesuceder que justo la funcin que necesitamos no existe. Nuevamente, las macros vienen a nuestra salvacin.Podemos programar funciones a medida que hagan exactamente lo que nosotros queremos. Y esas funcionesse comportarn igual que las de Excel (aparecern en el men de funciones en la categora que nosotrosindiquemos, tendrn sus respectivos argumentos, etc.)Creacin de nuevos comandos, complementos y mens: Excel trae una gran cantidad de comandos y menspredefinidos que nos asisten para las operaciones ms habituales. Las macros nos permiten crear nuestrospropios comandos y mens personalizados, e incorporarlos al Excel. La utilidad de los mismos depende tan solode nuestras necesidades. Los complementos Excel tambin estn creados con macros. Si ves en el menHerramientas > Complementos vers una lista de los que tienes instalado en tu Excel. Los mismos suelen ser distribuidos de forma gratuita o tambin se compran. Su utilidad reside en agregar alguna funcionalidad extra alExcel.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. Ellmite solo es tu imaginacin. Una aplicacin Excel consiste en algo ms que una simple plantilla con datos yfrmulas. Una aplicacin

Excel es un verdadero programa de software con una serie de caractersticas que lohacen utilizable por cualquier usuario sin que el mismo tenga que entender la lgica "Exceliana" que hay por detrs. Objetos, Propiedades y Mtodos (OPM) Cuando hablamos de macros hablamos de Objetos, Propiedades y Mtodos (OPM). Estos son los 3 conceptosgenerales ms importantes que debes conocer a la hora de programar las macros. De momentos solo tedaremos una sencilla definicin y luego iremos profundizando ms en ellos.Hay un ejemplo muy prctico para comprender lo que son los Objetos, Propiedades y Mtodos (OPM).Supongamos que tenemos una canasta con frutas. Cuales seran los OPM de la misma?Objetos: los objetos de la canasta de frutas seran las mismas frutas (manzanas, naranjas, peras).Propiedades: las propiedades seran las caractersticas de las frutas (color, olor, sabor, textura). Mtodos: finalmente los mtodos son las acciones que podramos ejercer sobre las frutas (comprarlas,venderlas, comerlas, almacenarlas, limpiarlas, quitarles la piel,).Pasemos ahora a ver un sencillo ejemplo de algunos OPM de Excel.Objetos: prcticamente cada cosa que veas en Excel es un objeto. Ejemplos de objetos son: un libro Excel, unahoja, un rango, una celda, un men, un grfico, una tabla dinmica, un cuadro de dilogo, las etiquetas de hojas,las columnas, las filas, etc. En fin, cada partecita de Excel es un objeto. Un objeto es algo que puedes ver eidentificar con un nombre.Propiedades: las propiedades son las caractersticas de los objetos. Por ejemplo, para el objeto "celda" algunasde sus propiedades seran: alto, ancho, color, bloqueada o desbloqueada, vaca, con un nmero o con unafrmula, etc. Por ejemplo para el objeto "hoja" algunas de sus propiedades seran: visible u oculta, con o sinlneas de divisin, con o sin barras de desplazamiento vertical y horizontal, etc.Mtodos: un mtodo es una accin que podemos realizar sobre el objeto o una de sus propiedades. Por ejemplosobre el objeto "hoja" podemos: activar, mover, copiar o borrar.De momento estas definiciones son suficientes para empezar a entender algunos conceptos. Recurdalas bienporque las usaremos en todo el manual.En la medida que adquieras mayores conocimientos sobre como programar macros irs manejando yconociendo cada vez ms objetos, con sus propiedades y sus mtodos. En definitiva, de eso se trata programar una macro: conocer el nombre del objeto, conocer el nombre de alguna propiedad del mismo que quierasmodificar y tambin conocer el nombre de algn mtodo que desees aplicarle. Lenguaje VBA Recuerda que la programacin de macros se hace a travs del lenguaje VBA (Visual Basic for Applications)desde el editor VBA que trae incorporado Excel. Este tipo de programacin tambin se conoce como"Programacin Orientada a Objetos" (OOP, Objects Oriented Programming). La Programacin orientada aObjetos nos permite trabajar sobre los objetos propios de Excel como as tambin crear nuestros propios objetos.Esto se relaciona con lo que te comentbamos en la seccin anterior sobre Objetos, Propiedades y Mtodos.Hablar de macros, lenguaje VBA y OPM es lo mismo. El lenguaje VBA es muy fcil de entender y siempre gira entorno a seleccionar los objetos, cambiar sus propiedades y/o ejecutarles distintos mtodos. La nicaparticularidad es que el lenguaje VBA solo est en ingls. Sin embargo, y para que no te desalientes, conocemosmuchsimos programadores de macros que prcticamente no saben ingls! Esto es as porque solo hay queconocer la palabra en ingls para cada objeto, propiedad y mtodo. Veamos un sencillo ejemplo de algunosobjetos de Excel y su denominacin en ingls, el idioma utilizado por las macros:Ejemplos de Objetos VBA (entre parntesis su significado en espaol)Cell (celda)Range (rango)Worksheet (hoja)Workbook (libro)Ejemplos de Propiedades VBA (entre parntesis su significado en espaol)Value (valor)Color (color)Format (formato)Ejemplos de Mtodos VBA (entre parntesis su significado en espaol)Copy (copiar)Protect (proteger)Delete (borrar) En la medida que avances con la lectura de este manual te irs familiarizando con la denominacin de losdistintos objetos, propiedades y mtodos. El lenguaje VBA tiene miles de OPM, y existe una forma muy prcticade conocerlos todos que es con la grabadora de macros, tema que trataremos ms adelante.Aprender macros es mucho ms fcil de lo que tu te imaginas. Es cierto que hay macros muy complicadas querequieren un conocimiento muy avanzado. Pero es un lenguaje fcil y muy intuitivo. Adems Excel posee unagrabadora de macros que las escribe de forma automtica. Luego nosotros podemos retocarlas a gusto. Teaseguramos que en cuanto termines este manual estars escribiendo tus

propias macros y te sorprenders lofcil que es seguir aprendiendo y profundizando tus conocimientos. Nosotros te daremos las herramientas paraque lo consigas! Como comenzar Antes de comenzar a programar macros es necesario que conozcas la barra de herramientas VBA y las distintasformas de acceder al editor de macros, que es la herramienta donde escribirs el cdigo de las mismas.En las secciones siguientes te ensearemos ambos conceptos.Barra de Herramientas VBAEl primer paso para empezar a programar macros es familiarizarnos con las herramientas que nos ofrece Excelpara programarlas.Excel posee una Barra de Herramientas de Macros o VBA. Puedes acceder a la misma desde el menHerramientas > Macros. Dicho men se ve como en la fotografa a continuacin (fjate que tambin se indican lascombinaciones de teclas para acceder a dichas opciones).Tambin tienes la opcin de dejar siempre visible dicha barra de herramientas. Puedes hacer esto desde elmen Ver > Barras de Herramientas > Visual Basic. Vers como aparece una nueva barra de herramientas demacros. Puedes ubicar esta barra de herramientas donde te sea ms cmodo. Editor VBA El Editor de Visual Basic es la aplicacin que trae Excel desde donde se escriben y guardan las macros. Tienes 3formas de acceder al editor:A. Desde el men Herramientas > Macros > Editor de Visual BasicB. Desde el botn Editor de Visual Basic de la Barra de Herramientas Visual Basic.C. 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)Consejo: cualquiera de las 3 formas te abrir el editor de visual basic (nuestra forma preferida es la nmero 3,dado que es ms rpido presionar ALT + F11 que abrir los mens desde el ratn).Una vez que hayas accedido al editor de visual basic vers algo similar a la figura siguiente (no importa si no loves estrictamente similar, eso depender de las ventanas que tengas visibles y ocultas). El editor contiene 3 ventanas principales: la Ventana Proyecto (parte izquierda superior), la Ventana de Cdigo(parte derecha) y la Ventana Propiedades (parte izquierda inferior).La 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 ocomplemento Excel. Veamos el caso de VBAProject (Libro1). Simplemente significa que tienes abierto un libroExcel llamado Libro 1. Luego cuelgan 3 carpetas ms: Hoja1 (Hoja1), ThisWorkbook y Modulo (no importa si vestodos estos elementos ahora, luego te ensearemos como activarlos). Estas carpetas es donde habitan lasmacros. 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 nohemos escrito ninguna macro todava veremos la hoja en blanco. Recuerda bien estas dos ventanas, ya que lasusaremos 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 quete indicamos anteriormente: la Ventana Proyecto VBA Project y la Ventana de Cdigo donde se escribe elcdigo de las macros. La Ventana de Propiedades la dejaremos para ms adelante porque de momento no nosinteresa.Recuerda: presionando las teclas ALT+F11 puedes ir desde Excel al Editor o desde el Editor al Excel de formaalterna (debes mantener presionada la tecla ALT y presionar F11 repetidas veces, vers como pasas de Excel aleditor y viceversa).Si ests en el editor y quieres regresar a la hoja Excel tambin puedes utilizar el cono de Excel que se encuentraen el men superior del editor (primer cono de la izquierda, con la X de Excel). Escribir una Macro A la hora de crear una nueva macro existen 3 mtodos.A. Escribirla manualmente B. Utilizar la grabadora de macrosC. Combinacin de los 2 mtodos anteriores(Grabarla y luego retocarla manualmente)En cada situacin utilizars un mtodo distinto. Por ejemplo, las macros muy sencillas las puedes escribir manualmente porque tienen pocas lneas y ya las conoces. En otros casos la podrs crear con la grabadora demacros y olvidarte del cdigo VBA. Sin embargo, en la medida que progreses con las macros vers que elmtodo ms utilizado

suele ser el nmero 3 mediante el cual primero grabars y luego hars ajustes manualesen el cdigo para hacerlo ms eficiente y que se ejecute ms rpido.En este captulo vamos a ver como se escribe una macro manualmente (mtodo 1) Mi primera Macro Vamos a escribir manualmente nuestra primera macro ahora!. Es una macro muy sencilla, pero te servir paraorientarte en el Editor de Visual Basic y reconocer los pasos requeridos para hacer una macro.Objetivo de nuestra macroEscribir el valor 1.500 en la celda A1 de la hoja Excel.que significa esto? Que comenzaremos con una hoja Excel vaca y luego de ejecutar la macro vers queaparece el valor 1.500 en la celda A1. El valor lo pondr automticamente la macro cuando nosotros se loindiquemos.Suena demasiado simple, cierto? Sin embargo es suficiente como para comenzar y que aprendas generalidadesque luego aplicars en todas tus macros. Como es una macro sencilla vamos a escribirla manualmente para quecomiences a empaparte del editor de macros y sus partes. Escribir la macro Bueno, es importante que recuerdes el objetivo: esta macro escribir automticamente el valor 1.500 en la celdaA1 de tu hoja Excel. Los pasos que debes seguir son los siguientes:1. Prepara el Editor de Visual Basic1.1 Crea un nuevo libro Excel y gurdalo con el nombre Libro 1.1.2 Abre el editor de Visual Basic con las teclas ALT+F11.1.3 Doble clic en VBAProject (Libro1) para ver las carpetas.1.4 Doble clic en Hoja1 (Hoja1) para empezar a escribir el cdigo de la macro. 2. Escribiros la macro2.1 En la ventana de macros escribe textualmente el siguiente cdigo:' Esta macro escribe el valor 1500 en la celda A1Sub MiPrimeraMacro()Range("A1").Value=1500End Sub2.2 Si la macro est bien copiada vers que la primera lnea queda en color verde y la segunda y cuarta en azul.Estos colores los asigna automticamente el editor y te lo explicaremos ms adelante.De momento no te preocupes por el cdigo escrito. Ms adelante te ensearemos a interpretarlo. Ahora que yatienes la macro escrita pasemos a la siguiente seccin para ver como ejecutarla. Ejecutar la macro Si ya tienes escrita la macro en el editor, ahora podrs que ejecutarla, o sea hacer que funcione. Tienes 2 formasde hacer esto:A. Ejecutar la macro desde el mismo Editor: si te posicionas en cualquiera de las lneas de cdigo de la macro yluego presionas la tecla F5 la macro se ejecutar (para ver el resultado puedes volver a la hoja Excel conALT+F11).B. Ejecutar la macro desde Excel: otra forma de ejecutar la macro es desde el mismo Excel. Puedes volver a lahoja Excel con ALT+F11 e ir al men Herramientas > Macros > Macro. Se abrir un cuadro que contiene una listacon 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 exactamente lo quequeramos hacer con nuestra macro, as que tarea cumplida. Hemos escrito un valor en una celda Excel desdeuna macro ! Comprender la macro Recuerda que el propsito de nuestra primera macro fue escribir el valor 1500 en la celda A1 de Excel. La macroya fue escrita y ejecutada en los pasos anteriores. Ahora vamos a analizar cada una de las lneas de su cdigo.Recordemos como se vea nuestra macro escrita en el editor:* los colores del cdigo los asign automticamente el editor)* la primera lnea que dice Option Explicit la vamos a ignorar de momentoEsta macro tiene 4 lneas de cdigo, por eso es tan sencilla (cuando termines este manual seguro podrs escribir macros de cientos o quizs miles de lneas de cdigo!). Veamos que significa cada lnea. Las explicaciones quevienen a continuacin suelen aplicarse a todas las macros, as que es importante que las comprendas.1 lnea de cdigo: el comentario' Esta macro escribe el 1500 en la celda C10Sub MiPrimeraMacro()Range("A1").Value = 1500End Sub La primera lnea de una macro suele ser un comentario que hacemos sobre la misma, donde podemos poner loque queramos. Los comentarios se pueden poner en cualquier lnea y cantidad. En la medida que nuestras macros crecen los comentarios se vuelven muy tiles para nuestra propiareferencia. Un comentario siempre comienza por un signo '. Si tipeamos dicho signo seguido de un texto y luego damos alEnter, el editor detecta que es un comentario y lo pinta verde automticamente. Un comentario no tiene efectos sobre la macro, es solo para nuestra referencia.Recuerda: los comentarios son muy tiles para comentar

nuestras macros y siempre deben comenzar con elsigno '. Si has puesto bien dicho signo al comienzo de la lnea, el editor detecta automticamente que es uncomentario y lo pinta de verde luego de darle a Enter.2 lnea de Cdigo: el nombre de la macro' Esta macro escribe el 1500 en la celda C10Sub MiPrimeraMacro()Range("A1").Value = 1500End Sub Aqu es donde comienza realmente la macro. Toda macro siempre comienza con la palabra Sub, luego un espacio, luego un nombre (sin espaciosintermedios) y finalmente los parntesis (). Ms adelante veremos algunas excepciones a esto. Este nombre luego lo utilizaremos para ejecutar la macro. Luego de escribir esta lnea y darle a enter el Editor detectar que es el nombre de la macro y pondr lapalabra Sub en color azul de forma automtica.Recuerda: el nombre de la macro siempre comienza con la palabra Sub, luego un espacio, luego el nombre quequieras ponerle a tu macro (SIN espacios intermedios) y finalmente los parntesis.3 lnea de cdigo: la instruccin de la macro' Esta macro escribe el 1500 en la celda C10Sub MiPrimeraMacro()Range("A1").Value = 1500End Sub Esta es la instruccin principal de nuestra macro (el corazn de la macro). Con este cdigo logramos nuestroobjetivo (que la macro escriba el valor 1500 en la celda C10). Recuerdas el comienzo del manual donde hablbamos de Objetos (partes de Excel), Propiedades(caractersticas) y Mtodos (acciones)?. Aqu tenemos un ejemplo al respecto. Programar macros siempreconsiste en lo mismo: primero hacer referencia al objeto y luego asignarle una propiedad o mtodo. En nuestroejemplo:Range("A1").Value = 1500Range("A1"). es el objetoValue es la propiedad= 1500 es el valor que le damos a la propiedad Esta lnea de cdigo se interpreta as: a la celda C10 de Excel asignarle el valor 1500.Recuerda: siempre debes hacer referencia a un objeto para luego asignarle propiedades o mtodos.4 lnea de cdigo: el fin de la macro' Esta macro escribe el 1500 en la celda C10Sub MiPrimeraMacro()Range("A1").Value = 1500End Sub Una macro siempre termina con la instruccin End Sub. Luego de escribir esto y darle a Enter, el Editor detectar que es el fin de la macro y lo pondr en color azul deforma automtica.Recuerda: siempre debes finalizar tu macro con la instruccin End Sub. Resumen Nuestro objetivo fue crear una macro que escribiera el valor 1500 en la celda A1 de la Hoja1 de Excel. Como erauna macro sencilla decidimos escribir el cdigo manualmente. Vamos a resumir todos los pasos que hicimoshasta 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+F113. 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 A1Sub MiPrimeraMacro()Range("A1").Value = 1500End SubFinalmente, todo qued como se aprecia en la foto...5. Finalmente ejecutamos la macro desde el men de Excel Herramientas > Macros > Macro y seleccionandoMiPrimeraMacro desde la lista de nombres y dando clic a Aceptar. 6. El resultado es que en la celda A1 se vuelve a escribir el valor 1500, que fue justamente lo que le indicamos ala macro que haga.Recuerda: en estos 5 pasos hemos visto rpidamente como escribir una macro sencilla y ejecutarla. En lassecciones siguientes iremos profundizando ms estos temas, sobre todo el referente el cdigo de la macro. OPM de la macro Recordemos nuevamente el cdigo de nuestra primera macro:' Esta macro escribe el valor 1500 en la celda A1Sub MiPrimeraMacro()Range("A1").Value = 1500End SubAhora recordemos brevemente el significado de cada lnea de cdigo:1 lnea: es el comentario de la macro (siempre comienza con el signo ')2 lnea: es el nombre de la macro (siempre se comienza con Sub)3 lnea: es la instruccin principal de la macro4 lnea: es el fin de la macro (siempre termina con End Sub)La mayora de las macros llevan una estructura similar, aunque hay algunas excepciones.El comentario que aparece al comienzo lo ponemos a gusto y sirve para recordarnos lo que queremos hacer conesa macro. El comentario siempre comienza con el signo ' y no afecta para nada a la macro. Es un simple texto.El nombre lo pondremos a gusto, anteponiendo la palabra Sub los parntesis de apertura y cierre al final.Conviene dar un nombre que nos indique que hace la macro.La instruccin principal la veremos un par de prrafos ms abajo. Este cdigo siempre vara segn lo que sequiera hacer con la macro en cuestin.El fin siempre es igual, con la frase End Sub.As que solo nos queda explicar con ms detalle la instruccin principal de la macro. En general, las lneas decdigo ms importantes y donde debemos usar nuestros conocimientos de objetos, propiedades y mtodos sonlas que se

encuentran entre las instrucciones Sub y End Sub. Es all donde realmente "se cocina" todo. Ese es elverdadero corazn de la macro.Al comienzo del manual te mencionbamos que las macros consisten en operar sobre un Objeto, ya seaalterando una de sus Propiedades o ejecutando un Mtodo sobre el mismo.Recuerda: para aprender a programar macros debes aprender cuales son los objetos, propiedades y mtodos deExcel. No olvides la definicin de los mismos:Objeto- Es una parte de Excel - Por ej. una celda de Excel, una hoja, un grfico.Propiedad- Es una caracterstica del objeto- Por ej. el valor de la celda, el nombre de una hoja, el color de un grfico.Mtodo > es una accin sobre el objeto > por ej. copiar la celda, borrar la hoja, agrandar el grfico.Como te comentbamos al comienzo, la lnea de cdigo ms importante de nuestra macros es:Range("A1").Value = 1500Ahora ya estamos en condiciones de identificar mejor los objetos, propiedades y mtodos de la misma.Range("A1") es el objeto, recuerda que siempre que hacemos macros primero debemos indicar el objeto Excelsobre el que vamos a operar. En este caso usamos el objeto Range (Rango). El objeto Range es el que se utilizapara hacer referencia a una celda o rango Excel. Luego se escribe la referencia de la celda Excel (letra decolumna y nmero de fila) entre comillas y parntesis. Ya le hemos indicado a la macro que deber ocuparse dela celda A1 (objeto). Ahora debemos indicarle que hacer con ella (propiedad o mtodo).Value = 1500 es la propiedad, que le asignaremos al objeto. Siempre empezamos por el objeto para luegoasignarle una propiedad o mtodo. En este caso usamos la propiedad Value (Valor) que nos permite asignar unvalor al objeto range, anteponiendo un signo igual y luego el valor que deseamos.Esta macro es muy sencilla y no posee ningn mtodo.Hasta aqu es suficiente. Hemos visto el ejemplo de un objeto y una de sus propiedades. En la medida que vayasavanzando con la lectura de este manual irs aprendiendo nuevos objetos, propiedades y mtodos. Grabar una Macro A la hora de crear una nueva macro existen 3 mtodos.A. Escribirla manualmenteB. Utilizar la grabadora de macrosC. Combinacin de los 2 mtodos anteriores(grabarla y luego retocarla manualmente)En cada situacin utilizars un mtodo distinto. Por ejemplo, las macros muy sencillas las puedes escribir manualmente porque tienen pocas lneas y ya las conoces. En otros casos la podrs crear con la grabadora demacros y olvidarte del cdigo VBA. Sin embargo, en la medida que progreses con las macros vers que elmtodo ms utilizado suele ser el nmero 3 mediante el cual primero grabars y luego hars ajustes manualesen el cdigo para hacerlo ms eficiente y que se ejecute ms rpido.En el captulo anterior vimos como se escriba una macro de forma manual. Ahora veremos como utilizar lagrabadora de macros. Como te mencionbamos antes, la ventaja de la grabadora es que prcticamente norequiere conocimientos de programacin y cdigo VBA. Simplemente encendemos la grabadora, ejecutamos lasacciones y listo. La grabadora genera el cdigo automticamente ! Mi primera Macro Vamos a grabar nuestra primera macro ahora!. Es la misma macro que hicimos en el captulo anterior, pero estavez la haremos con la grabadora de macros. Objetivo de nuestra macroEscribir el valor 1.500 en la celda A1 de tu hoja Excel.que significa esto? Que comenzaremos con una hoja Excel vaca y luego de ejecutar la macro vers queaparece el valor 1.500 en la celda A1. El valor lo pondr automticamente la macro cuando nosotros se loindiquemos.Suena demasiado simple, cierto? Sin embargo es suficiente como para comprender la metodologa defuncionamiento de la grabadora de macros. Grabando la macro Excel trae incorporada una grabadora de macros. La misma funciona de forma muy fcil. Encendemos lagrabadora, ejecutamos las acciones que nos interesan sobre la hoja Excel, paramos la grabadora ylisto!. Excelescribe de forma automtica el cdigo VBA de la macro.Ahora podemos hacer un experimento muy interesante. Repetir nuestra primera macro, pero esta vez hacindolacon la grabadora de macros. Sigue los pasos a continuacin:1. Vamos a grabar la macro1.1 Ve al men Herramientas > Macros1.2 Selecciona la opcin Grabar nueva macro1.3 Se abrir un cuadro de dilogo como el que se muestra a continuacin.1.4 Borra donde dice Macro1 y 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. Cuando comienza a grabar la macro activa una nueva barra de macros como la que se muestra en la foto. Elbotn 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 comola siguiente:* Podrs observar que el cdigo que se grab es distinto que el cdigo que habamos escrito cuando hicimos lamacro manualmente. Ms adelante en este mismo captulo analizaremos y explicaremos las diferencias.4. Vamos a probar la macro4.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 > Macros4.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. Resumen Nuestro objetivo fue grabar una macro que escribiera el valor 1500 en la celda A1 de la Hoja1 de Excel. Lospasos que seguimos para utilizar la grabadora de macros fueron:1. Creamos un nuevo libro Excel y lo guardamos con el nombre Libro1.2. Desde el men Herramientas > Macros seleccionamos la opcin Grabar nueva macro y la macro comenz agrabar.3. En la celda A1 del Libro 1 escribimos el valor 1500.4. Detuvimos la grabacin desde el men Herramientas > Macros > Detener grabacin. 5. Borramos la celda A1 (qued con el valor 1500 cuando grabamos la macro).6. Ejecutamos la macro desde el men Herramientas > Macro > Macros. Seleccionamos de la listaMiPrimeraMacro y luego Aceptar.7. El resultado es que en la celda A1 se vuelve a escribir el valor 1500, que fue justamente lo que grabamos conla macro.Recuerda: al utilizar la grabadora no accedemos en ningn momento al editor de macros ni tenemos que escribir cdigo. Todo lo hace automticamente la grabadora. Escrita vs. Grabada Llegados a este punto, interesa ver las diferencias entre la macro escrita manualmente y la grabadaautomticamente.Qu fue lo que hicimos hasta aqu? Hicimos una macro que escribi el valor 1500 en la celda A1 de la Hoja1 deExcel. Pero recuerda que hicimos esta macro 2 veces:A. la primera vez la escribimos manualmenteB. la segunda vez la grabamos directamente con la grabadora de macros.Denominemos Macro Escrita a la primera y Macro Grabada a la segunda para diferenciarlas. Aunque alejecutarlas el resultado final fue el mismo, hay algunas diferencias que debemos estudiar.A continuacin veamos una tabla comparativa de ambos mtodos utilizados para crear la macro que nospermitir revisar el proceso y obtener unas valiosas conclusiones. Las diferencias son analizadas a continuacin:Macro Escrita Macro Grabada1. Como la hicimos 1. Como la hicimos1.1 Creamos un Libro Excel llamado Libro1. 1.1 Utilizamos el mismo Libro1.xls1.2 Abrimos el editor de macros conALT+F11.1.2 Encendimos la grabadora de macrosdesde el men Herramientas > Macro >Grabar nueva macro1.3 En VBAProject (Libro1) hicimos doble clicen Hoja1 (Hoja1)1.3 Nos posicionamos en la celda A1 de laHoja1 y escribimos el valor 1500.1.4 Escribimos el cdigo de la macro.1.4 Detuvimos la grabacin de la macro desdeel men Herramientas > Macro > Detener grabacin.2. El cdigo de la macro 2. El cdigo de la macro2.1 Con ALT+F11 accedemos al editor demacros.2.1 Con ALT+F11 accedemos al editor demacros.2.2 El cdigo que escribimos manualmente fueel siguiente:2.2 El cdigo que se grab automticamentefue el siguiente:Esta macro escribe el valor 1500 en la celdaA1 Sub MiPrimeraMacro() Sub MiPrimeraMacro()Range("A1").Value=1500 MiPrimeraMacro MacroEnd Sub Esta macro escribe el valor 1500 en la celda A1Range("A1").SelectActiveCell.FormulaR1C1 = "1500"Range("A2").SelectEnd SubRecuerda que este cdigo qued en Recuerda que este cdigo qued enVBAProject (Libro1) > Hoja1 (Hoja1) VBAProject (Libro1) > Mdulo13. Ejecucin de la macro 3. Ejecucin de la macroPosicionados sobre cualquier lnea del cdigoanterior presionamos F5. Luego con ALT+F11volvimos a la hoja de Excel y comprobamosque en la celda A1 de la Hoja1 se escribi elvalor 1500.Para no confundirnos primero borramos el valor 1500 de la celda A1, Hoja1 (lo habamosescrito para grabar la macro).

Luegoejecutamos la macro desde el menHerramientas > Macro > Macros.Seleccionamos de la lista MiPrimeraMacro yluego Aceptar. De esta forma se volvi aescribir el valor 1500 en la celda A1 de la Hoja1.En la seccin siguiente analizamos el porqu de estas diferencias. Diferencias En nuestro ejemplo, tanto la Macro Escrita como la Macro Grabada logran la misma funcin de escribir el valor 1500 en la celda A1 de la Hoja1. Sin embargo, si te has fijado bien en los 3 puntos de la tabla de la seccinanterior vers que hay algunas diferencias. El anlisis de las mismas nos permitir ver las ventajas y desventajasde escribir una macro de forma manual o de grabarla con la grabadora de macros.Volvamos a poner las tablas comparativas, pero esta vez comentando las diferencias:Macro Escrita Macro Grabada1. Como la hicimos 1. Como la hicimosDesventaja: escribir una macro manualmenteimplica conocer los objetos y propiedades deExcel. En este caso tenamos que saber previamente que exista un objeto Range yuna propiedad Value, y tambin debamossaber como era la sintaxis de los mismos >Range("A1").Value=1500. Para unprincipiante esto puede ser difcil de saber Ventaja: no es necesario conocer cdigode programacin. La grabadora lo escribeautomticamente.2. El cdigo de la macro 2. El cdigo de la macroVentaja: cuando sabemos escribir macros,podemos hacer el cdigo ms eficiente yescribir solo las lneas que necesitamos.Recordemos el cdigo que escribimosmanualmente:Desventaja: generalmente, cuando utilizamosla grabadora, el cdigo que se escribeautomticamente suele ser redundante yexcesivo. Recordemos el cdigo que grab lamacro: Esta macro escribe 1500 en A1Sub MiPrimeraMacro()Range("A1").Value=1500End SubSub MiPrimeraMacro()' Esta macro escribe 1500 en A1Range("A1").SelectActiveCell.FormulaR1C1 = "1500"Range("A2").SelectEnd SubLa macro est escrita de forma sinttica. Leindicamos que en la celda A1 escriba el valor 1500. Solo nos llev 1 lnea de cdigo (solocontamos las que estn entre Sub y EndSub)La macro grab nuestras acciones peroutiliz 3 lneas de cdigo (solo contamos lasque estn entre Sub y End Sub). Vemos queel cdigo es ms largo y que aparecennuevos objetos, propiedades y mtodos. Lamacro se interpreta as:Primero seleccionar el rango A1. Luego en lacelda activa introducir una frmula con elvalor 1500. Finalmente, como presionamosEnter, se posiciona en la celda siguiente, laA2.El objetivo fue logrado, pero la macro generms cdigo del necesario.El mtodo de la macro grabada parece el preferible, porque lo hace todo de forma automtica y nos evita tener que escribir un cdigo que en esta etapa nos resulta desconocido. Sin embargo, en la seccin siguiente veremosque el mtodo a utilizar depender de cada situacin particular... Conclusin En las 2 secciones anteriores vimos dos tablas comparativas de los 2 mtodos que tenemos para crear unamacro:1. El mtodo de escribir manualmente la macro2. El mtodo de grabar la macro automticamente.En la primera tabla se mostr el proceso de elaborar cada una y en la segunda tabla se mostraron lasdiferencias, con sus ventajas y desventajas.A modo de conclusin podemos decir que la diferencia fundamental est en el cdigo generado. Aunque lasmacros grabadas son ms sencillas porque no requieren conocer el cdigo necesario (objetos, propiedades ymtodos) sin embargo la cantidad de cdigo que generan suele ser ms largo (ms lneas).A pesar que el resultado final es el mismo, un cdigo con ms lneas siempre es menos deseable que un cdigocon menos lneas. Esto es as porque un cdigo largo es ms difcil de controlar y de comprender y a la largapuede ser ms propenso a que genere errores o ralentice la velocidad de ejecucin de la macro.Recordemos los dos cdigos generados (omitimos los comentarios del comienzo del cdigo). Recuerda que loque nos interesa son las lneas entre Sub y End Sub. Ambas macros logran su cometido de escribir el valor 1500en la celda A1. Sin embargo fjate que en la macro escrita solo utilizamos una lnea de cdigo mientras que lamacro grabada gener 3 lneas de cdigo (solo consideramos las lneas entre Sub y End Sub). Macro escrita Sub MiPrimeraMacro()Range("A1").Value=1500End Sub Como conocamos el objeto y la propiedad fuimos directamente al grano. Al objeto Rango A1 le aplicamos lapropiedad Valor 1500. Solo una lnea de cdigo. Rpido y certero.

Macro grabada Sub MiPrimeraMacro()Range("A1").SelectActiveCell.FormulaR1C1 = "1500"Range("A2").SelectEnd SubLa macro grabada grab todas nuestras acciones en 3 lneas de cdigo. Cuando seleccionamos el rango A1 segener la 1 lnea de cdigo, cuando escribimos el valor 1500 se gener la 2 lnea de cdigo y cuando dimos al"enter" luego de escribir el valor 1500 se gener la 3 lnea de cdigo.En la macro grabada vers un nuevo objeto, ActiveCell (celda activa) y una nueva propiedad del mismo,FormulaR1C1 (frmula de la celda).Nuestra recomendacin respecto a las macros escritas y grabadas ya te la dimos al comienzo del captulo.Lo mejor es escribir las macros manualmente y utilizar la grabadora en aquellos casos donde no tenemos ni ideasobre cul es el cdigo que necesitamos o como es el nombre del objeto, propiedad o mtodo.Lo usual es que si ests comenzando solo utilizars la grabadora, y en la medida que vas conociendo el lenguajeVBA, con sus distintos objetos, propiedades y mtodos ya te irs animando a escribir tus propias macros. Sinembargo, como los OPM son tantos, siempre se requiere de la grabadora para descubrirlos.A esta altura tu puedes pensar que todava no tienes idea de ningn cdigo. Sin embargo hemos preparado estemanual para hacerte la vida lo ms fcil posible. La buena noticia es que este manual tiene una 2 parte con unagran cantidad de macros ya escritas.As que nuestra recomendacin final es que primero leas la 1 parte de este manual (la teora), por lo menos unpar de veces, hasta que te encuentres cmodo con los conceptos. Luego ya podrs leer la 2 parte del manual,que tiene innumerable cantidad de macros ya escritas, comentadas y listas para que puedas copiar, pegar yutilizar en tus desarrollos Excel.Como instancia final, esperamos que con lo que has aprendido aqu junto con la ayuda de la grabadora demacros, ya puedas crear tus propios cdigos, aparte de los que nosotros te facilitamos en la 2 parte del manual. Ejemplos de Macros Recuerdas el cdigo que habamos escrito para nuestra primera macro? El objetivo que perseguamos eraescribir el valor 1500 en la celda A1 de la hoja1. Repasemos rpidamente todo lo que habamos hecho paraescribir la macro: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 = 1500End Sub5. Finalmente ejecutamos la macro desde el men de Excel Herramientas > Macros > Macro y luegoseleccionando MiPrimeraMacro desde la lista de nombres y dando clic a Aceptar.Recordemos nuevamente las reglas de escritura de la mayora de las macros:1. La 1 lnea de la macro es un comentario que no tiene efecto sobre la misma y que usamos para nuestrareferencia. Siempre comienza con el signo '. En nuestra macro:' Esta macro escribe el 1500 en la celda A12. La 2 lnea de la macro es el nombre, que comienza con la palabra Sub, seguida del nombre que queramosponerle sin espacios intermedios y finalizando con 2 parntesis de apertura y cierre (). En nuestra macro:Sub MiPrimeraMacro()3. La 3 lnea era la instruccin principal que es donde nos referimos a los objetos, propiedades y mtodos. Todoesto va escrito entre Sub y End Sub y podramos tener muchas lneas de cdigo si la macro fuera ms compleja.Siempre se hace referencia al objeto y luego se le asignan propiedades o mtodos.En nuestro caso el objeto es el rango A1 > Range("A1") y la propiedad que le asignamos fue el valor 1500 >Value=1500La lnea de la macro qued as:Range("A1").Value = 15004. La 4 lnea representaba el final de la macro. Todas las macros se finalizan con la instruccin End Sub.Tambin vimos que la macro se puede grabar automticamente, con la grabadora de macros, pero quepreferimos escribirla para utilizar menos lneas de cdigo y de paso aprender mejor los fundamentos del cdigo.En la 2 parte de este manual estn las macros ms importantes que podrs necesitar, escritas, comentadas ylistas para que puedas copiar, pegar y adaptar en tus propios desarrollos. De todas formas, como adelanto,veremos algunas macros nuevas aqu como para ir calentado motores. Macro 1 Escribamos manualmente una nueva macro ahora:1. Crea un nuevo libro Excel y gurdalo con el nombre Libro1.2. Accede al Editor de visual basic con las teclas ALT+F113. Inserta un nuevo Mdulo desde el men Insertar > Mdulo4. Dentro del mdulo escribe textualmente el siguiente cdigo:' Esta macro muestra un texto en una ventana emergenteSub MostrarTexto ()Msgbox "Manual de Macros Exceluciones"End Sub

5. Puedes ejecutar esta macro rpidamente posicionndote en cualquiera de sus lneas de cdigo y luegopresionando la tecla F5 para ver lo que sucede.Tambin puedes ejecutarla volviendo a Excel con ALT+F11 y desde el men Herramientas > Macros > Macro,eligiendo de la lista la macro MostrarTexto y luego Aceptar.6. Esta macro utiliza la instruccin Msgbox que sirve para abrir una ventana con la informacin que leindiquemos. Ms adelante vers como puedes mostrar en esa ventana informacin de celdas Excel u otrosresultados. De momento solo hacemos que muestre el texto que indicamos entre comillas.Recuerda que esto es tan solo un adelanto. En la 2 parte de este manual estn las macros ms importantes quepodrs necesitar, escritas, comentadas y listas para que puedas copiar, pegar y adaptar en tus propiosdesarrollos. Macro 2 Escribamos manualmente otra nueva macro ahora:1. Puedes utilizar el mismo Libro1 de la macro anterior.2. Accede al Editor de visual basic con las teclas ALT+F113. Puedes utilizar el mismo Mdulo de la macro anterior 4. Dentro del mdulo escribe textualmente el siguiente cdigo:' Esta macro oculta las lneas de divisin de las celdasSub OcultarLineas()ActiveWindow.DisplayGridlines = FalseEnd Sub5. Puedes ejecutar esta macro rpidamente posicionndote en cualquiera de sus lneas de cdigo y luegopresionando la tecla F5 para ver lo que sucede.Tambin puedes ejecutarla volviendo a Excel con ALT+F11 y desde el men Herramientas > Macros > Macro,eligiendo de la lista la macro OcultarLineas y luego Aceptar.6. Vers que la macro elimina las lneas de divisin de las celdas de la hoja activa (algo que tambin puedeshacer desde Excel, men Herramientas > Opciones > pestaa Ver > casilla Lneas de divisin).Esta macro utiliza el objeto ActiveWindow (ventana activa).Luego le asigna la propiedad DisplayGridlines=False (mostrar lneas de divisin=falso)Si quisieras volver a ver las lneas de divisin puedes cambiar la propiedad False por True, tal que:ActiveWindow.DisplayGridlines = TrueRecuerda que esto es tan solo un adelanto. En la 2 parte de este manual estn las macros ms importantes quepodrs necesitar, escritas, comentadas y listas para que puedas copiar, pegar y adaptar en tus propiosdesarrollos. Macro 3 Escribamos manualmente otra nueva macro ahora: 1. Puedes utilizar el mismo Libro1 de la macro anterior.2. Accede al Editor de visual basic con las teclas ALT+F113. La escribiremos en un objeto hoja, as que has doble clic en Hoja1 (Hoja1)4. Escribe textualmente el siguiente cdigo:' Esta macro copia un rango a la celda activaSub CopiaRango()Range("A1:A5").Copy Destination:=ActiveCellEnd Sub5. Para probar esta macro vuelve a Excel con ALT+F11 y escribe algunos nmeros o palabras a gusto en elrango A1:A5. Por ejemplo:5.1 Posicinate en la celda C15.2 Desde el men Herramientas > Macros > Macro, elige de la lista la macro CopiaRango y luego Aceptar.5.3 El resultado ser que el rango A1:A5 se copiar a partir de la celda C1 que era la celda activa al ejecutar lamacro.6. Esta macro utiliza algunas OPM (objetos, propiedades y mtodos) nuevos:Range ("A1:A5")El objeto Range ya lo conocamos...CopyEste es un mtodo (una accin)Destination:=ActiveCellEste es otro objeto. Destination se suele utilizar luego de un Copy y ActiveCell hace referencia a la celda activa.Recuerda que esto es tan solo un adelanto. En la 2 parte de este manual estn las macros ms importantes quepodrs necesitar, escritas, comentadas y listas para que puedas copiar, pegar y adaptar en tus propiosdesarrollos. El Editor de macros Es importante reconocer bien las principales opciones y secciones que tiene el editor de macros (tambinconocido como editor de Visual Basic), dado que ser la herramienta que utilizaremos para escribir las macros.En esta seccin veremos las distintas partes del editor y estudiaremos sus principales caractersticas. Como acceder El Editor de Visual Basic es la aplicacin que trae Excel desde donde se escriben y guardan las macros. Tienes 3formas de acceder al editor:A. Desde el men Herramientas > Macros > Editor de Visual BasicB. Desde el botn Editor de Visual Basic de la Barra de Herramientas Visual Basic (*)C. Desde el teclado (Teclas de Mtodo Abreviado): ALT+F11(*) Recuerda que puedes habilitar esta barra desde el men Ver > Barras de Herramientas > Visual Basic.Nuestra forma

preferida de acceder es con ALT+F11. Si ests en Excel y presionas estas teclas se abrir eleditor. Y al revs, si ests en el editor y presionas las mismas teclas volvers al Excel.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, dado que se pueden mostrar u ocultar. En las secciones siguientes teexplicaremos la utilidad de cada una de ellas. Ventana Proyecto Veamos una foto para ver como se ve la ventana de Proyecto. Si no la puedes visualizar puedes activarla desdeel men Ver > Explorador de proyectos, dentro del editor de visual basic.En la ventana de Proyecto hay carpetas donde se guardarn y escribirn las macros. Hemos presionado el botnAlternar Carpetas para que se ordenen mejor los elementos, como se ve a continuacin: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 tulibro Excel y lo de VBAProject podrs cambiarlo luego.En resumen VBAProject (Libro1) es la carpeta principal, asociada a un libro Excel determinado, dondeinsertaremos todo lo referido a las macros para dicho libro.En un segundo nivel tenemos las carpetas. Estas carpetas nos distinguen entre Objetos, Formularios y Mdulos.Veamos cada una de ellas:1. ObjetosEn 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 unamacro aqu la misma solo afectar a la hoja en cuestin.2. FormulariosLos formularios son ms conocidos como UserForms. Si no lo visualizas puedes agregarlos desde el menInsertar > 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. MdulosLos mdulos sirven para escribir macros a nivel genrico, sin estar relacionadas a la hoja o libro en particular. Sino 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 tantosmdulos como necesitemos. En los mdulos podemos escribir macros que operan de forma genrica, sindistinguir entre hojas o libros.Haciendo doble clic izquierdo en cualquiera de estos objetos vers que se habilita la Ventana de Cdigo de laizquierda (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 nombrede 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 laseccin anterior, podremos ver sus propiedades:Algunos objetos tienen muchas propiedades (por ej. los Userforms) as que tenemos la opcin de ordenar esosmismos de forma alfabtica o por categora. El objeto Mdulo1 solo tiene la propiedad (Name) Mdulo1. Siquisiramos 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 nuevosmdulos 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 la2 parte de este manual. Ventana Cdigo Veamos una foto para ver como se ve la Ventana de Cdigo. Cada vez que hagas doble clic izquierdo en algnObjeto de la Ventana Proyecto se activar a la derecha la Ventana de Cdigo. Si no la puedes visualizar puedesactivarla

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 escrito3 macros:Esta ventana no tiene mayores complicaciones. Lo que interesa es ms bien el cdigo que escribamos aqu.Puedes escribir todas las macros que quieras en esta ventana. Recuerda que el mismo editor asignarautomticamente los colores al cdigo y adems separar con una lnea continua cada macro. Ventana Inmediato Veamos como se ve la Ventana de Inmediato. Si no la puedes visualizar puedes activarla desde el men Ver >Ventana Inmediato.La ventana inmediato sirve para escribir, ejecutar y probar un cdigo macro rpidamente, sin tener que armar toda la macro con la estructura que comentamos en secciones anteriores.Por ejemplo, si quisiramos averiguar la cantidad de hojas que tiene un Libro podramos escribir la siguientemacro en un mdulo y ejecutarla:Sub ContarHojas()Dim N As LongN= thisworkbook.Sheets.CountMsgbox NEnd Sub De momento no importa los objetos, propiedades o mtodos que hemos utilizado. Solo te queremos mostrar quees una macro de 5 lneas. Ahora supongamos que solo nos interesa saber el nmero de hojas del libro, pero noqueremos armar toda la macro, solo nos interesa obtener el resultado. Entonces, en la ventana inmediatopodemos escribir:? thisworkbook.Sheets.Count y al presionar Enter en la fila siguiente nos mostrar el nmero de hojas que poseeel libro. El signo? al comienzo significa que estamos buscando conocer el resultado de algo. El resultado final severa 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. Alpresionar Enter, en la fila siguiente se mostrar la ruta del libro, por lo que en la Ventana Inmediato veremos algoas, 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 tantoescribimos la macro sin el signo ?. Por ejemplo, si queremos que en la celda A1 aparezca el valor 100 lopodemos 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 laspuedes 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 unacontrasea el cdigo de nuestras macros. Una vez que tengas tus macros escritas en el editor puedes ir al menHerramientas > Propiedades de VBAProject... y luego hacer clic en la pestaa de Proteccin. Vers una ventanacomo la de la siguiente:Para proteger tus macros sigue estos pasos:1. Tilda la casilla Bloquear proyecto para su visualizacin2. Escribe una Contrasea3. Vuelve e escribir tu contrasea en Confirmar contraseaDe esta forma, cuando alguien acceda al editor, ver la ventana proyecto del libro pero no podr ver los objetosdonde quedan escritas las macros (mdulos, hojas y userforms). Si hace doble clic en el Proyecto aparecer unaventana solicitando la clave. Ejecucin de Macros En varias secciones de este manual te indicamos como se ejecuta una macro. En realidad hay muchas formasde hacerlo, as que te las explicaremos a todas.Dependiendo del caso te interesar ejecutar la macro desde un men, desde un botn o incluso ejecutarlaautomticamente cuando ocurran determinados eventos, como ser al abrir, cerrar o guardar el libro, activar odesactivar una hoja, etc. Este tipo de macros que se ejecutan automticamente al ocurrir alguno de los eventosmencionados se explica en el captulo "Macros de Eventos". Desde el cdigo

La forma ms rpida de ejecutar una macro es desde el mismo cdigo. Cuando terminas de escribir una macropuedes posicionarte en cualquiera de sus lneas de cdigo y presionar la tecla F5. Recuerda que puedes acceder al cdigo de las macros desde el editor de macros, con las teclas ALT+F11. Desde menu Otra forma de ejecutar una macro es desde el men Herramientas > Macro > Macros. Vers que se abre uncuadro como el siguiente: Para ejecutar la macro:1. Elige el Nombre de la macro de la lista2. Clic en Ejecutar En la parte inferior figura una lista desplegable donde puedes elegir si quieres listar las macros de Todos loslibros abiertos, solo las de Este libro o las de PERSONAL.XLSPERSONAL.XLS es un libro Excel que se abre automticamente cada vez que abres Excel. Este libropermanece oculto desde Excel, pero es posible verlo desde el editor de macros. Todas las macros que escribasen PERSONAL.XLS siempre estarn disponibles cada vez que habrs tus libros Excel. Es una opcin muy tilpor si tienes macros que quieres utilizar en todos tus libros Excel (solo estarn disponibles en tu PC). Desde teclado Otra forma muy prctica de ejecutar una macro es desde el teclado. Esto tambin se conoce como teclas demtodo abreviado. Para configurar las teclas con las cuales ejecutar debes hacer los siguientes:1. Ir al men Herramientas > Macro > Macros.2. Elegir el nombre de la macro de la lista y luego hacer clic en el botn Opciones. 3. Donde dice Tecla de mtodo abreviado presiona la tecla MAYUSC y luego una letra. En nuestro ejemplo lamacro se ejecutar con Ctrl+Maysc+QRecuerda: la macro siempre se ejecuta con la tecla Ctrl+ la letra que tu escribas en la casilla. Sin embargo, haymuchas combinaciones de Ctrl+Letra que ya estn ocupadas por Excel (Ctrl+C copiar, Ctrl+V pegar, Ctrl+Xguardar, etc) y no se aconsejamos que utilices dichas combinaciones. Por eso lo que se hace es presionar Maysc antes de la letra de tal forma que la macro se ejecutar con Ctrl+Mays+Letra y de esta forma no alterar las teclas de mtodo abreviado por defecto de Excel. Desde objetos Muchas veces, y sobre todo cuando desarrolles aplicaciones en Excel, te interesar asignar macros a objetosgrficos insertados en la hoja.Excel posee una gran cantidad de figuras y dibujos que puedes insertar en la hoja desde el men Ver > Barra deHerramientas > Dibujo. Esto te habilita una barra como la 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 intersluego Aceptar.4. Finalmente la figura quedar con la macro asignada, de tal forma que cada vez que hagas un clic encima de lafigura, se ejecutar la macro. Desde botones Tambin es posible crear nuevos botones para la barra de herramientas de Excel y asignarle macros a losmismos. Para hacerlo sigue estos pasos: 1. Ir al men Ver> Barra de herramientas > Personalizar.1.1 Desde la pestaa Comandos, en la lista de Categoras, elegimos la opcin Macros.1.2 A la derecha aparecer una opcin de Personalizar botn sobre la cual debemos hacer clic izquierdo y luegoarrastar y soltar ese botn a la barra de botones de Excel.2. Es importante que mantengas abierto el cuadro de Personalizar, porque si no no podrs editar el botn. Sihacemos clic izquierdo sobre el botn se desplegar se men de opciones. Las opciones ms importantes sonlas de Cambiar imagen del botn y la de Asignar macro. Esta ltima opcin nos permitir abrir el cuadro dedilogo con la lista de macros creadas para asignarle una macro determinada (visto en la seccin anterior).

Automticamente Las macros tambin se pueden ejecutar automticamente. Por ejemplo, se pueden hacer macros que seejecuten cada cierto tiempo o que se ejecuten solas cada vez que el usuario hace algo como abrir, cerrar,guardar un libro, activar o desactivar una hoja, etc.Este tema se trata con ms detalle en el captulo "Macros de Eventos". Macros de Eventos Como decamos en la seccin anterior, las macros tambin se pueden ejecutar automticamente. En este casose las denomina macros de evento, porque ante un determinado evento o accin realizada por el usuario, lamacro se ejecuta automticamente.En las secciones siguientes repasaremos los principales eventos que pueden disparar una macroautomticamente. Existen una gran cantidad de macros de evento as que solo estudiaremos las ms utilizadas. Eventos de libros Los eventos de libros permiten disparar automticamente una macro cuando suceden determinadas acciones anivel del libro Excel en cuestin, por ejemplo al abrirlo, guardarlo, cerrarlo, imprimirlo, etc.Instrucciones para insertar una macro de evento a nivel libro:1. Las macros de eventos se deben escribir en la carpeta ThisWorkbook del editor de macros.2. Luego en la primera lista desplegable de la ventana de macros elegimos la opcin Workbook. 3. Finalmente, en la lista desplegable de la derecha veremos todos los eventos de libro que podemos utilizar paradisparar nuestra macro.4. Por ejemplo, si haces clic en la opcin Activate, vers que en la ventana de macros se escribeautomticamente el siguiente cdigo:Private Sub Workbook_Activate()End SubAl seleccionar una macro de evento el editor escribe automticamente la primera y ltima lnea de su cdigo (nodebes modificar esto). Luego podrs escribir tu cdigo macro entre esas lneas. En este caso, la macro queescribas se ejecutar cada vez que actives el libro Excel en cuestin. Por ejemplo, puedes hacer una macro quemuestre un mensaje de saludo cada vez que abres el libro:Private Sub Workbook_Activate ()Msgbox "Hola, Excel te saluda"End SubEntonces, cada vez que abras el libro, la macro se ejecutar automticamente y vers el saludo:En el caso de las macros de evento, siempre aparece la palabra Private. Eso significa que esa macro no lapodrs ver en la lista de macros del men Herramientas > Macro > Macros. Esto es as porque la macro no sepuede ejecutar manualmente, si no que se ejecuta automticamente cuando ocurre el evento, en este casocuando se activa el libro Excel en cuestin.Existen ms de 20 macros de evento a nivel libro. Puedes insertarlas siguiendo las instrucciones dadas alcomienzo. Las ms importantes son:Private Sub Workbook_BeforeClose (Cancel As Boolean)' El cdigo que escribas aqu se ejecutar automticamente al cerrar el libroEnd SubPrivate Sub Workbook_BeforePrint(Cancel As Boolean)' El cdigo que escribas aqu se ejecutar automticamente al imprimir el libro End SubPrivate Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)' El cdigo que escribas aqu se ejecutar automticamente al guardar el libroEnd SubPrivate Sub Workbook_Open()'El cdigo que escribas aqu se ejecutar automticamente al abrir el libroEnd Sub Eventos de hojas Los eventos de hojas permiten disparar automticamente una macro cuando suceden determinadas acciones anivel de hojas Excel, por ejemplo al activarla, desactivarla, calcularla, etc.Instrucciones para insertar una macro de evento a nivel hoja:1. Las macros de eventos se deben escribir en la carpeta Hoja1(Nombre) del editor de macros. Fjate que Hoja1identifica el nmero de hoja de Excel y (Nombre) ser el nombre que tenga asignado dicha hoja en Excel. Por ejemplo, si en tu Excel la primera hoja se llama "Gastos", en el editor veras Hoja1(Gastos). En nuestro casotenemos Hoja1(Hoja1). Al hacer doble clic en dicha carpeta, la macro que escribamos solo afectar a dicha hoja.2. Luego en la primera lista desplegable de la ventana de macros elegimos la opcin Worksheet.3. Finalmente, en la lista desplegable de la derecha veremos todos los eventos de hoja que podemos utilizar paradisparar nuestra macro automticamente. 4. Por ejemplo, si haces clic en la opcin Activate, vers que en la ventana de macros se escribe el siguientecdigo:Private Sub Worksheet_Activate()End SubAl seleccionar una macro de evento el editor escribe

automticamente la primera y ltima lnea de su cdigo (nodebes modificar esto). Luego podrs escribir tu cdigo macro entre esas lneas. En este caso, la macro queescribas se ejecutar cada vez que actives la hoja Excel en cuestin. Por ejemplo, puedes hacer una macro quemuestre un mensaje de saludo cada vez que activas la hoja:Private Sub Worksheet_Activate()Msgbox "Hola, Excel te saluda"End SubEntonces, cada vez que actives la hoja, la macro se ejecutar automticamente y vers el saludo:En el caso de las macros de evento, siempre aparece la palabra Private. Eso significa que esa macro no lapodrs ver en la lista de macros del men Herramientas > Macro > Macros. Esto es as porque la macro no sepuede ejecutar manualmente, si no que se ejecuta automticamente cuando ocurre el evento, en este casocuando se activa la hoja Excel en cuestin.Existen unas 9 macros de evento a nivel hoja. Puedes insertarlas siguiendo las instrucciones dadas al comienzo.Las ms importantes son:Private Sub Worksheet_Activate ()' El cdigo que escribas aqu se ejecutar automticamente al activar la hojaEnd SubPrivate Sub Worksheet_Calculate()' El cdigo que escribas aqu se ejecutar automticamente al calcular la hojaEnd SubPrivate Sub Worksheet_Deactivate() ' El cdigo que escribas aqu se ejecutar automticamente al desactivar la hojaEnd SubPrivate Sub Worksheet_SelectionChange(ByVal Target As Range)' El cdigo que escribas aqu se ejecutar automticamente al moverte entre las celdas de la hoja (cada vez queseleccionas y te posicionas en una nueva celda)End SubPrivate Sub Worksheet_Change(ByVal Target As Range)' El cdigo que escribas aqu se ejecutar automticamente al producirse un cambio en la hoja (por ejemplo alintroducir un dato en una celda, seleccionar una opcin de una lista desplegable, etc.)End Sub Formularios (Userforms) Un Formulario (o su denominacin en ingls Userform) se utiliza para crear un Cuadro de Dilogo donde elusuario puede introducir informacin, o realizar otras operaciones. Al ejecutar muchas de las opciones del mende Excel se abren formularios. Por ejemplo, desde el men Herramientas > Opciones se abre un formulario comoel 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 contildes), casillas de opciones (crculos con un punto dentro) y listas desplegables (lista con una flechita quedespliega distintas opciones).Los Userforms se utilizan mucho para crear aplicaciones Excel que luzcan de forma profesional y permitan alusuario introducir datos o elegir opciones de una forma guiada y ms intuitiva.En este captulo aprenderemos como construir nuestros propios Userforms ! Crear un Userform 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 > Userform2.3 Como se ve en la fotografa, veremos que aparece un objeto Userform1 que cuelga de la carpeta Formularios3. 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 loscontroles que podremos agregar dentro del Userform. Simplemente hacemos clic izquierdo en el control deseadoy luego clic izquierdo en el 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 hacialas celdas de Excel respectivamente. Tambin podemos asociar macros a los controles que agreguemos alUserform (todo esto lo veremos en secciones siguientes).Si te posicionas sobre los Controles del Cuadro de herramientas, vers que aparece su nombre. Simplementehacemos clic izquierdo en el control deseado y luego clic izquierdo en el Userform, en el sitio donde querramosagregar el control. En nuestro caso hemos agregado algunos controles de forma desordenada dentro delUserform. Controles de un Userform Como veamos anteriormente, tenemos una serie de controles para agregar al Userform, que los podamosvisualizar desde el men Ver > Cuadro de Herramientas.Ahora explicaremos brevemente la utilidad de cada control. Los controles se explican en el mismo orden queaparecen 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: 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 delUserform. Tambin podemos agregar ttulos o descripciones al resto de comandos que agreguemos en elUserform.Textbox: sirve para que un usuario introduzca datos.Ejemplo: queremos que el usuario introduzca una fecha o un nombre (que luego llevaremos a alguna celda deExcel).ComboBox: 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: sirve para que un usuario rellene o elija varias opciones de una lista.Ejemplo: creamos una lista con Regiones o Ciudades y el usuario deber elegir una o varias de ellas.CheckBox: 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 esttildada. OptionButton: 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 sepuede seleccionar una de ellas.ToggleButton: 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: 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 tenemosun grupo de opciones tipo masculino/femenino los agrupamos dentro de un frame. Si luego tenemos otro grupode opciones del tipo Mayor de Edad / Menor de Edad los agrupamos dentro de otro Frame.CommandButton: es un simple botn que nos permite ejecutar acciones.Ejemplo: un botn de Ayuda que ejecuta otro Userform con ayuda para el usuario.TabStrip: 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: 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: 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 mismosutilizando las flechas de desplazamiento.SpinButton: permite aumentar o disminuir valores.Ejemplo: tenemos una lista con tipos de inters y queremos que sean incrementados o disminuidos encantidades predeterminadas desde el SpinButton.Image: permite introducir imgenes en el Userform.Ejemplo: queremos introducir una fotografa como fondo del Userform para darle un aspecto ms profesional.RefEdit: 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 laseccin 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 15controles que se pueden agregar. Los hemos agregado en el mismo orden en que aparecen en el Cuadro deHerramientas. Ejemplo paso a paso Antes de crear un Userform debemos pensar bien cual ser su objetivo y cules son los controles queutilizaremos.ObjetivoCrear 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 datosLabel: para darle el nombre e los TextboxCommandButton: para proceder con el ingreso de datos o cancelar 1. Creamos la tabla en la hoja ExcelPrimero 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+F112.2 Seleccionamos Ver > Explorador de Proyectos para ver la lista de proyectos disponibles (los mismos severn 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 puedeabrir desde el men Ver > Cuadro de Herramientas)3. Nombramos el Userform3.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 enCaption, escribimos Datos Personales (encima de Userform1) y luego Enter. Ahora, la barra de ttulo delUserform es ms apropiada para nuestro propsito y para darle mejor informacin al usuario.4. Agregamos un Cuadro de TextoPara permitir que el usuario ingrese datos en el Userform agregamos un control TextBox, desde el Cuadro deHerramientas. 4.1 Hacemos clic en el control de TextBox y luego hacemos clic en el Userform, en la parte donde queramosubicarlo.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 referirnosa l desde las macros).4.3 Hacemos clic en una parte vaca del Userform, para volver a seleccionar todo el Userform.5. Agregamos un TextoPara ayudar al usuario a ingresar sus datos, debemos indicarle que es lo que debe introducir en el Cuadro deTexto del Paso anterior. Podemos agregar una etiqueta de texto que describa la informacin que se debeintroducir.5.1 En el Cuadro de Herramientas hacemos clic en el botn Label (etiqueta de texto).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 delCuadro de Texto para que no se superpongan. Se puede hacer clic en sus bordes (pequeos cuadraditos) yarrastrar 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 restantesAgregamos los cuadros de texto y las etiquetas restantes (ya lo hicimos para el nombre as que repetimos paraEdad y Fecha de Nacimiento).Repetimos los pasos 4 y 5 y agregamos:* 1 TextBox cuyo (Name) sea UFEdad, con una etiqueta de texto (Label) Edad* 1 TextBox cuyo (Name) sea UFFecha, con una etiqueta de texto (Label) 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 TextBox2. Manteniendo pulsada la tecla MAYUS, selecciona los otros TextBox3. Vamos al men Formato > Alinear > Izquierda4. Hacemos clic en alguna parte vaca del Userform para seleccionarlo y mostrar el cuadro de herramientas.7. Agregamos los BotonesPara permitir que el usuario ejecute una accin, se pueden agregar botones de comando o CommandButons.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 CommandButton.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 dePropiedades, tipeamos UFAgregar y luego enter.7.4 Con el nuevo botn seleccionado hacemos doble clic en su propiedad Caption en la Ventana dePropiedades, 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 CommandButton 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 CommandButtons, si no la macro darerror. 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 el botn 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()'definimos las variablesDim iFila As LongDim ws As WorksheetSet ws = Worksheets(1)' Encuentra la siguiente fila vacaiFila = ws.Cells(Rows.Count, 1) _ .End(xlUp).Offset(1, 0).Row' Verifica que se ingrese un nombreIf Trim(Me.UFNombre.Value) = "" ThenMe.UFNombre.SetFocusMsgBox "Debe ingresar un nombre"Exit SubEnd If ' Copia los datos a la tabla Excelws.Cells(iFila, 1).Value = Me.UFNombre.Valuews.Cells(iFila, 2).Value = Me.UFEdad.Value 30009 =Ve&ntana30010 =&?En el siguiente ejemplo insertamos un nuevo control en el Menu Insertar, y le adjuntamos una macro sencillitapara cuando el control creado sea ejecutado y/o clicado a travs del ratn o a travs de teclado con el metodoabreviado de teclas "Conbinacin de teclas":Sub AadirControl_al_MenuXX()Dim MenuXX As CommandBarPopupDim nuevoControl As CommandBarButton' Elimina el Control si existiera:Call DeleteMenuControl' Encontrar el Menu Insertar:Set MenuXX = Application.CommandBars("Worksheet Menu Bar").FindControl(ID:=30005)' Buscamos por el Menu Insertar y en caso de que no existiera, EXIT' Lgicamente el menu "Insertar" debera estar siempre, pero nos aseguramos...If MenuXX Is Nothing ThenMsgBox "Parece que su Barra de Menu, no Contiene el

Control Insertar", vbInformation, "ATENCION"Exit SubEnd If Set nuevoControl = MenuXX.Controls.Add( _ Type:=msoControlButton)' before:= en caso de que quisiramos colocarlo no en el final, sino' antes que el control llamado "Com&entario"' Set nuevoControl = MenuXX.Controls.Add( _ Type:=msoControlButton, _ Before:=Application.CommandBars("Insert").Controls("Com&entario").Index)With nuevoControl.Caption = "Insertar Mensaje E&xceLuciones".BeginGroup = True.FaceId = 1589.OnAction = "MsgBox_Hola"End WithEnd SubSub DeleteMenuControl()On Error Resume NextApplication.CommandBars("Worksheet Menu Bar").FindControl(ID:=30005).Controls("Insertar MensajeE&xceLuciones").DeleteEnd Sub Sub MsgBox_Hola()MsgBox Chr(10) & "Un Feliz AO Nuevo!!!", _ vbInformation, _ "Exceluciones le desea:"End SubConviene recordar que si ejecutramos esta macro y no borrramos el control creado al cerrar el libro, luego sifuramos al men Insertar e hiciramos clic sobre el control "Insertar Mensaje E&xceLuciones", Excelautomticamente abrira el libro que contiene la macro que hemos ordenado que se ejecute. Es por ello que losmens nuevos y/o personalizados se aportan como complementos o bien se borran cuando el libro que los crese cierra.Tambin debemos recordar que podemos hacer eferencia a un men por su nombre y/o por su identificativo (esdecir su ID). Los ID no variarn de pas a pas (versiones de Excel en distintos idiomas) mientras que losnombres puede que si !. Comandos En este captulo se explicarn algunos comandos tiles que suelen utilizarse con frecuencia en las macros. Mensajes de alerta Los mensajes de alerta son avisos que dispara Excel antes de realizar determinadas acciones. Por ejemplo, alintentar borrar una Hoja, nos aparece una aviso de confirmacin. A nivel de macros, es importante tenerlospresentes, tal como vemos a continuacin:Sub BorrarHoja()' Borramos una hojaActiveSheet.Delete' Pero esto requiere la confirmacion por parte del usuario...' Para evitar el mensaje de alerta, ya que Excel siempre nos pedir confirmacin,' bastar con utilizar la siguiente instruccin:Application.DisplayAlerts = False' Con lo cual ahora s podremos borrar la hoja dada sin necesidad de confirmacinActiveSheet.Delete' Finalmente dejamos a Excel en su estado original de mostrar los mensajesApplication.DisplayAlerts = TrueEnd SubEs importante recordar que el Application.DisplayAlerts=False siempre debe ir antes de la accin que requiereconfirmacin. Al final de la macro conviene volver a asignarle la propiedad True. Barra de estado La barra de estado de Excel es la que figura en la parte inferior y suele mostrar distintos mensajes. Esta barra sepuede mostrar u ocultar desde el men Ver > Barra de estado. Usualmente la Barra de estado muestra la palabra Listo, tal como se ve a continuacin:En otros casos, la misma cambia el mensaje mostrado, segn la operacin que estemos por realizar. Por ejemplo, si seleccionamos un rango y lo copiamos, la barra de estado dara una instruccin como la que se ve acontinuacin:Es posible cambiar el mensaje de la Barra de estado mediante cdigo VBA. A continuacin se exponen algunasinstrucciones para saber como manipularla y modificarla:Sub BarraEstado()' Si queremos ver la barra de estado originalApplication.DisplayStatusBar = True' Si NO queremos verla bastar con:Application.DisplayStatusBar = False' Por defecto la Barra de estado siempre estar Visible, es decir:Application.DisplayStatusBar = True' Si queremos que la barra de estado muestre un mensage diferente bastar con:Application.DisplayStatusBar = "Hola que tal estas??"' Si queremos que la Barra de Estado este limpia, es decir sin mensaje alguno:Application.DisplayStatusBar = ""End Sub Msgbox Un Msgbox es simplemente una ventana que muestra un mensaje. Por ej., con la siguiente instruccinmostraramos un saludo:Sub Saludo()' Escribimos el mensaje entre comillasMsgbox "Hola, Excel te saluda!"

End SubEl mesaje anterior se vera as en la hoja Excel:En este otro ejemplo, el mensaje lo tomamos de una celda Excel:Sub Saludo()' El mensaje mostrar el contenido de la celda A1Dim M as VariantM = range("A1").valueMsgbox MEnd SubTambin es posible dar formato y aplicar otras propiedades al Msgbox, tal como se ve explica continuacin:Sub MacroMensajes()' Los mensajes que excel puede lanzar se rigen por:' Prompt:="Me llamo Pedro." Ensearia el mensaje...' Buttons:= VbInformation, O bien' Buttons:= 64' con lo cual Buttons ----> Muestra el icono de mensaje de informacin.' Title:="Exceluciones:", el ttulo que adjuntaramos al mensajeMsgBox Prompt:="Me llamo Pedro.", Buttons:=vbInformation, Title:="Exceluciones:"End SubLa macro anterior mostrara un mensaje como el siguiente:Por defecto, un Msgbox siempre incluye el botn "Aceptar", el cual hara desaparecer el mensaje y continuaraejecutando el cdigo restante si lo hubiera. Tambin podemos configurar para que en lugar del botn "Aceptar"

aparezca un botn de "Ok" y "Cancelar" y de acuerdo al que elija el usuario, la macro continuara con un cdigo uotro cdigo. Esto lo realizamos agregando la instruccin vbOKCancel, tal como vemos a continuacin:Sub Mensaje()Dim Respuesta As Integer Respuesta = MsgBox("Seleccione Aceptar o Cancelar", vbOKCancel)' verificamos si se presion "Cancelar"If Respuesta = vbCancel ThenMsgBox "Macro caso Cancelar" ' Aqu continuara la macro en caso de Cancelar End If ' si se presion "Aceptar"If Respuesta = vbOK ThenMsgBox "Macro caso Aceptar" ' Aqu continuara la macro en caso de Aceptar End If End SubEl Msgbox anterior se vera as:y al presionar "Aceptar" o "Cancelar" veramos otro Msgbox.Si quisiramos separar en varias lneas el mensaje, deberamos hacerlo con la instruccin &Chr(13):Sub Mensaje()MsgBox "Este es un mensaje " & Chr(13) _ & "escrito en 2 lneas"End SubEl mensaje anterior se vera as:

Inputbox Un InputBox se utiliza cuando requerimos un input del Usuario (es decir, cuando esperamos que el usuariointroduzca un dato). Bsicamente lo que hacemos es asignarle un valor a una variable, pero le damos el controlal usuario para que asigne dicho valor o dato a gusto.Dentro del InputBox utilizamos las siguientes instrucciones:Prompt: mensaje del InputBoxTitle: ttulo del InputBoxDefault: valor por defecto al abrir el InputBox (si omitimos no aparecer nada)Type: indica el tipo de dato a introducir (1 Nmero, 2 Texto, 4 True o False, 5 Rangos)Vamos ahora como queda el InputBox:Sub Nombre()' el dato que proporcionar el usuario quedar registrado por la Variable Respuesta. Como no sabemos que tipode dato es lo definimos como una variable de tipo Variant.Dim Nombre As VariantNombre = Application.InputBox(prompt:="Escriba su nombre", Title:="Colegio de Abogados", Default:="Pedro",Type:=2)Msgbox Nombre ' En lugar de este Msgbox continuara el resto de la macro...End SubEl InputBox anterior se ver as:FinAqu finaliza la 2 Parte del Manual.

Buscar Buscar historial: Buscando Resultados00 de00

00 resultados para resultado para p.

Crear un Userform for Manual de Macros Excel


Manual super completisimo de aplicado a la programacin de visual basic en Excel. Descargar o imprimir Agregar a coleccin 70,9K Reads 635 Readcasts 440 Embed Views

Published by hunter2040

Seguir

Buscar NOTA PrensaCtrl-FF para buscar rpidamente en cualquier parte del documento.

Secciones

Introduccin Excel y Macros Una definicin sencilla Utilidad de una macro Objetos, Propiedades y Mtodos (OPM) Lenguaje VBA Como comenzar Editor VBA Escribir una Macro Mi primera Macro Escribir la macro Ejecutar la macro Comprender la macro Resumen OPM de la macro Grabar una Macro Grabando la macro Escrita vs. Grabada Diferencias Conclusin Macro escrita Macro grabada Ejemplos de Macros Macro 1 Macro 2 Macro 3 El Editor de macros Como acceder Ventana Proyecto Ventana Propiedades Ventana Cdigo Ventana Inmediato Proteger el Cdigo Ejecucin de Macros Desde el cdigo Desde menu Desde teclado Desde objetos Desde botones Automticamente Macros de Eventos Eventos de libros Eventos de hojas Formularios (Userforms) Crear un Userform

Controles de un Userform Ejemplo paso a paso Varios Ejecutar macro desde macro Depuracin y errores Complementos (add-ins) Seguridad de macros Firma digital Macros privadas Acelerar el cdigo Variables Definicin Declaracin Tipos Locales Pblicas Estticas Constantes Conversin Ejemplos Libros Abrir libros Guardar libros Borrar libros Crear libros Imprimir libros Calcular libros Proteger / Desproteger libros Hojas Agregar Seleccionar hojas Mover hojas Borrar hojas Ocultar / Mostrar hojas Nombrar Proteger / Desproteger hojas Imprimir Hojas Color de Etiquetas Ordenar hojas Rangos Seleccin de celdas Seleccin de rangos Seleccin de filas Seleccin de columnas Otras selecciones Insertar rangos Borrar rangos Copiar y pegar rangos

Nombrar rangos Combinar rangos Ocultar / Mostrar rangos Proteger / Desproteger rangos Transponer rangos Ordenar rangos Imprimir rangos Restringir movimiento Scroll Bars Arrays Fijos Bidimensionales Redim Preserve Estructuras Do Loop For Next For Each Next While Wend Go To With End With If Then Select Case DoEvents On Error GoTo On Error Resume Next Built in Dialogs Barras de Herramientas Crear Toolbar PopUp Mostrar / Ocultar Toolbar Mens Crear men Agregar Controles al men Comandos Mensajes de alerta Barra de estado Msgbox Inputbox

Informacin y calificaciones
Categora Calificacin: Manuales y guas prcticas
4.89796 5 false false 0

(49 Ratings)

Fecha de subida: Copyright:

02/05/2009 Attribution Non-commercial excel Other manuals

Etiquetas: macros VBA

Marcar documento como inapropiado

Relacionados

12 p.

Excel elizabethochoa 252 Reads

23 p.

Manual 2 Agustin Mora Miramontes 101 Reads

12 p.

Macros Mario Alejandro Llanan 117 Reads

Next

Dejar un comentario

535213e651017b

json

Debe tenersesin iniciada para dejar un comentario. Enviar Caracteres:400

Pablo_Torres_6710

LES AGRADEZCO SU BUENA DISPOSICION GRACIAS


reply06 / 15 / 2012

Roberto Surez

Muy bueno, me sirvi de gran ayuda. Pero donde est la segunda parte? Un saludo
reply05 / 07 / 2012

deleted_fbuser_1321373945

Hola no se si podria descargar el manual de una manera gratuita ... lo necesito bastante es un material sumamente importante gracias ojala y accedan a mi peticion
reply10 / 21 / 2010

deleted_fbuser_1321363423_2

is reading Manual de Macros Excel.

reply10 / 02 / 2010

alexia183

como se llama la segunda parte del libro????????


reply03 / 29 / 2010

rcercadoch

Muy bueno el libro, saben como se llama la 2da parte


reply01 / 12 / 2010

uomo_perfetto

magnifico man. Un saludo.


reply01 / 12 / 2010

marco_sy

excelente aporte, gracias


reply12 / 05 / 2009 Mostrar ms
535213e651017b

json

Debe tenersesin iniciada para dejar un comentario.

Enviar Caracteres:...

Deseo recibir las noticias de Scribd y otros mensajes ocasionales relacionados a mi cuenta. Sobre

About Scribd Blog nase a nuestro equipo! Contact Us

Publicite con nosotros


Primeros pasos AdChoices

Soporte

Ayuda PUF Prensa

Socios

Editores Desarrolladores / API

Legal

Condiciones Privacidad Copyright

Copyright 2012 Scribd Inc. Idioma: Espaol scribd. scribd. scribd.

< div style="display: none;"><img src="http://pixel.quantserve.com/pixel/p-13DPpb-yg8ofc.gif" height="1" width="1" alt="Quantcast"/></div>

UserForm con botones maximizar y minimizar


0
19 ago 2010 Excel VBA,Macros Excel by avalencia

Hola Cmo estn? Una pregunta muy frecuente entre los usuarios de Microsoft Excel que ya se aventuraron en usar el Visual Basic para Aplicaciones (VBA) que viene con l y que han comenzado, a su vez, a usar los formularios de usuarios de VBA (UserForm), es que como le agregan a este los clsicos botones del Windows de maximizar y minimizar, ya que estos no los traen. Lo primero es decir, que si se pueden agregar dichos botones, lo segundo ser decir que no es difcil y lo tercero ser decir que aunque no es difcil hay que usar funciones de la API de Windows, que a algunas y algunos les podra parecer un misterio. Bueno, para empezar algunas definiciones rpidas: 1- API: Interfaz de programacin de aplicaciones, que es un conjunto de funciones residentes en bibliotecas que permiten que una aplicacin se ejecute en un sistema operativo. Se utilizan para realizar tareas cuando resulta difcil escribir procedimientos equivalentes con el cdigo propio del programa que se est usando. 2- FindWindow: Funcin del API de windows que nos Devuelve el Handle de la ventana que coincida con la clase y nombre indicados 3- GetWindowLong: Funcin del API de windows que obtiene las caractersticas de la ventana que se le indica 4- SetWindowLong: Funcin del API de windows que modifica un atributo de la ventana especificada 5- Thunderdframe: Nombre de la clase de los Userform del VBA de Excel (A partir del Excel 2000). Y qu hacemos ahora? Pues, simplemente agregamos nuestro UserForm, vamos a l, presionamos F7 para ver su modulo y agregar cdigo, y pegamos lo que coloco a continuacin:

Option Explicit

Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long

Private Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hWnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long

Private Declare Function GetWindowLong Lib "user32" Alias "GetWindowLongA" (ByVal hWnd As Long, ByVal nIndex As Long) As Long

Private Const WS_MINIMIZEBOX As Long = &H20000

Private Const WS_MAXIMIZEBOX As Long = &H10000

Private Const GWL_STYLE As Long = (-16)

Private Sub UserForm_Initialize()

Dim lngMyHandle As Long, lngCurrentStyle As Long, lngNewStyle As Long

'Obtenemos el "Handle" del Userform

lngMyHandle = FindWindow("THUNDERDFRAME", Me.Caption)

'Obtenemos el estilo actual del UserForm

lngCurrentStyle = GetWindowLong(lngMyHandle, GWL_STYLE)

'Creamos un nuevo estilo de titulo con los botones deseados

lngNewStyle = lngCurrentStyle Or WS_MINIMIZEBOX Or WS_MAXIMIZEBOX

'Aplicamos las nuevas propiedades al UserForm

SetWindowLong lngMyHandle, GWL_STYLE, lngNewStyle

End Sub
El resultado una vez insertado el cdigo es como el mostrado en la imagen anexa:

Algo importante y que sirve para obtener mejores resultados, es colocar la propiedad ShowModal de nuestro UserForm en False. Ahora si, disfruten de las nuevas propiedades de su Userform. Nota: Si no me equivoco, la primera vez que vi el uso de cdigo para obtener este resultado, era obra de Daniel Klann Saludos y xito El Equipo de EXCELLENTIAS.COM Pegar contenido de Combobox

Experto

Este cdigo hace que cuando selecciones una opcin del combo se copie ese dato a la celda A1 de la hoja en la que te encuentres. Private Sub ComboBox1_Change() Range("a1").Value = Me.ComboBox1.Text End Sub Usuario Bueno mil gracias por la ayuda pero ahora necesito escoger varios valores de la lista desplegable y copiarlos a celdas. Por ejemplo: Escoger dos o ms pases : argentina, espaa y chile de la lista y que cada uno se copie a distintas celdas y as poder tener en mis tres celdas los tres pases que escog. Ahora solo escojo uno y me copia en una celda y escojo otro y se cambia o sino esojo uno y se repite en las tres celdas. Por aydeme, necesito urgente! Y muchsimas gracias! Experto Hola aqu hay una posibilidad prubalas y me avisas: Private Sub ComboBox1_Change() fila = 1 Do While True If IsEmpty(Cells(fila, 1)) Then Exit Do fila = fila + 1 ' Loop Cells(fila, 1).Value = Me.ComboBox1.Text End Sub

Private Sub ComboBox1_Click() 'enva el dato a la celda A28 Range("A28").Value = ComboBox1.Value 'enva el dato a la celda A28 de otra hoja Sheets("tuHoja").Range("A28").Value = ComboBox1.Value End Sub

Concatenar

=A2&" vendi "&B2&" unidades." =A3&" vendi "&TEXTO(B3,"0%")&" de las ventas totales." =CONCATENAR(A2," vendi ",B2," unidades.")

Combina el contenido anterior en una frase (Buchanan vendi 28 unidades) Combina los elementos anteriores para construir una frase (Dodsworth vendi el 40% de las ventas totales) Combina el contenido anterior en una frase (Buchanan vendi 28 unidades)

Private Sub ComboBox1_Click() 'Copia el nombre de la planta a la celda Worksheets("Datos").Range("C5").Value = Me.ComboBox1.Text End Sub

Private Sub ComboBox2_Click() 'Copia el da a la celda Worksheets("PRO").Range("H2").Value = ComboBox2.Value End Sub

Private Sub ComboBox3_Click() 'Copia el mes a la celda Worksheets("PRO").Range("n2").Value = ComboBox3.Value End Sub

Private Sub ComboBox4_Click() 'Copia el ao a la celda Worksheets("PRO").Range("J2").Value = ComboBox4.Value End Sub