Introduccion a VBA en Excel 2010

Embed Size (px)

Citation preview

  • 7/29/2019 Introduccion a VBA en Excel 2010

    1/35

    Introduccin a VBA en Excel 2010

    Office 2010

    Personas que lo han encontrado til: 24 de 33 -Valorar este tema

    Resumen: este artculo presenta, a modo de introduccin, Visual Basic para Aplicaciones

    (VBA) en Excel 2010 y est dirigido a usuarios avanzados de Excel que an no son

    programadores. En este tema se incluye informacin general sobre el lenguaje de VBA,instrucciones para obtener acceso a VBA en Excel 2010, la explicacin detallada de una

    solucin para un problema real de programacin de VBA en Excel y sugerencias sobre

    programacin y depuracin.

    Se aplica a: Microsoft Excel 2010

    Contenido

    Por qu usar VBA en Excel 2010?

    Programacin de VBA 101

    Macros y el Editor de Visual Basic

    Un ejemplo real

    Modificacin del cdigo grabado

    Ms cosas que se pueden hacer con VBA

    Qu sigue?

    Recursos adicionales

    Por qu usar VBA en Excel 2010?

    Microsoft Excel 2010 es una herramienta muy eficaz que se puede usar para manipular,analizar y presentar datos. A veces, no obstante, a pesar del amplio conjunto de

    caractersticas que ofrece la interfaz de usuario (UI) estndar de Excel, es posible que se

    desee encontrar una manera ms fcil de realizar una tarea repetitiva y comn, o de realizaralguna tarea no incluida en la interfaz de usuario. Afortunadamente, las aplicaciones deOffice, como Excel, tienen Visual Basic para Aplicaciones (VBA), un lenguaje de

    programacin que brinda la posibilidad de ampliar dichas aplicaciones.

    VBA funciona mediante la ejecucin de macros , procedimientos paso a paso escritos en

    Visual Basic. Aprender a programar podra parecer intimidante, pero con algo de paciencia

    y algunos ejemplos, como los que se incluyen en este artculo, muchos usuarios encuentran

    http://msdn.microsoft.com/es-es/library/office/ee814737.aspx#feedbackhttp://msdn.microsoft.com/es-es/library/office/ee814737.aspx#feedbackhttp://msdn.microsoft.com/es-es/library/office/ee814737.aspx#feedbackhttp://msdn.microsoft.com/es-es/library/office/ee814737.aspx#odc_Office14_ta_GettingStartedWithVBAInExcel2010_WhyUseVBAInExcel2010http://msdn.microsoft.com/es-es/library/office/ee814737.aspx#odc_Office14_ta_GettingStartedWithVBAInExcel2010_WhyUseVBAInExcel2010http://msdn.microsoft.com/es-es/library/office/ee814737.aspx#odc_Office14_ta_GettingStartedWithVBAInExcel2010_VBAProgramming101http://msdn.microsoft.com/es-es/library/office/ee814737.aspx#odc_Office14_ta_GettingStartedWithVBAInExcel2010_VBAProgramming101http://msdn.microsoft.com/es-es/library/office/ee814737.aspx#odc_Office14_ta_GettingStartedWithVBAInExcel2010_MacrosAndTheVisualBasicEditorhttp://msdn.microsoft.com/es-es/library/office/ee814737.aspx#odc_Office14_ta_GettingStartedWithVBAInExcel2010_MacrosAndTheVisualBasicEditorhttp://msdn.microsoft.com/es-es/library/office/ee814737.aspx#odc_Office14_ta_GettingStartedWithVBAInExcel2010_ARealWorldExamplehttp://msdn.microsoft.com/es-es/library/office/ee814737.aspx#odc_Office14_ta_GettingStartedWithVBAInExcel2010_ARealWorldExamplehttp://msdn.microsoft.com/es-es/library/office/ee814737.aspx#odc_Office14_ta_GettingStartedWithVBAInExcel2010_ModifyingTheRecordedCodehttp://msdn.microsoft.com/es-es/library/office/ee814737.aspx#odc_Office14_ta_GettingStartedWithVBAInExcel2010_ModifyingTheRecordedCodehttp://msdn.microsoft.com/es-es/library/office/ee814737.aspx#odc_Office14_ta_GettingStartedWithVBAInExcel2010_MoreThingsThatYouCanDoWithVBAhttp://msdn.microsoft.com/es-es/library/office/ee814737.aspx#odc_Office14_ta_GettingStartedWithVBAInExcel2010_MoreThingsThatYouCanDoWithVBAhttp://msdn.microsoft.com/es-es/library/office/ee814737.aspx#odc_Office14_ta_GettingStartedWithVBAInExcel2010_WhatNexthttp://msdn.microsoft.com/es-es/library/office/ee814737.aspx#odc_Office14_ta_GettingStartedWithVBAInExcel2010_WhatNexthttp://msdn.microsoft.com/es-es/library/office/ee814737.aspx#odc_Office14_ta_GettingStartedWithVBAInExcel2010_AdditionalResourceshttp://msdn.microsoft.com/es-es/library/office/ee814737.aspx#odc_Office14_ta_GettingStartedWithVBAInExcel2010_AdditionalResourceshttp://msdn.microsoft.com/es-es/library/office/ee814737.aspx#odc_Office14_ta_GettingStartedWithVBAInExcel2010_AdditionalResourceshttp://msdn.microsoft.com/es-es/library/office/ee814737.aspx#odc_Office14_ta_GettingStartedWithVBAInExcel2010_WhatNexthttp://msdn.microsoft.com/es-es/library/office/ee814737.aspx#odc_Office14_ta_GettingStartedWithVBAInExcel2010_MoreThingsThatYouCanDoWithVBAhttp://msdn.microsoft.com/es-es/library/office/ee814737.aspx#odc_Office14_ta_GettingStartedWithVBAInExcel2010_ModifyingTheRecordedCodehttp://msdn.microsoft.com/es-es/library/office/ee814737.aspx#odc_Office14_ta_GettingStartedWithVBAInExcel2010_ARealWorldExamplehttp://msdn.microsoft.com/es-es/library/office/ee814737.aspx#odc_Office14_ta_GettingStartedWithVBAInExcel2010_MacrosAndTheVisualBasicEditorhttp://msdn.microsoft.com/es-es/library/office/ee814737.aspx#odc_Office14_ta_GettingStartedWithVBAInExcel2010_VBAProgramming101http://msdn.microsoft.com/es-es/library/office/ee814737.aspx#odc_Office14_ta_GettingStartedWithVBAInExcel2010_WhyUseVBAInExcel2010http://msdn.microsoft.com/es-es/library/office/ee814737.aspx#feedback
  • 7/29/2019 Introduccion a VBA en Excel 2010

    2/35

    que conocer aunque sea una pequea parte del cdigo de VBA facilita su trabajo y les

    brinda la posibilidad de ejecutar tareas en Office que antes crean imposibles de realizar. Si

    se adquieren algunos conocimientos sobre VBA, resultar mucho ms sencillo seguir

    aprendiendo, por lo que aqu las posibilidades son ilimitadas.

    Sin duda, la razn ms frecuente por la cul se usa VBA en Excel es para automatizartareas repetitivas. Por ejemplo, suponga que tiene docenas de libros con docenas de hojas

    de clculo y necesita realizar cambios en cada uno de ellos. Los cambios podran ser tan

    simples como aplicar formato nuevo a algn rango fijo de celdas, o bien tan complejos

    como buscar algunas caractersticas estadsticas de los datos en cada hoja, elegir el mejortipo de grfico para mostrar datos con esas caractersticas y, a continuacin, crear y dar

    formato al grfico en consecuencia.

    En ambos casos, es probable que prefiera no realizar estas tareas de forma manual, al

    menos no ms de unas pocas veces. En su lugar, las tareas pueden automatizarse usando

    VBA para escribir las instrucciones explcitas que Excel debe seguir.

    No obstante, VBA no es til solo para tareas repetitivas. Tambin puede usar VBA para

    crear nuevas funcionalidades en Excel (por ejemplo, puede desarrollar nuevos algoritmospara analizar datos y, a continuacin, usar las funcionalidades de grficos de Excel para

    mostrar los resultados) y realizar tareas que integren Excel con otras aplicaciones de Office,

    como Microsoft Access 2010. De hecho, de todas las aplicaciones de Office, Excel es lams usada como algo similar a una plataforma de desarrollo general. Adems de todas las

    tareas obvias que implican listas y contabilidad, los programadores usan Excel en una

    amplia variedad de tareas, desde visualizacin de datos hasta prototipos de software.

    A pesar de todas las buenas razones para usar VBA en Excel 2010, es importante recordar

    que la mejor solucin de un problema posiblemente no se relacione con VBA en absoluto.

    Excel tiene una gran variedad de caractersticas sin VBA y es posible que hasta un usuarioavanzado no est familiarizado con todas ellas. Antes de acudir a una solucin de VBA,

    realice una bsqueda exhaustiva en Ayuda y recursos en lnea para asegurarse de que no

    existe una manera ms simple.

    Programacin de VBA 101

    Uso de cdigo para hacer que las aplicaciones realicen las tareas

    Quiz crea que escribir cdigo es algo misterioso o complicado, pero sus principios bsicos

    usan la lgica diaria y son bastante accesibles. Las aplicaciones de Office 2010 estn

    creadas de tal modo que exponen lo que se denomina objetos. Estos objetos recibeninstrucciones. Para interactuar con las aplicaciones, se envan instrucciones a varios objetos

    de la aplicacin. Los objetos, si bien son variados y flexibles, tienen sus lmites. Solo

    pueden hacer aquello para lo que fueron diseados y solo harn lo que se les indique quehagan.

    Objetos

  • 7/29/2019 Introduccion a VBA en Excel 2010

    3/35

    Los objetos de programacin se relacionan entre s sistemticamente en una jerarqua

    denominada modelo de objetos de la aplicacin. El modelo de objetos bsicamente refleja

    lo que se ve en la interfaz de usuario. Por ejemplo, el modelo de objetos de Excel contiene

    los objetos Application, Workbook, Sheet y Chart, entre muchos otros. El modelo deobjetos constituye el mapa conceptual de la aplicacin y sus funcionalidades.

    Propiedades y mtodos

    Es posible manipular objetos al establecer susPropiedades y llamar a sus mtodos. Si seestablece una propiedad, se producen algunos cambios en la calidad del objeto. Si se llama

    a un mtodo, se logra que el objeto realice una determinada accin. Por ejemplo, el objeto

    Workbooktiene un mtodo Close que cierra el libro y una propiedad ActiveSheet querepresenta la hoja activa del libro.

    Colecciones

    Varios objetos vienen en las versiones singular y plural; por ejemplo, libro y libros, hoja declculo y hojas de clculo. Las versiones en plural se denominan colecciones. Los objetosde una coleccin se usan para realizar una accin en varios elementos de esa coleccin.

    Ms adelante, en este artculo, se explicar cmo usar la coleccin Worksheets para

    cambiar el nombre de cada hoja de clculo de un libro.

    Macros y el Editor de Visual Basic

    Ahora que ya conoce en parte cmo Microsoft Excel 2010 expone su modelo de objetos,

    puede intentar llamar a los mtodos de un objeto y establecer las propiedades del objeto.

    Para hacerlo, debe escribir el cdigo en un lugar y de una manera que Office puedacomprender; generalmente, mediante el uso del Editor de Visual Basic. Aunque se instala

    de forma predeterminada, muchos usuarios ni siquiera saben que est disponible hasta que

    no se habilita en la cinta de opciones.

    Ficha Programador

    Todas las aplicaciones de Office 2010 usan la cinta de opciones. La ficha Programador es

    una de las fichas incluidas en la cinta de opciones, donde se puede tener acceso al Editor deVisual Basic y a otras herramientas de programador. Debido a que Office 2010 no muestra

    la ficha Programador de manera predeterminada, debe habilitarla mediante el siguiente

    procedimiento:

    Para habilitar la ficha Programador

    1. En la ficha Archivo, elija Opciones para abrir el cuadro de dilogo Opciones deExcel.

    2. Haga clic en Personalizar cinta de opciones en el lado izquierdo del cuadro dedilogo.

  • 7/29/2019 Introduccion a VBA en Excel 2010

    4/35

    3. En Comandos disponibles en:, en el lado izquierdo del cuadro de dilogo,seleccione Comandos ms utilizados.

    4. En Personalice esta cinta de opciones, en el lado derecho del cuadro de dilogo,seleccione Fichas principales y, a continuacin, active la casilla de verificacinProgramador.

    5. Haga clic en Aceptar.

    Despus de que Excel muestre la ficha Programador, observe la ubicacin de los botones

    Visual Basic, Macros y Seguridad de macros en la ficha.

    Figura 1. Ficha Programador en Excel 2010

    Problemas de seguridad

    Haga clic en el botn de Seguridad de macros para especificar qu macros pueden

    ejecutarse y en qu condiciones. Aunque el cdigo de macros de sistemas no confiables

    puede daar gravemente el equipo, las condiciones de seguridad que impiden ejecutar

    macros tiles pueden disminuir en gran medida la productividad. La seguridad de macros esun tema complejo que se debe estudiar y comprender, si se trabaja con macros de Excel.

    Para el propsito de este artculo, tenga en cuenta que si la barra Advertencia de

    seguridad: las macros se han deshabilitado aparece entre la cinta de opciones y el libro,

    cuando abre un libro que contiene una macro, puede hacer clic en el botn Habilitarcontenido para habilitar las macros.

    Adems, como medida de seguridad, no puede guardar una macro en el formato de archivopredeterminado de Excel (.xlsx); debe guardar la macro en un archivo con extensin

    especial (.xlsm).

    Editor de Visual Basic

    El siguiente procedimiento muestra cmo crear un nuevo libro en blanco donde sealmacenarn las macros. A continuacin, podr guardar el libro con el formato .xlsm.

    Para crear un nuevo libro en blanco

  • 7/29/2019 Introduccion a VBA en Excel 2010

    5/35

    1. Haga clic en el botn Macros, de la ficha Programador.2. En el cuadro de dilogo Macro que aparece, escriba Hello en Nombre de macro.3. Haga clic en el botn Crear para abrir el Editor de Visual Basic que incluir los

    esquemas de una nueva macro ya escritos.

    VBA es un lenguaje de programacin completo y, en consecuencia, tiene un entorno deprogramacin completo. En este artculo solo se estudian las herramientas que se usan para

    empezar a trabajar en programacin sin incluir la mayora de las herramientas del Editor de

    Visual Basic. Realizada esta salvedad, cierre la ventana Propiedades en el lado izquierdo

    del Editor de Visual Basic e ignore las dos listas desplegables que aparecen sobre el cdigo.

    Figura 2. Editor de Visual Basic

    El Editor de Visual Basic contiene el siguiente cdigo.

    VBCopiarSub Hello()

    EndSub

    Sub se refiere a Subrutinaque, por el momento, se puede definir como "macro". Al ejecutar

    la macro Hello se ejecuta cualquier cdigo que se encuentre entre Sub Hello() y End

    Sub.

    Ahora, edite la macro para que tenga un aspecto similar al siguiente cdigo.

    VB

    CopiarSub Hello()

    MsgBox ("Hello, world!")

    EndSub

    Vuelva a la ficha Programador en Excel y haga clic de nuevo en el botn Macros.

  • 7/29/2019 Introduccion a VBA en Excel 2010

    6/35

    Seleccione la macro Hello en la lista que aparece y, a continuacin, haga clic en Ejecutar

    para mostrar un cuadro de mensaje pequeo que contiene el texto "Hello, world!".

    Acaba de crear e implementar correctamente cdigo de VBA personalizado en Excel. Haga

    clic en Aceptar en el cuadro de mensaje para cerrarlo y terminar de ejecutar la macro.

    Si no aparece el cuadro de mensaje, compruebe la configuracin de seguridad de la macro y

    reinicie Excel.

    Accesibilidad de las macros

    Tambin puede tener acceso al cuadro de dilogo Macros desde la ficha Ver, pero si usa

    una macro con frecuencia, le resultar ms cmodo tener acceso a ella mediante un mtodo

    abreviado de teclado o un botn de la Barra de herramientas de acceso rpido.

    Para crear un botn para la macro Hello en la Barra de herramientas de acceso rpido,

    use el siguiente procedimiento.

    El siguiente procedimiento describe cmo crear un botn para una macro en la Barra de

    herramientas de acceso rpido:

    Para crear un botn para una macro en la Barra de herramientas de acceso

    rpido

    1. Haga clic en la pestaa Archivo.2. Haga clic en Opciones para abrir el cuadro de dilogo Opciones de Excel y, a

    continuacin, haga clic en Barra de herramientas de acceso rpido.

    3. En la lista que se encuentra en Comandos disponibles en:, elija Macros. Busqueen la lista el texto que es similar a Book1!Hello y seleccinelo.

    4. Haga clic en el botn Agregar >> para agregar la macro a la lista en el lado derechoy, a continuacin, haga clic en el botn Modificar, a fin de seleccionar una

    imagen del botn para asociar a la macro.5. Haga clic en Aceptar. El nuevo botn deber mostrarse en la Barra de

    herramientas de acceso rpido, encima de la ficha Archivo.

    Ahora puede ejecutar rpidamente la macro en cualquier momento sin tener que usar la

    ficha Programador: intntelo.

    Un ejemplo realSupongamos que tiene un libro que contiene listas en una gran cantidad de hojas de clculo

    y que desea cambiar el nombre de cada hoja de clculo para que coincida con el

    encabezado de la lista de esa hoja de clculo. No todas las hojas de clculo contienen unalista. Si una hoja de clculo tiene una lista, el encabezado est en la celda B1, de lo

  • 7/29/2019 Introduccion a VBA en Excel 2010

    7/35

    contrario, si no tiene una lista, la celda B1 est en blanco. Los nombres de hojas de clculo

    sin listas no deben modificarse.

    Normalmente, esto podra tratarse de una tarea compleja que implica ver cada hoja de

    clculo para saber si tiene una lista, copiar el nombre de la lista en caso de que exista, hacer

    clic en la ficha de hoja de clculo y luego pegar el nuevo nombre. En lugar de realizar todosestos pasos manualmente, use VBA de Excel para cambiar el nombre de las hojas de forma

    automtica.

    Aprendizaje sobre objetos

    Para resolver un problema de programacin de VBA, primero debe saber qu objetosmanipular el cdigo. Para investigar y conocer esa informacin, una herramienta esencial

    es lareferencia del modelo de objetos de Excel, que forma parte de la referencia del

    programador de Excel 2007 en Microsoft Developer Network (MSDN).

    Estos materiales de referencia se actualizarn para Excel 2010 cuando la herramienta estdisponible al pblico; sin embargo, la referencia del programador de Excel 2007 se adecuaa la mayora de los casos de Excel 2010.

    Figura 3. Referencia del modelo de objetos de Excel en MSDN

    El primer paso consiste en averiguar cmo manipular los objetos concretos con los que

    necesita trabajar para llevar a cabo su tarea; por ejemplo, hojas de clculo, nombres de hoja

    http://msdn.microsoft.com/es-es/library/bb149081.aspxhttp://msdn.microsoft.com/es-es/library/bb149081.aspxhttp://msdn.microsoft.com/es-es/library/bb149081.aspxhttp://msdn.microsoft.com/es-es/library/bb149081.aspx
  • 7/29/2019 Introduccion a VBA en Excel 2010

    8/35

    de clculo, celdas y contenidos de celdas. En Excel, hay al menos dos formas de enfocar el

    problema:

    Ir directamente a la referencia del modelo de objetos.

    Grabar algunas de las acciones que se desean automatizar, ver cmo el cdigograbado manipula los objetos y, a continuacin, ir a la referencia del modelo de

    objetos para obtener ms informacin.

    Las opiniones varan con respecto a qu enfoque es preferible, pero por ahora, intente

    primero usar la grabadora de macros.

    Uso de la grabadora de macros

    A veces una simple macro grabada es todo lo que se necesita; en estos casos, incluso, no es

    necesario mirar el cdigo. Por lo general, la grabacin por s sola no es suficiente, pero s,

    un punto de inicio en el siguiente proceso.

    Para usar la grabadora de macros como punto de inicio de la solucin

    1. Grabe las acciones que desea codificar.2. Revise el cdigo y busque las lneas que realizan esas acciones.3. Elimine el resto del cdigo.4. Modifique el cdigo grabado.5. Agregue variables, estructuras de control y otro cdigo que la grabadora de macros

    no pueda grabar.

    Comience su investigacin con la grabacin de una macro que cambie el nombre de una

    hoja de clculo a New Name. Despus podr usar la macro grabada para crear su propia

    macro que cambie el nombre de varias hojas de clculo segn su contenido.

    Para grabar una macro que cambie el nombre de una hoja de clculo

    1. Haga clic en Grabar macro en la ficha Programador.2. Coloque el nombre RenameWorksheets a la macro, cambie el nombre Sheet1 a

    New Name y, a continuacin, haga clic en Detener grabacin.

    3. Vaya a la ficha Programador o Ver, haga clic en el botn Macros y elija Editarpara abrir el Editor de Visual Basic.

    En el Editor de Visual Basic, el cdigo debe verse similar al siguiente.

    VB

    CopiarSub RenameWorksheets()

    '

    ' RenameWorksheets Macro

    '

  • 7/29/2019 Introduccion a VBA en Excel 2010

    9/35

    '

    Sheets("Sheet1").Select

    Sheets("Sheet1").Name = "New Name"

    EndSub

    Las primeras cuatro lneas que aparecen despus de la lnea Sub son comentarios. Toda

    lnea que comienza con un apstrofe es un comentario y no tiene efecto alguno sobre laaccin que ejecuta la macro. Los principales usos de los comentarios son los siguientes:

    Facilitar la comprensin del cdigo, no solo para usted, sino para cualquier persona

    que necesite modificarlo en el futuro.

    Deshabilitar temporalmente una lnea de cdigo (se denomina marcar como

    comentario).

    Los cuatro comentarios en esta macro grabada no cumplen ningn propsito, por lo tanto,

    elimnelos.

    La siguiente lnea usa el mtodo Select para seleccionar el miembro Sheet1 del objeto de lacoleccin Sheets. En el cdigo de VBA, por lo general, no es necesario seleccionar objetos

    antes de manipularlos, aunque eso es lo que hace la grabadora de macros. En otras palabras,

    esta lnea de cdigo es redundante, por lo tanto, puede eliminarla.

    La ltima lnea de la macro grabada modifica la propiedad Nombre del miembro Sheet1 de

    la coleccin Sheets. Esta es la lnea que debe conservar.

    Despus de realizar los cambios, el cdigo grabado ahora debe ser similar al siguiente.

    VBCopiarSub RenameWorksheets()

    Sheets("Sheet1").Name = "New Name"

    EndSub

    Vuelva a cambiar la hoja denominada New Name a Sheet1 de forma manual y, acontinuacin, ejecute la macro. El nombre debe volver a cambiar a New Name.

    Modificacin del cdigo grabado

    Ahora ha llegado el momento de investigar la coleccin Sheets que la grabadora de macrosus. El tema Sheets en la referencia del modelo de objetos incluye el siguiente texto.

    "La coleccin Sheets puede contener los objetos Chart o Worksheet. Si necesita trabajar

    con hojas de un solo tipo, consulte el tema de objetos para ese tipo de hoja".

    Como est trabajando solo con Worksheets, entonces, cambie el cdigo para que se vea de

    la siguiente forma.

  • 7/29/2019 Introduccion a VBA en Excel 2010

    10/35

    VB

    CopiarSub RenameWorksheets()

    Worksheets("Sheet1").Name = "New Name"

    EndSub

    Funcin de bucle

    Una limitacin del cdigo en este punto es que solo realiza el cambio en una hoja de

    clculo. Se puede agregar otra lnea para cada hoja de clculo cuyo nombre desea cambiar,pero qu sucede si desconoce cuntas hojas de clculo hay o cules son sus nombres

    actuales? Se necesita una forma de aplicar alguna reglapara cada hoja de clculo del libro.

    VBA tiene una construccin denominada bucle For Each que es ideal. El bucle For Each

    examina cada elemento en un objeto de coleccin, como Worksheets, y se puede usar para

    llevar a cabo una accin (como cambiar un nombre) en algunos o en todos esos elementos.

    Para obtener ms informacin acerca del bucle For Each, consulte lareferencia del lenguajede VBA. Haga clic en la seccin sobre los temas conceptuales de Visual Basic y, acontinuacin, en el tema sobre el uso de instrucciones For Each...Next. Adems, tenga en

    cuenta que la referencia del lenguaje de VBA, como la referencia del modelo de objetos,

    compensar ampliamente el tiempo que invierta examinndola, ya que es un lugarexcelente para buscar ideas si se estanca cuando trabaja con cdigo.

    Use el tercer ejemplo del tema sobre el uso de instrucciones For Each...Next para modificarla macro con el fin de que tenga un aspecto similar al siguiente cdigo.

    VB

    CopiarSub RenameWorksheets()

    ForEach myWorksheet In Worksheets

    myWorksheet.Name = "New Name"

    Next

    EndSub

    myWorksheet es una variable, es decir, lo que representa vara. En este caso, la variable

    myWorksheet representa sucesivamente cada hoja de clculo en la coleccin Worksheets.

    No es necesario usarmyWorksheet; se puede usar "x", "ws","HojaCalculoCambiarNombreAlContenidoCeldaB1" o (con algunas restricciones)

    prcticamente cualquier nombre que se desee. Una buena regla es usar nombres de

    variables que sean lo suficientemente extensos como para que recuerden a qu se refieren,pero no tan extensos que puedan recargar el cdigo.

    Si ejecuta la macro en su estado actual, se produce un error porque Excel requiere que cada

    hoja de clculo de un libro tenga un nombre nico. Sin embargo, la lnea siguiente indica a

    Excel que asigne a todas las hojas de clculo el mismo nombre.

    VB

    http://msdn.microsoft.com/es-es/library/ee441138.aspxhttp://msdn.microsoft.com/es-es/library/ee441138.aspxhttp://msdn.microsoft.com/es-es/library/ee441138.aspxhttp://msdn.microsoft.com/es-es/library/ee441138.aspxhttp://msdn.microsoft.com/es-es/library/ee441138.aspxhttp://msdn.microsoft.com/es-es/library/ee441138.aspx
  • 7/29/2019 Introduccion a VBA en Excel 2010

    11/35

    CopiarmyWorksheet.Name = "New Name"

    Para corregir la lnea y comprobar si el bucle For Each funciona, cambie la lnea de lasiguiente manera.

    VBCopiar

    myWorksheet.Name = myWorksheet.Name &"-changed"

    En lugar de intentar dar el mismo nombre a cada hoja de clculo, esta lnea cambia el

    nombre actual de cada hoja de clculo (myWorksheet.Name) anexando la palabra "-

    changed" al nombre actual.

    Cambio de nombre til

    La macro se est acercando a lo que podra ser la solucin para el problema que tiene en

    este momento. Lo que necesita ahora es tomar informacin de las hojas de clculo,especficamente de la celda B1 de cada hoja, y colocar esa informacin en los nombres delas hojas de clculo.

    Esta vez, en vez de usar la grabadora de macros para averiguar cmo referirse a una celda,pruebe y vea si usando el objeto Cell logra su objetivo. Es un buen intento, pero si abre la

    referencia del modelo de objetos y busca el objeto Cell, notar que no existe ningn objeto

    Cell. En cambio, hay unobjeto CellFormat.

    El tema del objeto CellFormat incluye el siguiente cdigo en el primer ejemplo de cdigo.

    VBCopiar

    ' Set the interior of cell A1 to yellow.

    Range("A1").Select

    Resulta ser que usa Range para especificar un rango de celdas o simplemente una celdaindividual. Nuevamente, no es necesaria la parte .Select, pero s es necesario averiguar

    cmo hacer referencia a los contenidos del objeto Range, en oposicin al mismo objetoRange. Si se dirige al tema del objeto Range, puede leer que Range tiene Methods y

    Properties. Los contenidos de Range constituyen una cosa, no una accin, por lo que

    probablemente sea una Property. Si busca hacia abajo en la lista, podr ver la propiedad

    Value. Por lo tanto, intente lo siguiente.

    VB

    CopiarSub RenameWorksheets()

    ForEach myWorksheet In Worksheets

    myWorksheet.Name = myWorksheet.Range("B1").Value

    Next

    EndSub

    http://msdn.microsoft.com/es-es/library/bb210108.aspxhttp://msdn.microsoft.com/es-es/library/bb210108.aspxhttp://msdn.microsoft.com/es-es/library/bb210108.aspxhttp://msdn.microsoft.com/es-es/library/bb210108.aspx
  • 7/29/2019 Introduccion a VBA en Excel 2010

    12/35

    Obtendr un error si ejecuta esto en un libro que contiene hojas de clculo donde la celdaB1 est vaca, porque Range vaco tiene un valor de "" (una cadena de texto vaca), que no

    es un nombre de hoja de clculo vlido. De todas formas, ya es momento de crear algunos

    datos de ejemplo. Haga que las tres hojas de clculo del libro tengan un aspecto similar alde la siguiente figura y, a continuacin, ejecute la macro.

    Figura 4. Datos de ejemplo para la macro RenameWorksheets

    Los nombres de las hojas de clculo deben cambiar en consecuencia.

    Bsqueda de celdas vacas

    Como mencionamos anteriormente, la macro genera un error si alguna de las celdas B1 en

    el libro est vaca. En lugar de revisar manualmente todas las hojas de clculo, puede

    codificar la macro para que haga esto por usted. Antes de la lnea myWorksheet.Name,agregue la siguiente lnea de cdigo.

    VB

    Copiar

    If myWorksheet.Range("B1").Value ""Then

    Despus de la lnea myWorksheet.Nameagregue el texto siguiente.

    VB

    CopiarEndIf

  • 7/29/2019 Introduccion a VBA en Excel 2010

    13/35

  • 7/29/2019 Introduccion a VBA en Excel 2010

    14/35

    tiempo. Sin comentarios, podra ser difcil comprender lo que sucede en el cdigo,

    especialmente si la persona que lo modifica no es la misma persona que lo escribe en

    primer lugar. Al agregar comentarios para la condicin If y para la lnea que cambia el

    nombre de las hojas de clculo, se obtiene el siguiente cdigo.

    VBCopiarSub RenameWorksheets()

    Dim myWorksheet As Worksheet

    ForEach myWorksheet In Worksheets

    'make sure that cell B1 is not empty

    If myWorksheet.Range("B1").Value ""Then

    'rename the worksheet to the contents of cell B1

    myWorksheet.Name = myWorksheet.Range("B1").Value

    EndIf

    Next

    EndSub

    Para probar la macro, vuelva a cambiar el nombre de las hojas de clculo a Sheet1, Sheet2y Sheet3, y elimine los contenidos de la celda B1 en una o ms hojas de clculo. Ejecute la

    macro para comprobar si cambia los nombres de las hojas de clculo que tienen texto en la

    celda B1 y si deja las otras hojas sin modificaciones. La macro funciona para cualquiercantidad de hojas de clculo, con cualquier combinacin de celdas B1 llenas y vacas.

    Ms cosas que se pueden hacer con VBA

    Esta seccin estudia algunas otras cosas que se pueden hacer con VBA en Excel 2010. Losejemplos de esta seccin estn diseados para proporcionar una idea de las funciones de

    VBA en lugar de centrarse en escenarios reales especficos. A medida que trabaja con losejemplos, quiz le resulte til repasar informacin sobre los objetos en cada paso. Puede

    encontrar esta informacin en la referencia del modelo de objetos.

    Importancia de una actitud abierta

    Una buena forma de aprender programacin en general, y VBA de Excel en particular, es

    adoptar una estrategia que implique intentar algo, ver si funciona y preguntarse cosas como:

    Qu podra intentar hacer a continuacin?

    Qu deseo aprender en primer lugar segn el uso que necesito darle a VBA?

    Qu puede ser simplemente divertido o interesante saber?

    Qu despierta mi curiosidad?

    Se recomienda encarecidamente al lector que investigue todos los caminos que se abrenhacia la ruta del conocimiento.

  • 7/29/2019 Introduccion a VBA en Excel 2010

    15/35

    Grficos

    Una tarea comn en Excel es crear un grfico basado en un rango de celdas. Cree unanueva macro llamada AssortedTasks y, a continuacin, escriba el siguiente texto en el

    Editor de Visual Basic.

    VB

    CopiarDim myChart As ChartObject

    Agregue una lnea para crear el objeto de grfico y asgnele la variable myChart.

    VB

    CopiarSet myChart = ActiveSheet.ChartObjects.Add(100, 50, 200, 200)

    Los nmeros en los parntesis determinan la posicin y el tamao del grfico. Los primeros

    dos nmeros son las coordenadas de la esquina superior izquierda y los segundos dosnmeros corresponden al ancho y alto.

    Cree una nueva hoja de clculo en blanco y ejecute la macro. El grfico que se crea no sirve

    porque no tiene datos. Elimine el grfico que acaba de crear y agregue las siguientes lneasal final de la macro.

    VB

    CopiarWith myChart

    .Chart.SetSourceData Source:=Selection

    EndWith

    Este es un patrn comn en la programacin de VBA. Primero crea un objeto, le asigna unavariable y, a continuacin usa la construccin WithEnd With para realizar tareas con el

    objeto. El cdigo de ejemplo le indica al grfico que use la seleccin actual para sus datos.

    (Selection es un valor para el parmetro Source del mtodo SetSourceData, no un valorde una propiedad del objeto; por lo tanto, la sintaxis de VBA requiere que use dos puntos y

    el signo igual [:=] en lugar de usar solo el signo igual [=] para asignar el valor.)

    Escriba algunos nmeros en las celdas A1:A5, seleccione las celdas y, a continuacin,

    ejecute la macro. El grfico se muestra como el tipo predeterminado, un grfico de barras.

    Figura 5. Grfico de barras creado mediante VBA

  • 7/29/2019 Introduccion a VBA en Excel 2010

    16/35

    Si no le gusta el grfico de barras, puede cambiar a algn otro tipo de grfico usando

    cdigo similar al siguiente.

    VBCopiarWith myChart

    .Chart.SetSourceData Source:=Selection

    .Chart.ChartType = xlPie

    EndWith

    xlPie es un ejemplo de una constante integrada, tambin conocida como constante

    enumerada. Toda la aplicacin Excel tiene varias de estas constantes que se encuentranmuy bien documentadas. Para obtener ms informacin acerca de las constantes integradas,

    consulte la seccin sobre enumeraciones de la referencia del modelo de objetos. Por

    ejemplo, las constantes para tipos de grfico se indican en la seccin sobre enumeraciones

    XlChartType.

    Los datos se pueden modificar. Por ejemplo, intente agregar esta lnea justo despus de la

    declaracin de variable.

    VBCopiarApplication.ActiveSheet.Range("a4").Value = 8

  • 7/29/2019 Introduccion a VBA en Excel 2010

    17/35

    Puede obtener una entrada de usuario y usar esa entrada para modificar los datos.

    VBCopiarmyInput = InputBox("Please type a number:")

    Application.ActiveSheet.Range("a5").Value = myInput

    Por ltimo, agregue las lneas siguientes al final de la macro.

    VB

    CopiarActiveWorkbook.Save

    ActiveWorkbook.Close

    La macro completa debera ser similar a la siguiente.

    VB

    CopiarSub AssortedTasks()

    Dim myChart As ChartObject

    Application.ActiveSheet.Range("a4").Value = 8

    myInput = InputBox("Please type a number:")

    Application.ActiveSheet.Range("a5").Value = myInput

    Set myChart = ActiveSheet.ChartObjects.Add(100, 50, 200, 200)

    With myChart

    .Chart.SetSourceData Source:=Selection

    .Chart.ChartType = xlPie

    EndWith

    ActiveWorkbook.Save

    ActiveWorkbook.Close

    EndSub

    Compruebe que las celdas A1:A5 sigan estando seleccionadas, ejecute la macro, escriba unnmero en el cuadro de entrada y, a continuacin, haga clic en Aceptar. El cdigo guarda y

    cierra el libro. Vuelva a abrir el libro y observe el cambio en el grfico circular.

    UserForms

    La seccin anterior mostraba cmo usar un cuadro de entrada sencillo para obtener una

    entrada de usuario. Adems del correspondiente cuadro de mensaje que muestra

    informacin, VBA proporciona amplias funcionalidades que puede usar para crear cuadros

    de dilogo personalizados, para codificar controles que se colocan directamente en las hojasde clculo o para manipular los cuadros de dilogo que estn integrados en Excel. Para

    obtener ms informacin acerca de estas funcionalidades, consultecontroles, cuadros de

    dilogo y formulariosen la referencia del programador de Excel 2007.

    Esta seccin completa la introduccin a VBA en Excel presentando un panorama general

    de UserForms.

    http://msdn.microsoft.com/es-es/library/bb149075.aspxhttp://msdn.microsoft.com/es-es/library/bb149075.aspxhttp://msdn.microsoft.com/es-es/library/bb149075.aspxhttp://msdn.microsoft.com/es-es/library/bb149075.aspxhttp://msdn.microsoft.com/es-es/library/bb149075.aspxhttp://msdn.microsoft.com/es-es/library/bb149075.aspx
  • 7/29/2019 Introduccion a VBA en Excel 2010

    18/35

    En la ficha Programador, haga clic en el botn Visual Basic para abrir el Editor de Visual

    Basic y, a continuacin, vaya al men Insertar y elija UserForm para abrir la vista Diseo

    de UserForm.

    Ver dos ventanas. Una representa el UserForm que est creando y la otra, el Cuadro de

    herramientas, muestra los distintos controles que puede agregar a su UserForm; porejemplo, botones de comandos, botones de opciones, casillas de verificacin, entre otros.

    Puede mover el mouse sobre un control del Cuadro de herramientas para ver qu tipo de

    control crea.

    Cree un UserForm muy sencillo con un solo botn que ejecute la macro Hello que creamos

    al comienzo de este artculo. En el Cuadro de herramientas, presione el controlCommandButton y, a continuacin, arrstrelo al UserForm para crear un botn de

    comando. Haga clic con el botn secundario en el botn de comando y elija Ver cdigo.

    La Sub que aparece es un esqueleto para unprocedimiento de evento que se ejecuta cuandose produce un evento en particular. En este caso, como el nombre de Sub indica, el evento

    que ejecuta el cdigo es un Clicken CommandButton1. Agregue la siguiente lnea al

    procedimiento de evento.

    VB

    CopiarRun("Hello")

    El Editor de Visual Basic debe ser ahora similar al siguiente.

    Figura 6. Procedimiento de evento CommandButton1_Click

    Guarde el libro, vaya al men Ventana y elija UserForm1 (UserForm) para volver a

    mostrar el UserForm. Haga clic en la flecha verde de la barra de herramientas para ejecutar

    el UserForm. Cuando aparece el cuadro de dilogo, haga clic en el botn de comando paraejecutar la macro Hello, que muestra el cuadro de mensaje "Hello, world!". Cierre el cuadro

    de mensaje para volver al UserForm que se ejecuta y, a continuacin, cierre el UserForm

    que se ejecuta para volver a la Vista Diseo.

  • 7/29/2019 Introduccion a VBA en Excel 2010

    19/35

    Qu sigue?

    Es posible que la informacin que se brinda en este artculo, combinada con un poco de

    experimentacin y tiempo de estudio de la referencia del modelo de objetos y la referencia

    del lenguaje de VBA, le resulte lo suficientemente til como para lograr cualquier tarea quelo impulsa a empezar a aprender sobre VBA. Si es as, excelente. De lo contrario, un buen

    paso es ampliar sus expectativas hacia un conocimiento ms general de VBA.

    Una manera de aprender ms sobre VBA es estudiar cdigo activo. Adems de los

    ejemplos proporcionados en la referencia del modelo de objetos y la referencia del lenguaje

    de VBA, hay una cantidad enorme de cdigo de VBA en Excel disponible en distintasfuentes en lnea, incluidos los artculos en MSDN, sitios web desarrollados por los

    profesionales ms valiosos de Microsoft (MVP) que se especializan en Excel y otros sitios

    web que puede encontrar mediante una bsqueda rpida en Web.

    El cdigo de estos recursos puede ayudarlo a resolver problemas inmediatos de

    programacin y proporcionarle ideas para proyectos que ni siquiera ha pensado an.

    Si prefiere realizar un estudio ms sistemtico de VBA, pueden encontrar varios libros

    sobre VBA, as como varias revisiones de cada uno de estos libros disponibles en Web que

    pueden ser tiles para elegir su mejor forma de aprendizaje.

    MACROS EN EXCEL Parte I

    Excel es un programa que tiene un gran potencial, pero la mayora de la gente lo maneja de una forma muysimple,utilizando solo opciones bsicas, pero hay algo muy importante que tengo que decirles.Excel cuenta con un lenguaje muy poderoso llamado Visual Basic, este es solo una parte del lenguaje,pero permite hacer o resolver los problemas mas fcilmente, solo debemos aprender a programarlo ypara eso es este curso, podra la gente decir que este curso es un nivel muy alto de Excel y quizs si lo sea,pero es fcil de aprender ya que se manejaran trminos sencillos, a mi me gusta hablar con palabrasque todo el mundo entienda y eso lo hace mas fcil. La programacin que emplea en este curso o lasestructuras que aparecen son creadas por suservidor, ya que para manejar la programacinde Visual Basic con Excel es necesario tener mucha creatividad,cada persona puede crear estructuras diferentes pero que trabajen igual. As que manos a la obra.

    Fase 1

    Primeramente debemos de saber que es una Macro y a continuacin se explica el termino:

    Una Macro son una serie de pasos que se almacenan y se pueden activar con alguna tecla de control yuna letra.Por ejemplo, todos los das empleo frecuentemente en mis celdas los mismos pasos: Tamao de Fuente(Tamao de la letra), Negrita, Fuente(Tipo de letra) y Color de Fuente(Color de Letra), para no estar repitiendoestospasos los puedo almacenar en una macro y cuando ejecute la macro los pasos antes mencionados seejecutaranlas veces que yo lo desee. A continuacin te muestro como grabar una macro y ejecutarla:

    1. Trasldate a la celda A1 y escribe tu Nombre. Por ejemplo, Ramn y presiona Enter2. Regrsate a la celda A1, porque cuando diste Enter bajo de celda o cambio el rumbo.

  • 7/29/2019 Introduccion a VBA en Excel 2010

    20/35

    3. Da clic en el Men Ver, seguido por la Opcin Barra de Herramientas y elija Visual Basic.Se activara la barrade herramientas Visual Basic.

    1. Da clic en el botn Guardar Macro, el que tiene la ruedita Azul. Windows activa el cuadro de dialogoGrabar Macro, el cual permitir darle el nombre a la macro y cual ser el mtodo abreviado paraejecutarla.El mtodo Abreviado se refiere con que letra se va activar la macro, obviamente se activara con latecla Controly la letra que usted quiera, de preferencia en minscula, porque si activa las maysculas lamacro se activarapresionando la tecla Shift + Control + la letra que usted indico.

    1. Donde dice Nombre de la macro ya aparece el nombre que llevara la macro en este caso Macro1.si deseacambiar el nombre escriba uno nuevo, pero yo le recomiendo que as lo deje.

    2. En la opcin Mtodo Abreviado aparece que se activara con la tecla Control(CTRL) + la letra queusted indica,de clic en el cuadrito y ponga una letra, por ejemplo ponga la letra a(en minsculas).La macro se activaracuando este lista con la tecla Control + a

    3. De clic en el Botn Aceptar. Windows empezara a grabar todos los pasos en la Macro1.yel botn de la rueditaazul cambiara de forma ahora ser un cuadrito Azul, se llamara Detener grabacin. Lo utilizaremoscuandoterminemos de indicarle los pasos para detener la grabacin.

    4. Cambie el Tipo de Letra en el Botn Fuente de la barra de herramientas Formato5. Cambie el tamao de la letra en el Botn Tamao de Fuente de la barra de herramientas

    Formato6. Presione el Botn Negrita de la barra de herramientas Formato7. Cambie el color de la letra en el Botn Color de Fuente de la barra de herramientas Formato.

    Recuerde quetodos estos pasos estn siendo almacenados en la macro que estamos grabando y tambin recuerdequeestos pasos se estn efectuando en la celda A1.

    8. Presione el Botn Detener Grabacin de la barra de Herramientas de Visual Basic. El que tiene elcuadritoazul presionado.

  • 7/29/2019 Introduccion a VBA en Excel 2010

    21/35

    Listo Excel guardo los pasos en la Macro1 que se activara presionado la teclaControl + a

    1. Escribe otro nombre en la celda C1 y presiona Enter, despus regresa a la celda C1.2. Presiona la tecla Control + a. Windows efectuara todos los pasos grabados sobre la celda C1, esto

    quieredecir que el nombre que esta en C1 tendr las caractersticas del que esta en A1. Tipo de letra,tamao,negrita y el color que indicaste al grabar la macro.

    Nota. Cada vez que presiones Control + a Excel ejecutara la macro y efectuara los pasos en la celda que teencuentres. Puedes grabar todas las macros que desees.

    Ahora te recomiendo que domines estos pasos antes de pasar a la siguiente fase. Trata de crearmacros que almacenen pasos como estos, recuerda los pasos los vas a indicar tu, que no se te olvide detener

    la grabacin despus de que indicaste los pasos, repite este ejercicio las veces que sea necesario paraaprendrtelo bien.

    Practica I

    Genera las siguientes Macros:

    Graba una Macro que se active con Control + b y que esta macro permita abrir un archivo

    Graba una Macro que se active con Control + c y que esta macro permita insertar un WordArt

    Muchos pensaran que esto no es nada pero ya veremos mas adelante cuando mezclemos los cdigos quegenera

    Excel con los de Visual Basic. Esto ser pura Dinamita.

    Fase 2

    Bien, ahora despus de practicar la Fase 1 con diferentes ejemplos o Macros pasaremos a la siguiente Faseque nospermitir observar los cdigos que hemos generados con nuestra macros. Te recomiendo que salgasde Excel y vuelvas a entrar, para que trabajes limpio sin ninguna macro y empezando de la macro1 de nuevo.

    OBSERVANDO LOS CODIGOS DE UNA MACRO DE EXCEL

    Crearemos una macro y veremos sus cdigos:

    Para observar los cdigos de una macro debemos de seguir los siguientes pasos:

    1. Primeramente trasldese a la celda A5 antes de empezar la grabacin de la Macro2. Presione el Botn Grabar Macro de la barra de Herramientas Visual Basic. Excel muestra el cuadro

    deDialogo Grabar Macro

    3. en la opcin Mtodo Abreviado escriba la letra r, por lo tanto la macro se llamara con Control + r4. Presione el botn Aceptar. Excel inicia la grabacin del la Macro15. Trasldese ala celda A1 y escriba Ramn, despus presione Enterpara aceptar el valor en la celda

  • 7/29/2019 Introduccion a VBA en Excel 2010

    22/35

    6. Pare la grabacin de la macro presionando el botn Detener Grabacin de la barra de herramientasVisual Basic. Excel a grabado los pasos y a generado un cdigo, Observmoslos:

    7. Presione la tecla Alt + la tecla de funcin F11(Alt + F11). Excel nos traslada al Editor de Visual Basic.Si este editor no se activa es que Excel no esta bien instalado o se a borrado. Tambin puedeacceder desdeel Men Herramientas, Macro y Editor de Visual Basic.

    8. Active los siguientes cuadros o ventanas:

    o De clic en el Men Very elija la opcin Explorador de Proyectoso De clic en el Men very elija la opcin Ventana Propiedades

    Estas dos opciones deben de estar siempre activadas ya que de ah depende todo lo que vallamos a hacer.

    1. Del cuadro Proyecto de doble clic en Mdulos o simplemente presione el signo de + queaparece en la opcinMdulos. Se activara debajo de Mdulos la Opcin Modulo1

    2. De doble clic en Modulo1. Se mostrara en el Editor de Visual Basic el cdigo de la macro quegrabamos de la siguiente forma:

    Sub Macro1()

    '

    ' Macro1 Macro

    ' Macro grabada el 08/04/2001 por RAMON MENDOZA OCHOA

    '

    ' Acceso directo: CTRL+r

    '

    Range("A1").Select

    ActiveCell.FormulaR1C1 = "Ramn"

  • 7/29/2019 Introduccion a VBA en Excel 2010

    23/35

    Range("A2").Select

    End Sub

    Que es lo que significa esto nos preguntaremos asombrados, a continuacin se da una expl icacin delo que hahecho Excel:

    Sub y End Sub indican el inicio y el final del procedimiento de la Macro1 Todo lo que aparece con un apostrofe indica que no se tomara en cuenta que es solo texto o

    comentarios yese texto debe de aparecer en un color, ya sea el color verde.

    Range("A1").Select Indica que lo primero que hicimos al grabar la macro fue trasladarnosa la celda A1.La orden Range nos permite trasladarnos a una celda

    ActiveCell.FormulaR1C1 = "Ramn" Esto indica que se escribir en la celda en que se encuentrael valor de texto Ramn. Todo lo que aparece entre comillas siempre ser un valor de texto. LaordenActiveCell.FormulaR1C1 nos permite escribir un valor en la celda activa.

    Range("A2").Select Otra vez indicamos que se traslade a la celda A2. Esto se debe a quecuando escribimos el nombre de Ramn en A1 presionamos Entery al darEnterbajo a la celda A2.

    Para comprender mejor alteraremos el cdigo dentro del editor de Visual Basic.

    Que crees que pasara aqu con nuestra Macro:

    Sub Macro1()

    '

    ' Macro1 Macro

    ' Macro grabada el 08/04/2001 por RAMON MENDOZA OCHOA

    '

    ' Acceso directo: CTRL+r

    '

    Range("A1").Select

    ActiveCell.FormulaR1C1 = "Ramn"

    Range("B1").Select

    ActiveCell.FormulaR1C1 = "Calle 21 de Marzo #280"

    Range("C1").Select

    ActiveCell.FormulaR1C1 = "31-2-47-13"

    Range("D1").Select

    ActiveCell.FormulaR1C1 = "Nogales Sonora"

  • 7/29/2019 Introduccion a VBA en Excel 2010

    24/35

    Range("E1").Select

    ActiveCell.FormulaR1C1 = "CONALEP NOGALES"

    End Sub

    As es acabo de alterar el cdigo y cuando regrese a Excel y ejecute la macro con Control + rhar losiguiente:

    En A1 escribir Ramn

    En B1 escribir Calle 21 de Marzo #280

    En C1 escribir 31-2-47-13

    En D1 escribir Nogales Sonora

    En E1 escribir CONALEP NOGALES

    As que salgamos del editor dando clic en el Men Archivo y eligiendo la opcinCerrar y volver a MicrosoftExcel.Si no desea salir por completo de clic en el botn Microsoft Excel que se encuentra activado en la barra detareas ycuando dese volver al editor de clic en el botn Microsoft Visual Basic que se encuentra en la barra deTareas.

    Ahora ya que salimos de Visual Basic y estamos en Excel de Nuevo ejecutemos la macro presionandoControl + ry veamos los resultados de nuestra modificacin.

    Que te parece es sencillo o No?, Claro necesitamos practicar bastante para dominar esto, as que repasa laFase 2cuantas veces sea necesario, otra cosa no trates de generar cdigos muy complejos en tus macros porque tevas a

    enredar, poco a poco se va lejos.

    Practica II

    Genera una Macro que escriba un nombre en una celda y lo ponga negrita y observa el Cdigo.

    Genera una Macro que escriba un nombre en una celda y lo Centre y observa el Cdigo.

    Genera una Macro que escriba un nombre en una celda y cambie el tamao de la letra a 20 puntos y observael Cdigo.

    Cdigos Ms comunes:

    Trasladarse a una Celda

    Range("A1").Select

    Escribir en una Celda

    Activecell.FormulaR1C1="Ramon"

    Letra Negrita

  • 7/29/2019 Introduccion a VBA en Excel 2010

    25/35

    Selection.Font.Bold = True

    Letra Cursiva

    Selection.Font.Italic = True

    Letra Subrayada

    Selection.Font.Underline = xlUnderlineStyleSingle

    Centrar Texto

    With Selection

    .HorizontalAlignment = xlCenter

    End With

    Alinear a la izquierda

    With Selection

    .HorizontalAlignment = xlLeft

    End With

    Alinear a la Derecha

    With Selection

    .HorizontalAlignment = xlRight

    End With

    Tipo de Letra(Fuente)

    With Selection.Font

    .Name = "AGaramond"

    End With

    Tamao de Letra(Tamao de Fuente)

    With Selection.Font

    .Size = 15

    End With

    Copiar

    Selection.Copy

  • 7/29/2019 Introduccion a VBA en Excel 2010

    26/35

    Pegar

    ActiveSheet.Paste

    Cortar

    Selection.Cut

    Ordenar Ascendente

    Selection.Sort Key1:=Range("A1"), Order1:=xlAscending, Header:=xlGuess, _

    OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom

    Orden Descendente

    Selection.Sort Key1:=Range("A1"), Order1:=xlDescending, Header:=xlGuess, _

    OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom

    Buscar

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

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

    False).Activate

    Insertar Fila

    Selection.EntireRow.Insert

    Eliminar Fila

    Selection.EntireRow.Delete

    Insertar Columna

    Selection.EntireColumn.Insert

    Eliminar Columna

    Selection.EntireColumn.Delete

    Abrir un Libro

    Workbooks.Open Filename:="C:\Mis documentos\video safe 3.xls"

    Grabar un Libro

    ActiveWorkbook.SaveAs Filename:="C:\Mis documentos\piscis.xls", FileFormat _

    :=xlNormal, Password:="", WriteResPassword:="", ReadOnlyRecommended:= _

  • 7/29/2019 Introduccion a VBA en Excel 2010

    27/35

    False, CreateBackup:=False

    Estos serian algunos cdigos muy comunes en Excel, pero si usted desea puede generar mas cdigosde otras opciones, es cuestin de que los ocupe.

    Antes de pasar a la Fase 3 es necesario que domines generarMacros y Observar sus cdigos que seencuentran

    en la Fase 2. Recuerda esto es de mucha practica y para eso es necesario aprender bien las fases Anteriores.

    .

    Fase 3

    CREANDO FORMULARIOS Y PROGRAMNDOLOS

    Antes de Empezar esta nueva fase te recomiendo que salgas de Excel y vuelvas a entrar, esto es porsi estuviste practicando los cdigos, para que no quede una secuencia de Macros.

    Ahora te enseare a dominar lo mximo de Excel que es crear formularios y programarlos, bueno unformulario es una ventana que se programa por medio de controles y estos controles responden a sucesos

    que nosotrosprogramamos. Todo esto se encuentra dentro de Visual Basic.

    A continuacin Muestro como crear un formulario y como programarlo:

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

    o De clic en el Men Very elija la opcin Explorador de Proyectos

    o De clic en el Men very elija la opcin Ventana Propiedades

    2. Del Men Insertarelija la Opcin UserForm. Esto inserta el Formulario queprogramaremos concontroles. En el Explorador de Proyecto se observara que se insertoel UserForm.

  • 7/29/2019 Introduccion a VBA en Excel 2010

    28/35

    Tambin cuando de clic en el Formulario USERFORM1 se debe de activarel Cuadro de Herramientas, si nose activade clic en el Men Very elija la opcin Cuadro de Herramientas.

    1. Elija del Cuadro de Herramientas el Control Etiqueta el que tiene la A y Arrastre dibujando en el

    FormularioUSERFORM1 la etiqueta. Quedara el nombre Label1, despus de un clic en la etiqueta dibujada ypodrmodificar el nombre de adentro y pondremos ah Nombre. Si por error da doble clic en la etiqueta ylo mandaa la pantalla de programacin de la etiqueta, solo de doble clic en UserForm1 que se encuentra en elExplorador de Proyecto.

  • 7/29/2019 Introduccion a VBA en Excel 2010

    29/35

    2.Elija del Cuadro de Herramientas el control Cuadro de Texto el que tiene ab y arrastre dibujandoen elformulario USERFORM1 el cuadro de texto a un lado de la etiqueta que dice Nombre. El cuadro detexto debede estar vaco y su nombre ser Textbox1, el nombre solo aparecer en el control.

    3.

    4.5. Haga los dos pasos anteriores igualmente poniendo Direccin en la Label2 y Telfono en la Label3

    y tambindibjeles su Textbox. Esto quedara as despus de haberlo hecho

  • 7/29/2019 Introduccion a VBA en Excel 2010

    30/35

    Si tiene algn problemaal dibujar las etiquetas o los cuadros de texto, solo cmbiele el nombre a laetiqueta o el cuadro de texto en la Ventana Propiedades la opcin se llama (Name).El Error que marque puede serNombre Ambiguo, pero si le cambias el Nombre al control se quitara el error.Puedes ponerle cualquier nombre enlugar de Label1.

    Solo altera esto si te marca error, si NO djalo as.

    Los controles como las Etiquetas y Cuadros de Textos pueden modificrseles algunas opciones en la VentanaPropiedadesPara hacer esto es necesario tener conocimiento sobre las propiedades de los controles.No altere las propiedades si no las conoce.

  • 7/29/2019 Introduccion a VBA en Excel 2010

    31/35

    1. Elija del Cuadro de Herramientas el control Botn de Comando y Arrastre dibujando en elFormularioUSERFORM1 el Botn, despus de un clic en elnombre del Botn dibujado y podr modificar elnombre ypondremos ah Insertar. Si por error da doble clic en la Botn y lo manda a la pantalla deprogramacin de laetiqueta, solo de doble clic en UserForm1 que se encuentra en el Explorador de Proyecto.

  • 7/29/2019 Introduccion a VBA en Excel 2010

    32/35

    As quedara el Formulario formado por los controles:

  • 7/29/2019 Introduccion a VBA en Excel 2010

    33/35

    1. Ahora de doble clic sobre el control Textbox1 para programarlo y despus inserte el siguientecdigo:

    Private Sub TextBox1_Change()

    Range("A9").Select

    ActiveCell.FormulaR1C1 = TextBox1

    End Sub

    Esto indica que se valla a A9 y escriba lo que hay en el Textbox1

    Nota.-Lo que esta en azul lo genera Excel automticamente, usted solo escribir lo que esta en Negrita.

    Para volver al Formulario y programar el siguiente Textbox de doble clic en UserForm1 que se encuentra enelExplorador de Proyecto, o simplemente de clic en Ver Objeto en el mismo Explorador de Proyecto.

    1. Ahora de doble clic sobre el control Textbox2 para programarlo y despus inserte el siguientecdigo:

    Private Sub TextBox2_Change()

    Range("B9").Select

    ActiveCell.FormulaR1C1 = TextBox2

    End Sub

    Esto indica que se valla a B9 y escriba lo que hay en el Textbox2

    Para volver al Formulario y programar el siguiente Textbox de doble clic en UserForm1 que se encuentra en

    elExplorador de Proyecto, o simplemente de clic en Ver Objeto en el mismo Explorador de Proyecto.

    1. Ahora de doble clic sobre el control Textbox3 para programarlo y despus inserte el siguientecdigo:

    Private Sub TextBox3_Change()

    Range("C9").Select

  • 7/29/2019 Introduccion a VBA en Excel 2010

    34/35

    ActiveCell.FormulaR1C1 = TextBox2

    End Sub

    Esto indica que se valla a C9 y escriba lo que hay en el Textbox3

    Para volver al Formulario y programar el Botn de ComandoInsertarde doble clic en UserForm1 que seencuentra enel Explorador de Proyecto, o simplemente de clic en Ver Objeto en el mismo Explorador de Proyecto.

    1. Ahora de doble clic sobre el control Botn de Comando para programarlo y despus inserte elsiguiente cdigo:

    Private Sub CommandButton1_Click()

    Rem inserta un rengln

    Selection.EntireRow.Insert

    Rem Empty Limpia Los Textbox

    TextBox1 = Empty

    TextBox2 = Empty

    TextBox3 = Empty

    Rem Textbox1.SetFocus Enva el cursor al Textbox1 para volver a capturar los datos

    TextBox1.SetFocus

    End Sub

    Nota.-El comando Rem es empleado para poner comentarios dentro de la programacin, el comando Emptyesempleado para vaciar los Textbox.

    1. Ahora presione el botn Ejecutar User/Form que se encuentra en la barra deherramientas osimplemente la tecla de funcin F5

    Se activara el Userform1 y todo lo que escriba en los Textbox se escribir en Excel y cuando presione elbotn Insertar,se insertara un rengln y se vaciaran los Textbox y despus se mostrara el cursor en el Textbox1.

    En este archivo que usted bajo se encuentra una hoja de Excel Libre de Virus o sea que esta limpio,bralo sin ningn problema, ya que ah viene un ejemplo de la Macro ya realizada y solo la ejecutara y veracomotrabajan las Macros. Espero y ests pendiente porque vienen mas partes sobre este interesante curso deMacros.

  • 7/29/2019 Introduccion a VBA en Excel 2010

    35/35

    El Archivo Viene con el Nombre de Macro1

    tutorial realizado por el Profesor Ramn Mendoza Ochoa

    si estas interesado en excel te ofrecemos a parte del manual de macros deexcel que estas leyendo, nuestro manual de manejo de microsoft excelen

    esta direccion

    http://www.programatium.com/manual-de-excel.htmhttp://www.programatium.com/manual-de-excel.htmhttp://www.programatium.com/manual-de-excel.htmhttp://www.programatium.com/manuales/excel/p1.htmhttp://www.programatium.com/excel.htmhttp://www.programatium.com/manuales/excel/p1.htmhttp://www.programatium.com/excel.htmhttp://www.programatium.com/manuales/excel/p1.htmhttp://www.programatium.com/excel.htmhttp://www.programatium.com/manuales/excel/p1.htmhttp://www.programatium.com/excel.htmhttp://www.programatium.com/manual-de-excel.htm