Está en la página 1de 12

Introduccin

Una macro es una secuencia de instrucciones


que automatiza alguna tarea.
Una macro puede ser ejecutada repetidas veces.
pueden ser creadas de dos formas:
Las macros p

Visual Basic para Aplicaciones (VBA) en


Excel: aspectos elementales

Automticamente, grabando una secuencia de


operaciones (ms fcil, pero ms limitado).
Manualmente, escribiendo una a una las instrucciones
(ms complejo, pero ms flexible).

Franco Guidi Polanco


Escuela de Ingeniera Industrial
Pontificia Universidad Catlica de Valparaso, Chile
fguidi@ucv.cl

Franco Guidi Polanco

Para iniciar (Office 2007)

17/11/10

Barra de herramientas (Office 2007)


Ficha del programador

Desplegar ficha de
programador en cinta de
opciones
i

Franco Guidi Polanco

17/11/10

Franco Guidi Polanco

17/11/10

Seguridad de macros (Office 2007)

Guardado de archivos en Office 2007


El guardado de planillas que contienen macros
debe hacerse en archivos con macros
habilitadas, de extensin XLSM.

Franco Guidi Polanco

17/11/10

Tipos de macros en VBA

Franco Guidi Polanco

17/11/10

Escritura de cdigo en VBA


Se debe ingresar a la ventana del editor de VBA
(oprimir botn Visual Basic en ficha del
programador, o ALT-F11).

Subrutinas (VBA sub procedures): comandos que


realizan tareas.
Funciones (VBA functions): retornan un valor,
como las funciones integradas de Excel. Pueden
ser utilizadas por otras funciones o subrutinas, o
directamente desde una celda de una planilla.

El editor de VBA es otra aplicacin, pero opera


integradamente con Excel.

Franco Guidi Polanco

17/11/10

Franco Guidi Polanco

17/11/10

Vista del Editor VBA

Insercin de un mdulo
Oprimir botn derecho sobre ventana de proyecto
y seleccionar Insertar - Mdulo

Franco Guidi Polanco

17/11/10

Franco Guidi Polanco

17/11/10

10

Cdigo en un mdulo

Sub procedures

Franco Guidi Polanco

17/11/10

11

Franco Guidi Polanco

17/11/10

12

Identificacin de Sub procedures

Ejecucin de Sub procedures

Comienzan con la palabra Sub y terminan con


End Sub .
Se identifican por un nombre (seguido de
parntesis)
Ejemplo:
Nombre
Inicio Sub
procedure

Sub
procedure

Fin Sub
procedure
Franco Guidi Polanco

Botn ejecutar en editor de VBA

En Excel: Herramientas Macro - Ejecutar

Parntesis
(siempre van)

Instrucciones
de Sub procedure
17/11/10

13

Elementos bsicos de cualquier programa


(incluyendo Sub procedures)
Tipos de
datos
datos,
variables y
operadores
p

Variables
Cada variable se identifica por su nombre (recomendable
que sea significativo).
El nombre de una variable puede contener casi cualquier
letra o smbolo, pero debe comenzar siempre por una letra.
No se deben usar espacios ni comas como parte de un
nombre de variable, como tampoco los smbolos: #, $, %,
& o !, ni operadores aritmticos.
Por ejemplo:

Estructuras
de control
Sub procedure

edad, cantidad_asistentes, NivelLiquido, GASTOS

Instrucciones
elementales

Expresiones

Franco Guidi Polanco

17/11/10

No hay distincin entre maysculas y minsculas, por lo


tanto los identificadores: balanceFinal, BalanceFinal y
BALANCEFINAL hacen referencia a la misma variable.
15

Franco Guidi Polanco

17/11/10

16

Variables y el operador de asignacin

Variables y tipos de datos

VBA, por omisin, crea automticamente


variables cuando encuentra en el cdigo un
identificador vlido.
Para asignar un valor a una variable se debe
utilizar el operador de asignacin.

Si las variables son creadas automticamente, el


