Upload
hermis-ramos-espinal
View
228
Download
0
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#feedback7/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.aspx7/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.aspx7/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.aspx7/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.aspx7/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