32
Excel: Macros Básicos Visual Basic para aplicaciones

Excel: Macros Básicos - LABINFORMATICAII · PDF file• Empezemos a hablar en Visual Basic Visual Basic Nosotros Sub Nombre() End ... Comandos Logicos: IF Comando Uso Ejemplo If condition

  • Upload
    lyduong

  • View
    223

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Excel: Macros Básicos - LABINFORMATICAII · PDF file• Empezemos a hablar en Visual Basic Visual Basic Nosotros Sub Nombre() End ... Comandos Logicos: IF Comando Uso Ejemplo If condition

Excel: Macros Básicos

Visual Basic para aplicaciones

Page 2: Excel: Macros Básicos - LABINFORMATICAII · PDF file• Empezemos a hablar en Visual Basic Visual Basic Nosotros Sub Nombre() End ... Comandos Logicos: IF Comando Uso Ejemplo If condition

• Una macro Excel es una serie de

procedimientos o funciones agrupados en un

módulo vba (visual basic para aplicaciones)

que se almacena para poder ejecutarse cuando

se invoque a dicha macro.

Page 3: Excel: Macros Básicos - LABINFORMATICAII · PDF file• Empezemos a hablar en Visual Basic Visual Basic Nosotros Sub Nombre() End ... Comandos Logicos: IF Comando Uso Ejemplo If condition

• El lenguaje vba esta enfocado a la realización

de programas sobre las herramientas Excel,

Access, Word. Con macros vba podemos crear

nuevas funciones para nuestras hojas Excel,

personalizar estilos y formatos, crear

programas para la resolución de cálculos

complejos y automatizar tareas.

Page 4: Excel: Macros Básicos - LABINFORMATICAII · PDF file• Empezemos a hablar en Visual Basic Visual Basic Nosotros Sub Nombre() End ... Comandos Logicos: IF Comando Uso Ejemplo If condition

• Las macros son usadas para economizar

procesos, evitando tener que repetir de tareas

dentro de una hoja de Excel.

• Excel incluye protecciones para ayudar a

proteger contra virus susceptibles de ser

transmitidos por macros. Para poder trabajar

con un libro que contiene macros, se debe

habilitar el manejo de macros dentro de

Microsoft Excel.

Page 5: Excel: Macros Básicos - LABINFORMATICAII · PDF file• Empezemos a hablar en Visual Basic Visual Basic Nosotros Sub Nombre() End ... Comandos Logicos: IF Comando Uso Ejemplo If condition

• En Excel se pueden realizar : Procedimientos: pasos repetidos y automáticos

Manejo de Objetos: un ítem que puedes controlar con botones

Funciones: Hacer calculos y devolver un valor x

Porque usar Macros

• Hacerlo mas rápido

• Evitar errores de entradas manuales

• Maximizar el uso de Excel

Page 6: Excel: Macros Básicos - LABINFORMATICAII · PDF file• Empezemos a hablar en Visual Basic Visual Basic Nosotros Sub Nombre() End ... Comandos Logicos: IF Comando Uso Ejemplo If condition

¿Por que Visual Basic?

• Visual Basic es el lenguaje en el que se apoya

Excel para hacer procedimientos por medio de

programación.

Page 7: Excel: Macros Básicos - LABINFORMATICAII · PDF file• Empezemos a hablar en Visual Basic Visual Basic Nosotros Sub Nombre() End ... Comandos Logicos: IF Comando Uso Ejemplo If condition

Grabar un Macro

Record Macro: Asigna un nombre y un procedimiento, pon "stop"

Puedes asignar un "shortcut"

Puedes editar las líneas de la grabación

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 años que tienes en la celda "B3"

Haz un "Scroll down" (Muévete en la hoja con las barritas)

En la celda "B4" pon una formula que calcule el numero de días vividos

En la celda "C5" coloca la leyenda "Días vividos"

STOP

Page 8: Excel: Macros Básicos - LABINFORMATICAII · PDF file• Empezemos a hablar en Visual Basic Visual Basic Nosotros Sub Nombre() End ... Comandos Logicos: IF Comando Uso Ejemplo If condition