tipo de dato que almacenan depende del valor
asignado:
Si se asigna un nmero la variable ser numrica y se
podrn
d realizar
li
con ella
ll operaciones
i
aritmticas.
it ti

dato = 100
Operador
asignacin

identificador_variable
Lado izquierdo
(receptor)
Franco Guidi Polanco

17/11/10

Si se asigna un texto (que no represente un nmero) no


se podrn realizar operaciones numricas.
numricas Los textos
deben escribirse siempre entre comillas dobles ().

valor

Lado derecho
(valor a asignar)

d
dato
= Hola
l
17

Franco Guidi Polanco

Variables y tipos de datos

Si una variable recibe como valor un texto que


q
representa a un nmero, entonces con esa variable s se
pueden realizar operaciones aritmticas.

Los argumentos de los operadores aritmticos son


valores numricos (nmeros o variables
numricas) y generan como resultado un nmero.
Operadores:

dato = 100

17/11/10

18

Operadores aritmticos

Caso particular:

Franco Guidi Polanco

17/11/10

19

Suma: +
Resta: Multiplicacin:
l l
*
Divisin: /
Divisin entera: \
Elevacin a potencia: ^

Franco Guidi Polanco

17/11/10

20

Operadores relacionales

Operadores lgicos

Los operadores relacionales permiten comparar


valores en expresiones. Generan como resultado
un valor lgico (verdadero o falso).
Operadores relacionales:

Los argumentos de operadores lgicos son valores


lgicos y generan como resultado otro valor lgico.
Operadores
p
lgicos
g
(existen
(
otros):
)

Mayor: >
Menor: <
Mayor o igual:
l >=
Menor o igual: <=
Igual: =

Franco Guidi Polanco

And: conjuncin
Or: disyuncin
Not: negacin

17/11/10

21

Operador de concatenacin

Franco Guidi Polanco

Lgicas: generan como resultado un valor lgico


(se utilizan generalmente como condiciones).
Ejemplo:
Edad > 18
(Edad > 18) And (Edad < 25)
((Valor <> 8)) Or (Numero
(
= 3)) Or (Numero
(
< 0))

HolaMundo

HolaMundo

17/11/10

22

Aritmticas: generan como resultado un nmero.


Ejemplo:
(3 * 4) / 5

& (ampersand)

nombre = Hola
nombre & Mundo

17/11/10

Expresiones

Se utiliza para concatenar dos cadenas de


caracteres:

Ejemplo:
Hola & Mundo

Franco Guidi Polanco

23

Instrucciones elementales

Instrucciones elementales

Para ingreso de datos mediante un cuadro de


dilogo:
InputBox( texto a desplegar )

Para despliegue de resultados mediante cuadro de


dilogo:
MsgBox texto a desplegar

Pedro
Franco Guidi Polanco

17/11/10

25

Instrucciones elementales

Instrucciones elementales

Para convertir valor a entero (importante en el


ingreso de datos):
CInt( valor )
Importante:
p
Toda vez q
que el usuario ingrese
g
valores que se suponen enteros, utilizaremos CInt
para convertir el valor ledo a entero, a fin de
evitar errores de
d precisin,
propios de
d otros tipos
de valores.
Ej
Ejemplo:
l
edad = InputBox( Ingrese edad )
edad = CInt(edad)
Franco Guidi Polanco

17/11/10

27

Para redondear valores:


