31
Excel: Macros Básicos Visual Basic para aplicaciones strictamente necesario entender ingles By Renee Mangino 2008

macros-

Embed Size (px)

Citation preview

  • Excel: Macros BsicosVisual Basic para aplicacionesEstrictamente necesario entender ingles By Renee Mangino 2008

  • Objetivos de la sesion: Saber que en Excel se pueden realizar : Procedimientos: pasos repetidos y automticosManejo 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 rpidoEvitar errores de entradas manualesMaximizar 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 vividosEn la celda "C5" coloca la leyenda "Das vividos"STOP

  • Correr un MacroPasos para correrSelecciona todo lo que escribiste en la hojaBrraloEn el men de macros, pon "play"Revisa que ejecute lo mismo que hicimos en el ejercido anteriorAgrega 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()AcabTodas las instrucciones Visual Basic es mejor decirles que empiezen Y que acaben SIEMPREActivar y desactivar

  • Codigo: "Miprimermacro"Que.Como (Accion o propiedad)Range("B2").Select Referencia AbsolutaActivecell.Select Referencia Relativa

    El texto siempre va entre comillasPara no ser confunido con Texto

  • Propiedades: Propiedades: Cambian valores, formatos, ubican, etc,

    Select: Referencia de ubicacinValue: = "Texto" o = valorOffset: Desfase (Row,Column)AbsolutasRange("A2").SelectRange("A2").Value = 5Range("A3").Select

    RelativasActiveCell.selectActiveCell.Value = 5Activecell.Offset(1,0).Select

  • Propiedades:Ejercico: GRABA un macro de nombre formatosEscribe en 3 celdas diferentes 3 nombres de superheroesRellena una celda de color Cambia el color del texto a otraAgrega bordes a la terceraSelecciona 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 WithRevisaLo que es necesario en la macroLo que da valor al macro "Quita la paja" paja

  • Revision de Codigo:Sub superheroe()

    ' Escribe 3 superheroes

    Range("J4").Select ActiveCell.FormulaR1C1 = "Superman" Range("J5").Select ActiveCell.FormulaR1C1 = "La mujer maravilla" Range("J6").Select ActiveCell.FormulaR1C1 = "Afroman" 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: F5Correr completo: F5Loop infinito: Esc (una sola vez, basta)

  • Resumen:Hasta ahora ya aprend: Grabar macros, correr macros y editar macrosIdentificar donde acaba y donde empieza una macroOrdenar la macro con comentarios para recordar que est haciendoLeer codigo de Visual Basic Manejar coordenada absolutas y relativasSaber que es importante y que puedo borrar

  • Cuadros de dialogo:

  • Comandos Logicos: IF

  • 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 estasDos variantes de gaffette : Tu escoge los colores(6 columnas x 8 renglones) empieza en C3 y usa referencia absolutas

  • Comandos Logicos: Do...Loop

  • Comandos Logicos: Do...Loop

  • Cuando corro un Macro: Boton

    Como hago para que al presionar un Boton (imagen) se corra un Macro?

  • Al abrir o cerrar el libro: automaticosAuto_Open () o Auto_Close() son procedimientos que se ejecutan al abrir o cerrar el libro.

    Sub Auto_Open()Sub Auto_Close()Statements StatementsEnd SubEnd SubPorque sera bueno correr los macros al abrir o al cerrar el libro?

  • Ejercicio:Haz un macro que al abrirlo te de la bienvenidaY al cerrarlo se despida de ti. (usa msgbox)Hola!!!!Adios!!!!

  • Practicas Que reportes hago?

  • Ejercicio: SheetsHaz una base de datos de gastos:

  • SheetsGRABA un macro que haga una tabla dinamica con Mes en Renglones, Concepto en columnas y Tarjeta como campo de pagina. STOP

  • SheetsGRABA 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 valorStop

  • SheetsGraba un macro que grafique los gastos como columnas moradasSTOP

    *Haz una Macro "General" que llame a todas las macros que grabaste

    Graba un macro que al cerrarse el libro borre la Hoja llamada PivoteSTOP

  • Explication: Aplicaciones para hojas:

    Absolutas :Sheets("Sheet4").SelectSheets("Sheet4").Name = "Pivote"

    Relativas: ActiveSheet.SelectActiveSheet.Name = "Pivote2"

  • FuncionesSon "Formulas" que con argumentos devuelven un valor. Hacen trasformaciones de datos a partir de bases lgicasSe llaman por medio de un macroFunction Name(argument)StatmentsEnd function

    Function CelciusConversion(F)Celsiusconversion = (5 / 9) * (F - 32)End Function

    Sub Fahrenheit_Celsius()F = ActiveCell.ValueActiveCell.Offset(0, 3) = Celsiusconversion(F)End Sub

  • Llamar a la funcin: Ahora apaece en el menu de f(x) funcion Aparece como formula

    Declaraciones: Declare a variable: Si necesitas ver que tipos de datos hay en Visual Basic para declarar variables , busca: Visual Basic Data Types en GoogleEjemplos Dim X as integer (variable de numero entero)Dim X as string (Cadena de texto)Dim X as Decimal (para numeros decimales)

    Dim X As interger : el valor de x ser un enteroDin X as String: el valor de X ser una secuencia de caracteres (texto)

    Botones y Simbolos: En la ayuda de Visual Basic est la tabla de correspondencia de botones y simbolos: Presiona F1 y busca msgbox (OJO: tienes que estar en el cuadro de edicion de VISUAL BASIC, no excel o powerpoint)Sub gaffette()' Doy instruccionesMsgBox "La idea es hacer un gaffette valido para el congreso", 1 + 64

    ' Coloreo la linea del encabezado Range("C3:H3").Select Selection.Interior.ColorIndex = 48 ' Escribo la leyenda "Participante" en el encabezado Range("C3").Select ActiveCell.FormulaR1C1 = "Participante" ' Combino las celdas de la parte del nombre Range("C4:H10").Select With Selection .MergeCells = True End With Range("B4").Select X = InputBox("Cuantos Coches Tienes?") Range("B4").Value = X If Range("B4").Value >= 2 Then Range("C4").Value = "Comprador Potencial" Range("C4").Select Selection.Interior.ColorIndex = 41 Range("C4").Select Else Range("C4").Value = "Comprador" Range("C4").Select Selection.Interior.ColorIndex = 40 Range("C4").Select End IfEnd SubLos comandos Do...Loop tienen dos posibles redacciones, La que se muestra en la presentacion y la siguiente:Do statements Loop Until condition Do statements Loop While conditionYa depende del estilo de programacion la utilizacion de los mismos. El ejemplo de este macro es para poner lo equivalente a la formula now() pero que no se mueva cada vez que yo cambio el valor. Puede usarse para saber en que fecha y hora se introdujo un registro.

    Estoy inspeccionado lo que hay en la columna A y si hay un Valor (Texto o Numero) entonces escribo la fecha y la hora en la columna de al lado (B) .

    Para que tenga sentido correr la macro pon en una hoja de Excell en la celda A1 el titulo "Nombre", y coloca 5 nombres diferentesQue queremos capturar la hora de registro.