Correr un Macro

• Pasos para correr • Selecciona todo lo que escribiste en la hoja

• Bórralo

• En el menú de macros, pon "play"

• Revisa que ejecute lo mismo que hicimos en el ejercido anterior

Agrega Shortcuts

(atajos de teclado)

Page 9: Excel: Macros Básicos - LABINFORMATICAII · PDF file• Empezemos a hablar en Visual Basic Visual Basic Nosotros Sub Nombre() End ... Comandos Logicos: IF Comando Uso Ejemplo If condition

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 programación, son comentarios y empiezan con un

apostrofe ' o REM (juega con estos dos iconos: )

Page 10: Excel: Macros Básicos - LABINFORMATICAII · PDF file• Empezemos a hablar en Visual Basic Visual Basic Nosotros Sub Nombre() End ... Comandos Logicos: IF Comando Uso Ejemplo If condition

Lenguaje visual:

• Empezemos a hablar en Visual Basic

Visual Basic Nosotros

Sub Nombre()

End Sub

Mellamo Nombre()

Acabé

Todas las instrucciones Visual Basic es mejor decirles que empiezen

Y que acaben SIEMPRE

Activar y desactivar

Page 11: Excel: Macros Básicos - LABINFORMATICAII · PDF file• Empezemos a hablar en Visual Basic Visual Basic Nosotros Sub Nombre() End ... Comandos Logicos: IF Comando Uso Ejemplo If condition

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

Page 12: Excel: Macros Básicos - LABINFORMATICAII · PDF file• Empezemos a hablar en Visual Basic Visual Basic Nosotros Sub Nombre() End ... Comandos Logicos: IF Comando Uso Ejemplo If condition

Propiedades:

Propiedades:

Cambian valores, formatos, ubican, etc,

• Select: Referencia de ubicación

• 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

Page 13: Excel: Macros Básicos - LABINFORMATICAII · PDF file• Empezemos a hablar en Visual Basic Visual Basic Nosotros Sub Nombre() End ... Comandos Logicos: IF Comando Uso Ejemplo If condition

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

Page 14: Excel: Macros Básicos - LABINFORMATICAII · PDF file• Empezemos a hablar en Visual Basic Visual Basic Nosotros Sub Nombre() End ... Comandos Logicos: IF Comando Uso Ejemplo If condition

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

Page 15: Excel: Macros Básicos - LABINFORMATICAII · PDF file• Empezemos a hablar en Visual Basic Visual Basic Nosotros Sub Nombre() End ... Comandos Logicos: IF Comando Uso Ejemplo If condition

Revision de Codigo:

Correr completo: F5

Correr completo: F5

Loop infinito: Esc (una sola vez, basta)

Page 16: Excel: Macros Básicos - LABINFORMATICAII · PDF file• Empezemos a hablar en Visual Basic Visual Basic Nosotros Sub Nombre() End ... Comandos Logicos: IF Comando Uso Ejemplo If condition

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

Page 17: Excel: Macros Básicos - LABINFORMATICAII · PDF file• Empezemos a hablar en Visual Basic Visual Basic Nosotros Sub Nombre() End ... Comandos Logicos: IF Comando Uso Ejemplo If condition

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

información al

usuario como

números o Texto y

guardar esa

información

