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.
Visual Basic para Aplicaciones (VBA) en Las macros p
pueden ser creadas de dos formas:
Excel: aspectos elementales Automticamente, grabando una secuencia de
operaciones (ms fcil, pero ms limitado).
Franco Guidi Polanco Manualmente, escribiendo una a una las instrucciones
Escuela de Ingeniera Industrial (ms complejo, pero ms flexible).
Pontificia Universidad Catlica de Valparaso, Chile
fguidi@ucv.cl

Franco Guidi Polanco 17/11/10 2

Para iniciar (Office 2007) Barra de herramientas (Office 2007)

Desplegar ficha de Ficha del programador


programador en cinta de
opciones
i

Franco Guidi Polanco 17/11/10 3 Franco Guidi Polanco 17/11/10 4


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 5 Franco Guidi Polanco 17/11/10 6

Tipos de macros en VBA Escritura de cdigo en VBA

Subrutinas (VBA sub procedures): comandos que Se debe ingresar a la ventana del editor de VBA
realizan tareas. (oprimir botn Visual Basic en ficha del
Funciones (VBA functions): retornan un valor, programador, o ALT-F11).
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 7 Franco Guidi Polanco 17/11/10 8


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 9 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 Botn ejecutar en editor de VBA
End Sub .
Se identifican por un nombre (seguido de
parntesis) En Excel: Herramientas Macro - Ejecutar
Ejemplo: Nombre
Sub Parntesis
procedure (siempre van)
Inicio Sub
procedure

Fin Sub
procedure Instrucciones
de Sub procedure
Franco Guidi Polanco 17/11/10 13

Elementos bsicos de cualquier programa


Variables
(incluyendo Sub procedures)
Cada variable se identifica por su nombre (recomendable
Tipos de que sea significativo).
datos
datos, Estructuras
de control El nombre de una variable puede contener casi cualquier
variables y letra o smbolo, pero debe comenzar siempre por una letra.
operadores
p No se deben usar espacios ni comas como parte de un
nombre de variable, como tampoco los smbolos: #, $, %,
Sub procedure & o !, ni operadores aritmticos.
Por ejemplo:
edad, cantidad_asistentes, NivelLiquido, GASTOS
Instrucciones
Expresiones
elementales No hay distincin entre maysculas y minsculas, por lo
tanto los identificadores: balanceFinal, BalanceFinal y
BALANCEFINAL hacen referencia a la misma variable.

Franco Guidi Polanco 17/11/10 15 Franco Guidi Polanco 17/11/10 16


Variables y el operador de asignacin Variables y tipos de datos

VBA, por omisin, crea automticamente Si las variables son creadas automticamente, el
variables cuando encuentra en el cdigo un tipo de dato que almacenan depende del valor
identificador vlido. asignado:
Para asignar un valor a una variable se debe Si se asigna un nmero la variable ser numrica y se
utilizar el operador de asignacin. podrn
d realizar
li con ella
ll operaciones
i aritmticas.
it ti

dato = 100
Operador
asignacin
Si se asigna un texto (que no represente un nmero) no
identificador_variable = valor se podrn realizar operaciones numricas.
numricas Los textos
deben escribirse siempre entre comillas dobles ().
Lado izquierdo Lado derecho
(receptor) (valor a asignar) d
dato = Hola
l
Franco Guidi Polanco 17/11/10 17 Franco Guidi Polanco 17/11/10 18

Variables y tipos de datos Operadores aritmticos

Caso particular: Los argumentos de los operadores aritmticos son


Si una variable recibe como valor un texto que
q valores numricos (nmeros o variables
representa a un nmero, entonces con esa variable s se numricas) y generan como resultado un nmero.
pueden realizar operaciones aritmticas.
Operadores:
Suma: +
dato = 100 Resta: -
Multiplicacin:
l l *
Divisin: /
Divisin entera: \
Elevacin a potencia: ^

