Estrictamente necesario entender ingles By Renee Mangino 2008 Objetivos de la sesion: Saber que en Excel se pueden realizar : Procedimientos: pasos repetidos y automticos Manejo de Objetos: un tem que puedes controlar con visual (botones) Funciones: Hacer calculaciones y devolver un valor x (* si hay tiempo) Publico: Personas que no tienen conocimientos de programacin, pero tienen la necesidad o curiosidad de mejorar su trabajo:
Hacerlo mas rpido Evitar errores de entradas manuales Maximizar el uso de Excel
Donde est el Menu de Macros? Barra de Herramientas? Por que Visual Basic? Visual Basic es el lenguaje en el que se apoya Excel para hacer procedimientos por medio de programacin.
Cuando surge una duda pon en "Duda" visual basic para buscar cdigos que te sirvan Grabar un Macro Record Macro: Asigna un nombre y un procedimiento, pon "stop"
Puedes asignar un "shortcut" Puedes editar las lneas de la grabacin
Ejercicio: GRABA un Macro que ejecute lo siguiente: "Miprimermacro" Cambia el nombre a la hoja por "Prueba" Pon tu nombre completo en la Celda "B2" Pon los aos que tienes en la celda "B3" Haz un "Scroll down" (Muvete en la hoja con las barritas) En la celda "B4" pon una formula que calcule el numero de das vividos En la celda "C5" coloca la leyenda "Das vividos" STOP
Correr un Macro Pasos para correr Selecciona todo lo que escribiste en la hoja Brralo En el men de macros, pon "play" Revisa que ejecute lo mismo que hicimos en el ejercido anterior Agrega Shortcuts (atajos de teclado) Veamos Que hicimos? La carpeta de modulo solo aparece ya que se grab un macro, si no hay macros grabados no aparece
Abre la barra de herramientas de EDIT en Visual Basic
Las letras en verde no son parte de la programacin, son comentarios y empiezan con un apostrofe ' o REM (juega con estos dos iconos: )
Lenguaje visual: Empezemos a hablar en Visual Basic
Visual Basic Coloquial
Sub Nombre() End Sub
Mellamo Nombre() Acab Todas las instrucciones Visual Basic es mejor decirles que empiezen Y que acaben SIEMPRE Activar y desactivar Codigo: "Miprimermacro" Que.Como (Accion o propiedad) Range("B2").Select Referencia Absoluta Activecell.Select Referencia Relativa
El texto siempre va entre comillas Para no ser confunido con Texto
Select: Referencia de ubicacin Value: = "Texto" o = valor Offset: Desfase (Row,Column) Absolutas Range("A2").Select Range("A2").Value = 5 Range("A3").Select
Relativas ActiveCell.select ActiveCell.Value = 5 Activecell.Offset(1,0).Select Propiedades: Ejercico: GRABA un macro de nombre formatos Escribe en 3 celdas diferentes 3 nombres de superheroes Rellena una celda de color Cambia el color del texto a otra Agrega bordes a la tercera Selecciona las 3 celdas y centra el texto STOP
Sub superheroe() ''
Range("J4").Select ActiveCell.FormulaR1C1 = "Superman" Range("J5").Select ActiveCell.FormulaR1C1 = "La mujer maravilla" Range("J6").Select ActiveCell.FormulaR1C1 = "Afroman" Range("J4").Select With Selection.Interior .ColorIndex = 39 .Pattern = xlSolid End With Range("J5").Select Selection.Font.ColorIndex = 5 Range("J6").Select Selection.Borders(xlDiagonalDown).LineStyle = xlNone Selection.Borders(xlDiagonalUp).LineStyle = xlNone With Selection.Borders(xlEdgeLeft) .LineStyle = xlContinuous .Weight = xlThin .ColorIndex = xlAutomatic End With ..... Range("J4:J6").Select With Selection .HorizontalAlignment = xlCenter .VerticalAlignment = xlBottom .WrapText = False .Orientation = 0 .AddIndent = False .IndentLevel = 0 .ShrinkToFit = False .ReadingOrder = xlContext .MergeCells = False End With Revisa Lo que es necesario en la macro Lo que da valor al macro "Quita la paja" paja Revision de Codigo: Sub superheroe()
Rem Pone color solido a una celda Range("J4").Select With Selection.Interior .ColorIndex = 39 .Pattern = xlSolid End With
Rem Cambia color de celda Range("J5").Select Selection.Font.ColorIndex = 5
Rem Agrega bordes (Los bordes usan muchas lineas de codigo x que son 4 lineas 'en un rectangulo mas dos lineas interiores) Range("J6").Select With Selection.Borders(xlEdgeLeft) .LineStyle = xlContinuous .Weight = xlThin End With With Selection.Borders(xlEdgeTop) .LineStyle = xlContinuous .Weight = xlThin End With With Selection.Borders(xlEdgeBottom) .LineStyle = xlContinuous .Weight = xlThin End With With Selection.Borders(xlEdgeRight) .LineStyle = xlContinuous .Weight = xlThin End With
' Centra los textos de la seleccion de J4 a J6
Range("J4:J6").Select With Selection .HorizontalAlignment = xlCenter End With
End Sub Revision de Codigo: Correr completo: F5 Correr completo: F5 Loop infinito: Esc (una sola vez, basta) Resumen: Hasta ahora ya aprend: Grabar macros, correr macros y editar macros Identificar donde acaba y donde empieza una macro Ordenar la macro con comentarios para recordar que est haciendo Leer codigo de Visual Basic Manejar coordenada absolutas y relativas Saber que es importante y que puedo borrar Cuadros de dialogo: Comando Uso Ejemplo Msgbox Para dar un aviso: Puedes tener OK, Abort, Yes & No, etc MsgBox "Tu mensaje", (boton+simbolo) MsgBox "Botones OK y Cancel", 1 Msgbox "Tu mensaje", 4+32
Inputbox Para pedir informacin al usuario como nmeros o Texto y guardar esa informacin (variable)
Se requiere declarar variable Dim x as integer
Dim x as integer __________________________________________ Sub box() X = InputBox("Cuantos escalones hay en tu casa?") Range("J8").Value = X Range("J8").Select End Sub Comandos Logicos: IF Comando Uso Ejemplo If condition Then Statement Condicion con una alternativa , Si la condicion no es verdadera, no pasa nada Sub Macro5() ' Condicion con una alternativa If ActiveCell.Value < 0 Then MsgBox "Tu mensaje" End If End Sub If condition Then statement Else Condicion con dos alternativas: si la condicion es verdadera se ejecuta un procedimiento, si es falsa se ejecuta otro procedimiento
Sub Macro6() ' Condicion con dos alternativas If ActiveCell.Value < 0 Then MsgBox "Tu mensaje" Else Msgbox "Tu mensaje altenativo" End If End Sub IF condition Then statement ElseIF condition Then statement End if Ejecuta mas alternativas Cada vez que se llega a un "Elseif" se vuelve a evaluar la condicion No disponible para este curso Ejercicio: Quiero hacer un Gaffette para una expo de accesorios para automoviles: Si el participante es propietario de dos o mas coches, es mas probable que compre mis productos: Haz un Macro que funcione para hacer estas Dos variantes de gaffette : Tu escoge los colores (6 columnas x 8 renglones) empieza en C3 y usa referencia absolutas Participante Comprador Participante Comprador Potencial Comandos Logicos: Do...Loop Comando Uso Ejemplo Do Until Loop
(Si es Falso , ejectuto) Sirve para repetir el procedimiento muchas veces hasta que aparezca una condicion que nos hara parar el ciclo de repeticiones
Dim counter as integer Sub colores() hace la instruccion desde el inicio y hasta que la condicion se cumpla Do Until counter = 50 counter = counter + 1 ActiveCell.Select ActiveCell.Value = counter ActiveCell.Select Selection.Interior.ColorIndex = counter ActiveCell.Offset(1, 0).Select Loop End Sub 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 1 2 3 4 5 6 7 8 9 10 11 12 13 14 Comandos Logicos: Do...Loop Comando Uso Ejemplo Do While Loop (Si es verdadero, ejecuto) Sirve para repetirse mientras las condiciones se cumplan Sub Ahora() hace la instruccion hasta que se cambie de estado Range("a2").Select Do While ActiveCell.Value > 0 ActiveCell.Offset(0, 1).Select If ActiveCell.Value = "" Then ActiveCell.Value = Date + Time ActiveCell.Offset(1, -1).Select Else ActiveCell.Offset(1, -1).Select End If Loop End Sub Cuando corro un Macro: Boton
Como hago para que al presionar un Boton (imagen) se corra un Macro? Al abrir o cerrar el libro: automaticos Auto_Open () o Auto_Close() son procedimientos que se ejecutan al abrir o cerrar el libro.
Sub Auto_Open() Sub Auto_Close() Statements Statements End Sub End Sub Porque sera bueno correr los macros al abrir o al cerrar el libro? Ejercicio: Haz un macro que al abrirlo te de la bienvenida Y al cerrarlo se despida de ti. (usa msgbox) Hola!!!! Adios!!!! Practicas Que reportes hago? Ejercicio: Sheets Haz una base de datos de gastos: Mes Pagos Concepto Tarjeta Enero $2,500 Colegiatura Amex Enero $500 Mantenimiento Amex Febrero $800 Varios Amex Marzo $2,000 Mantenimiento BBVA Marzo $6,000 Varios Amex Abril $2,500 Colegiatura BBVA Abril $1,700 Varios BBVA Mayo $1,800 Mantenimiento BBVA Mayo $2,000 Varios BBVA Mayo $2,500 Colegiatura Amex Sheets GRABA un macro que haga una tabla dinamica con Mes en Renglones, Concepto en columnas y Tarjeta como campo de pagina. STOP Tarjeta (All) Sum of Pagos Concepto Mes Colegiatura Mantenimiento Varios Grand Total Abril 2500 1700 4200 Enero 2500 500 3000 Febrero 800 800 Marzo 2000 6000 8000 Mayo 2500 1800 2000 6300 Grand Total 7500 4300 10500 22300 Sheets GRABA un Macro que cambie el nombre a la Hoja de la tabla pivote por "Pivote" Stop
Graba un macro que copie los valores de la tabla pivote y los pegue en el renglon "A100" pero como valor Stop Sheets Graba un macro que grafique los gastos como columnas moradas STOP
*Haz una Macro "General" que llame a todas las macros que grabaste
Graba un macro que al cerrarse el libro borre la Hoja llamada Pivote STOP Explication: Aplicaciones para hojas:
Relativas: ActiveSheet.Select ActiveSheet.Name = "Pivote2" Funciones Son "Formulas" que con argumentos devuelven un valor. Hacen trasformaciones de datos a partir de bases lgicas Se llaman por medio de un macro Function Name(argument) Statments End function
Function CelciusConversion(F) Celsiusconversion = (5 / 9) * (F - 32) End Function
Sub Fahrenheit_Celsius() F = ActiveCell.Value ActiveCell.Offset(0, 3) = Celsiusconversion(F) End Sub Llamar a la funcin: Ahora apaece en el menu de f(x) funcion Aparece como formula