PROGRAMACIÓN VBA PARA EXCEL 1. Lee bien la siguiente información, allí encontrarás varios ejemplos que debes escribir en editor de Visual Basic de Excel. VBA es una programación que está íntimamente relacionada con los libros y las hojas de cálculo y para esto Excel cuenta con un editor de programación donde se pone el código, a este se puede acceder, en Excel 2007, yendo a la pestaña programador y luego a la sección código donde hacemos clic en Visual Basic o presionando simultáneamente las teclas ALT F11. En Excel 2003 hay que ir al menú desplegable herramientas y de ahí la ruta macros y Editor de Visual Basic Ambas formas nos lleva, luego de hacer doble clic en Hoja1por ejemplo, al editor
Las macros que se escriban aquí, estarán relacionadas con la Hoja1. Comencemos por lo más simple y escribamos una macro que seleccione la celda B5de la Hoja1 del libro VBAProject (Libro2) Donde podemos ver que el código Se escribe entre "Sub" y "End Sub" y que el nombre No tiene espacios y termina con "( )". Para ejecutar este código pulsamos en el icono o en la tecla F5 para que aparezca el panel Macros
Donde puede verse el nombre de la macro que ya está seleccionada, luego pulsamos en "ejecutar" y después en el icono, o seleccionando " Alta + F5 que nos lleva a la pantalla con el resultado Que es la selección de la celda B5. Otro código muy simple es escribir un valor en una celda. Escribamos el valor 2007 en la celda D8 y si lo queremos borrar A estas alturas estamos en condiciones de explicar estos sencillos códigos:
En la programación VBA se trabaja con OBJETOS ( Hojas, celdas, Rangos, etc) que como todo objeto, tiene propiedades, por ejemplo el objeto celda pude tener la propiedad de alto, ancho, estar seleccionada, tener un valor, o no tener ninguno, etc En los códigos que hemos escrito tenemos los objetos Range("B5") ( celda B5) con la propiedad de estar seleccionada y el objeto Range("D8") ( celda D8) con la propiedad de tener un número (2007) y después estar vacía. CONTESTA EN TU CUADERNO: 2. Qué es la programación orientada a objetos 3. Qué instrucciones hay que escribir para que un programa borre la información que se encuentra en una celda, como por ejemplo la D8. 4. Qué instrucciones hay que escribir para que en una celda aparezca información, como por ejemplo en la celda D8 2007. 5. Lee bien la siguiente información y la escribes en tu cuaderno, aparece el código y para qué se utiliza. 6. De los códigos del uno al catorce realiza un ejemplo en el editor de Visual Basic de Excel, quedando así por ejemplo: Sub primero() Range("A1").Copy ActiveSheet.Paste End Sub También puede ser así: Sub primero() Range("A1").Value=" pedro" End Sub CÓDIGOS MÁS SIMPLES PARA EMPEZAR 1-Seleccionar una Celda Range("A1").Select 2-Escribir en la celda que está seleccionada en el momento actual Activecell.FormulaR1C1="Pedro" la combinación los códigos 1 y 2 es equivalente a esta sola línea: Range("A1").Value=" pedro" 3-Letra Negrita Range( A1 ).Font.Bold = True 4-Letra Cursiva Range( A1 ).Font.Italic = True
5-Letra Subrayada Range( A1 ).Font.Underline = xlunderlinestylesingle 6-Centrar Texto With Range( A1 ).HorizontalAlignment = xlcenter 7-Alinear a la izquierda With Range( A1 ).HorizontalAlignment = xlleft 8-Alinear a la Derecha With Range( A1 ).HorizontalAlignment = xlright 9-Tipo de Letra(Fuente) With Range( A1 ).Font.Name = "Arial" 10-Tamaño de Letra(Tamaño de Fuente) With Range( A1 ).Font.Size = 12 11-Copiar Range( A1 ).Copy 12-Pegar Range( A1 ) ActiveSheet.Paste 13-Cortar Range("A1").Cut 14-Ordenar Ascendente Range("A1").Sort Key1:=Range("A1"), Order1:=xlAscending, Header:=xlGuess, _ OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom 15-Orden Descendente Range("A1").Sort Key1:=Range("A1"), Order1:=xlDescending, Header:=xlGuess, _ OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom 16-Buscar
Cells.Find(What:="César", After:=ActiveCell, LookIn:=xlFormulas, LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:= _ False).Activate 17-Insertar Fila Range("A1").EntireRow.Insert 18-Eliminar Fila Range("A1").EntireRow.Delete 19-Insertar Columna Range("A1").EntireColumn.Insert 20-Eliminar Columna Range("A1").EntireColumn.Delete 21-Abrir un Libro Workbooks.Open Filename:="C:\Mis documentos\tablas dinamicas.xls" 22-Grabar un Libro ActiveWorkbook.SaveAs Filename:="C:\Mis documentos\tablas.xls", FileFormat _ :=xlnormal, Password:="", WriteResPassword:="", ReadOnlyRecommended:= _ False, CreateBackup:=False La mayoría de estos códigos se pueden verificar con la grabadora de Macros. TRABAJO 2 1. LEA LA SIGUIENTE INFORMACIÓN 2. ESCRIBA LOS EJEMPLOS ENE EL EDITOR DE VISUAL BASIC DE EXCEL SIGNIFICADO DE LA FORMULA R1C1 La FORMULA R1C1 se emplea para colocar el resultado de una línea de código en la celda que actualmente está activa. Veamos el siguiente caso Supongamos que queremos sumar los números de de la columna D y que el resultado aparezca en la celda F6 que es la que está seleccionada, el código que se debería escribir es el siguiente
El paréntesis destacado en rojo tiene por objetivo cubrir el tango donde están los números a sumar, o sea, desplazarme 2 columnas a la izquierda [-2] con 5 y 2 filas hacia arriba es decir [-5] y [-2]. Se entiende que R significan filas y C columnas y que anteponemos un - si nos desplazamos hacia la izquierda o hacia arriba. Cuando escribimos una función, como en el caso anterior, siempre debe ser escrita ActiveCell.FormulaR1C1 = "=SUM(R[]C[]:R[]C[])", pues el segundo igual es que caracteriza a la función y el paréntesis el rango donde se aplica. Lo que se acaba de hacer es lo mismo que dolocar =SUMA(D1:D3) en la celda F6 Hasta ahora hemos hecho una breve introducción a la programación VBA, pero una cosa fundamental es entender las estructuras de control de flujo de programa, lo que haremos mediante ejemplos. Empezaremos por crear una macro para poner a cero el contenido de ciertas celdas de nuestra hoja de trabajo. 1 Si no tienes abierto Excel2007, ábrelo para probar el ejercicio. 2 Abre el libro ejemplo_macros de la carpeta Ejercicios del curso. 3 Guarda el libro en la carpeta Mis Documentos con el nombre libro_macros para no modificar el original. 4 Pulsa las teclas ALT + F11. 5 Accede al menú Insertar para insertar un nuevo módulo. 6 Presiona sobre Módulo. 7 Vuelve al menú Insertar. 8 Selecciona Procedimiento... Nos aparece el cuadro de diálogo Procedimiento. 9 En el nombre del procedimiento escribe Limpiar. 10 Selecciona Procedimiento y que es de ámbito Público. 11 Presiona sobre Aceptar. 12 Escribe el código del procedimiento como se ve en la imagen, lo escrito en verde son comentarios aclaratorios, si quieres puedes no escribirlos. 13 Cierra la ventana del Editor de VisualBasic.
Ahora vamos a comprobar que funciona correctamente la macro creada. 14 Accede a la pestaña Vista. 15 Haz clic en el botón Macros. 16 Selecciona la macro creada Limpiar y pulsa sobre Ejecutar. 17 Observa como las celdas del rango D10:F10 se han puesto a cero y las del rango D11:F11 se han quedado sin contenido. No cierres el libro. Para practicar otras instrucciones de VBA, vamos a definir una macro para sumar tres celdas y dejar el resultado en otra. 18 Pulsa las teclas ALT + F11. Te aparecerá el módulo con el procedimiento limpiar. Si no es así, busca en la zona de la izquierda, en el explorador de proyectos, en la carpeta Módulos, el módulo Módulo1 y haz doble clic sobre él. 19 Accede al menú Insertar para insertar un nuevo módulo. 20 Selecciona Procedimiento... Nos aparece el cuadro de diálogo Procedimiento. 21 En el nombre del procedimiento escribe Sumar. 22 Selecciona Procedimiento y que es de ámbito Público. 23 Presiona sobre Aceptar. 24 Escribe el código del procedimiento como se ve en la imagen, lo escrito en verde son comentarios aclaratorios, si quieres puedes no escribirlos. 25 Cierra la ventana del Editor de VisualBasic. Ahora vamos a comprobar que funciona correctamente la macro creada. 26 Ve a la pestaña Vista. 27 Haz clic en el botón Macros. 28 Selecciona la macro creada Sumar y pulsa sobre Ejecutar. Observa como la celda F10 contiene la suma de las celdas B3, B4 y B5. Por último practicaremos con el bucle For each... next, muy útil en este tipo de programación. 29 Pulsa las teclas ALT + F11. Te aparecerá el módulo con el procedimiento limpiar. Si no es así, busca en la zona de la izquierda, en el explorador de proyectos, en la carpeta Módulos, el módulo Módulo1 y haz doble clic sobre él. 30 Accede al menú Insertar para insertar un nuevo módulo. 31 Selecciona Procedimiento...
Nos aparece el cuadro de diálogo Procedimiento. 32 En el nombre del procedimiento escribe Aumentar. 33 Selecciona Procedimiento y que es de ámbito Público. 34 Presiona sobre Aceptar. 35 Escribe el código del procedimiento como se ve en la imagen, lo escrito en verde son comentarios aclaratorios, si quieres puedes no escribirlos. Con este procedimiento aumentamos un 50% los valores contenidos en las celdas seleccionadas. 36 Cierra la ventana del Editor de VisualBasic. Ahora vamos a comprobar que funciona correctamente la macro creada. En este caso, como la macro funciona a partir de las celdas seleccionadas, tenemos que seleccionarlas antes de ejecutar la macro. 37 Selecciona un rango de celdas incluido en B3:B9 (selecciona los precios de los artículos que van a variar, puedes incluso seleccionar celdas no contiguas con la tecla Ctrl). 38 Ve a la pestaña Vista. 39 Haz clic en el botón Macros. 40 Selecciona la macro creada Aumentar y pulsa sobre Ejecutar. Observa como los valores de las celdas seleccionadas han aumentado un 50%.