You are on page 1of 12

Visual Basic para Aplicaciones (VBA) en

Excel: aspectos elementales


Franco Guidi Polanco
Escuela de Ingeniera Industrial
Pontificia Universidad Catlica de Valparaso, Chile
fguidi@ucv.cl
Introduccin
Una macro es una secuencia de instrucciones
que automatiza alguna tarea.
Una macro puede ser ejecutada repetidas veces.
Las macros pueden ser creadas de dos formas: p
Automticamente, grabando una secuencia de
operaciones (ms fcil, pero ms limitado).
Manualmente, escribiendo una a una las instrucciones
(ms complejo, pero ms flexible).
17/11/10 Franco Guidi Polanco 2
Para iniciar (Office 2007)
Desplegar ficha de
programador en cinta de
i opciones
17/11/10 Franco Guidi Polanco 3
Barra de herramientas (Office 2007)
Ficha del programador
17/11/10 Franco Guidi Polanco 4
Seguridad de macros (Office 2007)
17/11/10 Franco Guidi Polanco 5
Guardado de archivos en Office 2007
El guardado de planillas que contienen macros
debe hacerse en archivos con macros
habilitadas, de extensin XLSM.
17/11/10 Franco Guidi Polanco 6
Tipos de macros en VBA
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.
17/11/10 Franco Guidi Polanco 7
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).
El editor de VBA es otra aplicacin, pero opera
integradamente con Excel.
17/11/10 Franco Guidi Polanco 8
Vista del Editor VBA
17/11/10 Franco Guidi Polanco 9
Insercin de un mdulo
Oprimir botn derecho sobre ventana de proyecto
y seleccionar Insertar - Mdulo
17/11/10 Franco Guidi Polanco 10
Cdigo en un mdulo
17/11/10 Franco Guidi Polanco 11
Sub procedures Sub procedures
17/11/10 Franco Guidi Polanco 12
Identificacin de Sub procedures
Comienzan con la palabra Sub y terminan con
EndSub .
Se identifican por un nombre (seguido de
parntesis)
Ejemplo:
Parntesis
(siempre van)
Nombre
Sub
procedure (siempre van)
Inicio Sub
procedure
procedure
Fin Sub
17/11/10 Franco Guidi Polanco 13
Fin Sub
procedure
Instrucciones
de Sub procedure
Ejecucin de Sub procedures
Botn ejecutar en editor de VBA
En Excel: Herramientas Macro - Ejecutar En Excel: Herramientas Macro Ejecutar
Elementos bsicos de cualquier programa
(incluyendo Sub procedures)
Tipos de
datos
Estructuras
datos,
variables y
operadores
de control
Sub procedure
p
Instrucciones
Expresiones
Instrucciones
elementales
17/11/10 Franco Guidi Polanco 15
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 No se deben usar espacios ni comas como parte de un
nombre de variable, como tampoco los smbolos: #, $, %,
&o !, ni operadores aritmticos.
Por ejemplo:
edad, cantidad_asistentes, NivelLiquido, GASTOS
No hay distincin entre maysculas y minsculas, por lo
tanto los identificadores: balanceFinal, BalanceFinal y
BALANCEFINAL hacen referencia a la misma variable.
17/11/10 Franco Guidi Polanco 16
Variables y el operador de asignacin
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.
Operador
asignacin
Lado izquierdo Lado derecho
identificador_variable = valor
17/11/10 Franco Guidi Polanco 17
(receptor) (valor a asignar)
Variables y tipos de datos
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
d li ll i it ti podrn realizar con ella operaciones aritmticas.
dato = 100
Si se asigna un texto (que no represente un nmero) no
se podrn realizar operaciones numricas Los textos se podrn realizar operaciones numricas. Los textos
deben escribirse siempre entre comillas dobles ().
d l
17/11/10 Franco Guidi Polanco 18
dato = Hola
Variables y tipos de datos
Caso particular:
Si una variable recibe como valor un texto que q
representa a un nmero, entonces con esa variable s se
pueden realizar operaciones aritmticas.
dato = 100
17/11/10 Franco Guidi Polanco 19
Operadores aritmticos
Los argumentos de los operadores aritmticos son
valores numricos (nmeros o variables
numricas) y generan como resultado un nmero.
Operadores:
Suma: +
Resta: -
l l * Multiplicacin: *
Divisin: /
Divisin entera: \ Divisin entera: \
Elevacin a potencia: ^
17/11/10 Franco Guidi Polanco 20
Operadores relacionales
Los operadores relacionales permiten comparar
valores en expresiones. Generan como resultado
un valor lgico (verdadero o falso).
Operadores relacionales:
Mayor: >
Menor: <
l Mayor o igual: >=
Menor o igual: <=
Igual: = Igual: =
17/11/10 Franco Guidi Polanco 21
Operadores lgicos
Los argumentos de operadores lgicos son valores
lgicos y generan como resultado otro valor lgico.
Operadores lgicos (existen otros): p g ( )
And: conjuncin
Or: disyuncin
Not: negacin
17/11/10 Franco Guidi Polanco 22
Operador de concatenacin
Se utiliza para concatenar dos cadenas de
caracteres:
& (ampersand)
Ejemplo:
Hola &Mundo HolaMundo
nombre = Hola
nombre &Mundo HolaMundo
17/11/10 Franco Guidi Polanco 23
Expresiones
Aritmticas: generan como resultado un nmero.
Ejemplo:
(3 * 4) / 5
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) ( ) ( ) ( )
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
17/11/10 Franco Guidi Polanco 25
Instrucciones elementales
Pedro
Instrucciones elementales
Para convertir valor a entero (importante en el
ingreso de datos):
CInt( valor )
Importante: Toda vez que el usuario ingrese p q g
valores que se suponen enteros, utilizaremos CInt
para convertir el valor ledo a entero, a fin de
d d evitar errores de precisin, propios de otros tipos
de valores.
Ej l Ejemplo:
edad = InputBox( Ingrese edad )
edad = CInt(edad)
17/11/10 Franco Guidi Polanco 27
Instrucciones elementales
Para redondear valores:
Round( valor, decimales) ou d( valo , decimales)
Ejemplo: Ejemplo:
Round( 1234.567 , 1) 1234.6
Estructuras de control: Secuencia
Las instrucciones se escriben lnea por lnea.
Si se desea escribir una instruccin en ms de una 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.
17/11/10 Franco Guidi Polanco 29
Estructuras de control: Decisin
Determina el curso de accin a seguir dependiendo
del valor de verdad de una condicin.
If condicin Then
acciones si condicin es verdadera acciones si condicin es verdadera
Else
acciones si condicin es falsa acciones si condicin es falsa
Endif
17/11/10 Franco Guidi Polanco 30
Estructuras de control: Decisin
Ejemplo: programa que pide al usuario una nota. Si la nota
es igual o superior a cuatro, escribe APROBADO, en caso
t i ib REPROBADO contrario escribe REPROBADO.
17/11/10 Franco Guidi Polanco 31
Ejemplo
Determinar si un nmero ingresado es o no par:
Estructuras de control: Iteracin
Realiza iteraciones mientras una condicin es
verdadera.
Do While condicin
instruccin 1 instruccin 1
instruccin 2