(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

Page 18: Excel: Macros Básicos - LABINFORMATICAII · PDF file• Empezemos a hablar en Visual Basic Visual Basic Nosotros Sub Nombre() End ... Comandos Logicos: IF Comando Uso Ejemplo If condition

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

Page 19: Excel: Macros Básicos - LABINFORMATICAII · PDF file• Empezemos a hablar en Visual Basic Visual Basic Nosotros Sub Nombre() End ... Comandos Logicos: IF Comando Uso Ejemplo If condition

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

Page 20: Excel: Macros Básicos - LABINFORMATICAII · PDF file• Empezemos a hablar en Visual Basic Visual Basic Nosotros Sub Nombre() End ... Comandos Logicos: IF Comando Uso Ejemplo If condition

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

Page 21: Excel: Macros Básicos - LABINFORMATICAII · PDF file• Empezemos a hablar en Visual Basic Visual Basic Nosotros Sub Nombre() End ... Comandos Logicos: IF Comando Uso Ejemplo If condition

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

Page 22: Excel: Macros Básicos - LABINFORMATICAII · PDF file• Empezemos a hablar en Visual Basic Visual Basic Nosotros Sub Nombre() End ... Comandos Logicos: IF Comando Uso Ejemplo If condition

Cuando corro un Macro: Boton

¿Como hago para que al presionar un

Boton (imagen) se corra un Macro?

Page 23: Excel: Macros Básicos - LABINFORMATICAII · PDF file• Empezemos a hablar en Visual Basic Visual Basic Nosotros Sub Nombre() End ... Comandos Logicos: IF Comando Uso Ejemplo If condition

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 sería bueno correr los macros

al abrir o al cerrar el libro?

Page 24: Excel: Macros Básicos - LABINFORMATICAII · PDF file• Empezemos a hablar en Visual Basic Visual Basic Nosotros Sub Nombre() End ... Comandos Logicos: IF Comando Uso Ejemplo If condition

Ejercicio:

• Haz un macro que al abrirlo te de la bienvenida

Y al cerrarlo se despida de ti. (usa msgbox)

Hola!!!!

Adios!!!!

Page 25: Excel: Macros Básicos - LABINFORMATICAII · PDF file• Empezemos a hablar en Visual Basic Visual Basic Nosotros Sub Nombre() End ... Comandos Logicos: IF Comando Uso Ejemplo If condition

Practicas

¿Que reportes hago?

Page 26: Excel: Macros Básicos - LABINFORMATICAII · PDF file• Empezemos a hablar en Visual Basic Visual Basic Nosotros Sub Nombre() End ... Comandos Logicos: IF Comando Uso Ejemplo If condition

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

Page 27: Excel: Macros Básicos - LABINFORMATICAII · PDF file• Empezemos a hablar en Visual Basic Visual Basic Nosotros Sub Nombre() End ... Comandos Logicos: IF Comando Uso Ejemplo If condition

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

Page 28: Excel: Macros Básicos - LABINFORMATICAII · PDF file• Empezemos a hablar en Visual Basic Visual Basic Nosotros Sub Nombre() End ... Comandos Logicos: IF Comando Uso Ejemplo If condition

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

Page 29: Excel: Macros Básicos - LABINFORMATICAII · PDF file• Empezemos a hablar en Visual Basic Visual Basic Nosotros Sub Nombre() End ... Comandos Logicos: IF Comando Uso Ejemplo If condition

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

Page 30: Excel: Macros Básicos - LABINFORMATICAII · PDF file• Empezemos a hablar en Visual Basic Visual Basic Nosotros Sub Nombre() End ... Comandos Logicos: IF Comando Uso Ejemplo If condition

Explication:

Aplicaciones para hojas:

Absolutas :

Sheets("Sheet4").Select

Sheets("Sheet4").Name = "Pivote"

Relativas:

ActiveSheet.Select

ActiveSheet.Name = "Pivote2"

Page 31: Excel: Macros Básicos - LABINFORMATICAII · PDF file• Empezemos a hablar en Visual Basic Visual Basic Nosotros Sub Nombre() End ... Comandos Logicos: IF Comando Uso Ejemplo If condition

Funciones

• Son "Formulas" que con argumentos devuelven un valor.

• Hacen trasformaciones de datos a partir de bases lógicas

• 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

Page 32: Excel: Macros Básicos - LABINFORMATICAII · PDF file• Empezemos a hablar en Visual Basic Visual Basic Nosotros Sub Nombre() End ... Comandos Logicos: IF Comando Uso Ejemplo If condition

Llamar a la función:

Ahora apaece en el menu de f(x) funcion

Aparece como formula