Franco Guidi Polanco 17/11/10 19 Franco Guidi Polanco 17/11/10 20


Operadores relacionales Operadores lgicos

Los operadores relacionales permiten comparar Los argumentos de operadores lgicos son valores
valores en expresiones. Generan como resultado lgicos y generan como resultado otro valor lgico.
un valor lgico (verdadero o falso).
Operadores relacionales: p
Operadores lgicos
g (existen
( otros):
)
Mayor: > And: conjuncin
Menor: < Or: disyuncin
Mayor o igual:
l >= Not: negacin
Menor o igual: <=
Igual: =

Franco Guidi Polanco 17/11/10 21 Franco Guidi Polanco 17/11/10 22

Operador de concatenacin Expresiones

Se utiliza para concatenar dos cadenas de Aritmticas: generan como resultado un nmero.
caracteres: Ejemplo:
& (ampersand) (3 * 4) / 5

Ejemplo: Lgicas: generan como resultado un valor lgico


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

Franco Guidi Polanco 17/11/10 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 Para redondear valores:


ingreso de datos): Round(
ou d( valo
valor,, decimales)
CInt( valor )
Importante:
p Toda vez q que el usuario ingrese
g Ejemplo:
valores que se suponen enteros, utilizaremos CInt Round( 1234.567 , 1) 1234.6
para convertir el valor ledo a entero, a fin de
evitar errores de
d precisin,
propios ded otros tipos
de valores.
Ej l
Ejemplo:
edad = InputBox( Ingrese edad )
edad = CInt(edad)
Franco Guidi Polanco 17/11/10 27
Estructuras de control: Secuencia Estructuras de control: Decisin

Las instrucciones se escriben lnea por lnea. Determina el curso de accin a seguir dependiendo
Si se desea escribir una instruccin en ms de una del valor de verdad de una condicin.
lnea, se debe utilizar el guin bajo ( _ ) que indica
la continuacin en la lnea siguiente.
If condicin Then
acciones si condicin es verdadera
Else
acciones si condicin es falsa
Endif

Franco Guidi Polanco 17/11/10 29 Franco Guidi Polanco 17/11/10 30

Estructuras de control: Decisin Ejemplo

Ejemplo: programa que pide al usuario una nota. Si la nota Determinar si un nmero ingresado es o no par:
es igual o superior a cuatro, escribe APROBADO, en caso
contrario
t i escribe
ib REPROBADO.
REPROBADO

Franco Guidi Polanco 17/11/10 31


Estructuras de control: Iteracin Estructuras de control: Iteracin

Realiza iteraciones mientras una condicin es Construir un procedimiento que calcule la suma de
verdadera. 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
Interaccin entre VBA y hojas de clculo
celdas de un documento y permite leer y alterar
los valores guardados en ellas.

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.
Application
pp
Acceso
A a los
l objetos:
bj t
(Excel) a) Acceso a un Libro:
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:


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

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


Range
de un Libro:
(Celdas) Application.Workbooks(Ejemplo.xlsm).Worksheets(Ingresos).
Range(C2).Value
Franco Guidi Polanco 17/11/10 37 Franco Guidi Polanco 17/11/10 38

Uso de referencias a objetos (por omisin) Acceso a celdas mediante Range

Se puede omitir la referencia Application: Range permite acceder a celdas en planillas,


Workbooks(Ejemplo.xlsm).Worksheets(Ingresos).Range(C2)
( j p ) ( g ) g ( ) mediante el ingreso de las coordenadas de las
.Value 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


Uso combinado de Range y Cells para acceder a
Acceso mediante Cells
celdas de planillas
Cells permite el acceso a celdas de planillas
mediante la especificacin de sus coordenadas.
Ejemplo:

Ejemplo Ejemplo (cont.)

Un Sub Procedure que escribe en una planilla la Cdigo:


tabla del 2:
Ejemplo 2 Ejemplo 2 (cont.)

Un programa que escribe la tabla de multiplicar Cdigo:


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

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