Loop
17/11/10 Franco Guidi Polanco 33
Estructuras de control: Iteracin
Construir un procedimiento que calcule la suma de
los N primeros enteros, con N proporcionado por
el usuario.
17/11/10 Franco Guidi Polanco 34
Interaccin entre VBA y hojas de clculo Interaccin entre VBA y hojas de clculo
17/11/10 Franco Guidi Polanco 35
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.
17/11/10 Franco Guidi Polanco 36
Principales objetos de VBA en Excel
Application pp
(Excel)
Workbooks
(Libro)
Worksheets
(Hoja)
Range
(Hoja)
17/11/10 Franco Guidi Polanco 37
(Celdas)
Uso de referencias a objetos
Usando referencias a objetos se pueden acceder a datos en
planillas de Excel.
A l bj t Acceso a los objetos:
a) Acceso a un Libro:
Application.Workbooks(Ejemplo.xlsm) Application.Workbooks( Ejemplo.xlsm)
b) Acceso a una Hoja de un Libro:
Application.Workbooks(Ejemplo.xlsm).Worksheets(Ingresos) pp ( j p ) ( g )
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 ( )
d) Acceso a un Valor de un Rango (celda) dentro de una Hoja
de un Libro:
Application.Workbooks(Ejemplo.xlsm).Worksheets(Ingresos).
Range(C2).Value
17/11/10 Franco Guidi Polanco 38
Uso de referencias a objetos (por omisin)
Se puede omitir la referencia Application:
Workbooks(Ejemplo.xlsm).Worksheets(Ingresos).Range(C2) ( j p ) ( g ) g ( )
.Value
l f kb k b Si se omite la referencia Workbooks se asume Libro
actual:
Wo ksheets(Ing esos) Range(C2) Val e Worksheets(Ingresos).Range(C2).Value
Si se omite la referencia Worksheets se asume Hoja Si se omite la referencia Worksheets se asume Hoja
de trabajo actual:
Range(C2).Value Range( C2 ).Value
17/11/10 Franco Guidi Polanco 39
Acceso a celdas mediante Range
Range permite acceder a celdas en planillas,
mediante el ingreso de las coordenadas de las
celdas. Ejemplo:
17/11/10 Franco Guidi Polanco 40
Acceso mediante Cells
Cells permite el acceso a celdas de planillas
mediante la especificacin de sus coordenadas.
Ejemplo:
Uso combinado de Range y Cells para acceder a
celdas de planillas
Ejemplo
Un Sub Procedure que escribe en una planilla la
tabla del 2:
Ejemplo (cont.)
Cdigo:
Ejemplo 2
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)
Ejemplo 2 (cont.)
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) x Cells(i,j)
17/11/10 Franco Guidi Polanco 47

You might also like