Anda di halaman 1dari 31

Excel: Macros Bsicos

Visual Basic para aplicaciones

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
Sub Nombre()
End Sub

Coloquial
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

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

Absolutas
Range("A2").Select
Range("A2").Value = 5
Range("A3").Select

Select: Referencia de ubicacin


Value: = "Texto" o = valor
Offset: Desfase (Row,Column)

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

Revisa
Lo que es necesario en la macro
Lo que da valor al macro
"Quita la paja" paja

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

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: 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
Para dar un aviso:
Puedes tener OK,
Abort, Yes & No, etc

Ejemplo
MsgBox "Tu mensaje", (boton+simbolo)
MsgBox "Botones OK y Cancel", 1
Msgbox "Tu mensaje", 4+32

Msgbox

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

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

If condition Then
Statement

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

Comandos Logicos: Do...Loop


Comando

Do Until
Loop
(Si es Falso ,
ejectuto)

Uso

Ejemplo

Sirve para repetir


el procedimiento
muchas veces
hasta que
aparezca una
condicion que nos
hara parar el ciclo
de repeticiones

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

Dim counter as
integer

Comandos Logicos: Do...Loop


Comando

Uso
Sirve para
repetirse mientras
las condiciones se
cumplan

Do While
Loop
(Si es
verdadero,
ejecuto)

Ejemplo
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()
Statements
End Sub

Sub Auto_Close()
Statements
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:

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

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:
Absolutas :
Sheets("Sheet4").Select
Sheets("Sheet4").Name = "Pivote"
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
Function CelciusConversion(F)
Celsiusconversion = (5 / 9) * (F - 32)
End function
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

Anda mungkin juga menyukai