Round(
ou d( valo
valor,, decimales)
Ejemplo:
Round( 1234.567 , 1)

1234.6

Estructuras de control: Secuencia

Estructuras de control: Decisin

Las instrucciones se escriben lnea por lnea.


Si se desea escribir una instruccin en ms de una
lnea, se debe utilizar el guin bajo ( _ ) que indica
la continuacin en la lnea siguiente.

Determina el curso de accin a seguir dependiendo


del valor de verdad de una condicin.

If condicin Then

acciones si condicin es verdadera


Else

acciones si condicin es falsa


Endif

Franco Guidi Polanco

17/11/10

29

Estructuras de control: Decisin

17/11/10

17/11/10

Ejemplo
Determinar si un nmero ingresado es o no par:

Ejemplo: programa que pide al usuario una nota. Si la nota


es igual o superior a cuatro, escribe APROBADO, en caso
contrario
t i escribe
ib REPROBADO.
REPROBADO

Franco Guidi Polanco

Franco Guidi Polanco

31

30

Estructuras de control: Iteracin

Estructuras de control: Iteracin

Realiza iteraciones mientras una condicin es


verdadera.

Construir un procedimiento que calcule la suma de


los N primeros enteros, con N proporcionado por
el usuario.

Do While condicin
instruccin 1
instruccin 2

Loop

Franco Guidi Polanco

17/11/10

33

Franco Guidi Polanco

17/11/10

34

Objetos en VBA para Excel


Representan documentos o partes de un
documento de Excel, para acceder y/o modificarlos
desde VBA.
Por ejemplo, un objeto de tipo Range representa
celdas de un documento y permite leer y alterar
los valores guardados en ellas.

Interaccin entre VBA y hojas de clculo

Franco Guidi Polanco

17/11/10

35

Franco Guidi Polanco

17/11/10

36

Principales objetos de VBA en Excel

Uso de referencias a objetos


Usando referencias a objetos se pueden acceder a datos en
planillas de Excel.
Acceso
A
a los
l objetos:
bj t
a) Acceso a un Libro:

Application
pp
(Excel)

Application.Workbooks( Ejemplo.xlsm )
Application.Workbooks(Ejemplo.xlsm)

Workbooks

b) Acceso a una Hoja de un Libro:

(Libro)

Application.Workbooks(Ejemplo.xlsm).Worksheets(Ingresos)
pp
( j p
)
( g
)
Worksheets

c) Acceso a un Rango (celda) dentro de una Hoja de un Libro:


Application.Workbooks(Ejemplo.xlsm).Worksheets(Ingresos).Range(C2)
pp
( j p
)
( g
)
g (
)

(Hoja)

d) Acceso a un Valor de un Rango (celda) dentro de una Hoja


de un Libro:

Range
(Celdas)
Franco Guidi Polanco

17/11/10

Application.Workbooks(Ejemplo.xlsm).Worksheets(Ingresos).
Range(C2).Value
37

Uso de referencias a objetos (por omisin)

Franco Guidi Polanco

17/11/10

38

Acceso a celdas mediante Range

Se puede omitir la referencia Application:


Workbooks(Ejemplo.xlsm).Worksheets(Ingresos).Range(C2)
( j p
)
( g
)
g (
)
.Value

Range permite acceder a celdas en planillas,


mediante el ingreso de las coordenadas de las
celdas. Ejemplo:

Si se omite la
l referencia
f
Workbooks
kb k se asume Libro
b
actual:
Wo ksheets(Ing esos) Range(C2) Val e
Worksheets(Ingresos).Range(C2).Value

Si se omite la referencia Worksheets se asume Hoja


de trabajo actual:
Range( C2 ).Value
Range(C2).Value
Franco Guidi Polanco

17/11/10

39

Franco Guidi Polanco

17/11/10

40

Acceso mediante Cells

Uso combinado de Range y Cells para acceder a


celdas de planillas

Cells permite el acceso a celdas de planillas


mediante la especificacin de sus coordenadas.
Ejemplo:

Ejemplo
Un Sub Procedure que escribe en una planilla la
tabla del 2:

Ejemplo (cont.)
Cdigo:

Ejemplo 2

Ejemplo 2 (cont.)

Un programa que escribe la tabla de multiplicar


correspondiente al nmero ingresado en la celda
A1 (la tabla empieza a desplegarse desde la lnea
3 en adelante)

Cdigo:

Cells y Value
Para acceder a un valor en una celda o modificar
el valor existente, se puede omitir la especificacin
de la propiedad Value al utilizar Cells:
Es lo mismo:
Cells(i,j).Value = 10
Cells(i,j) = 10
Como tambin:
x = Cells(i,j).Value
x = Cells(i,j)
Franco Guidi Polanco

17/11/10

47

También podría gustarte