You are on page 1of 12

Introduccin

Una macro es una secuencia de instrucciones que automatiza alguna tarea. Una macro puede ser ejecutada repetidas veces. p Las macros pueden ser creadas de dos formas:
Automticamente, grabando una secuencia de operaciones (ms fcil, pero ms limitado). Manualmente, escribiendo una a una las instrucciones (ms complejo, pero ms flexible).

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

Franco Guidi Polanco

17/11/10

Para iniciar (Office 2007)


Desplegar ficha de programador en cinta de opciones i

Barra de herramientas (Office 2007) Ficha del programador

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

Franco Guidi Polanco

17/11/10

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.

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.

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 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 Parntesis (siempre van)

Ejecucin de Sub procedures Botn ejecutar en editor de VBA

En Excel: Herramientas Macro - Ejecutar

Fin Sub procedure


Franco Guidi Polanco 17/11/10

Instrucciones de Sub procedure


13

Elementos bsicos de cualquier programa (incluyendo Sub procedures) Tipos de datos, datos variables y operadores p Sub procedure Estructuras de control

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:
edad, cantidad_asistentes, NivelLiquido, GASTOS

Expresiones

Instrucciones elementales

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

Franco Guidi Polanco

17/11/10

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

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 podrn realizar con ella operaciones aritmticas. d li ll i it ti

dato = 100
Si se asigna un texto (que no represente un nmero) no se podrn realizar operaciones numricas. Los textos numricas deben escribirse siempre entre comillas dobles ().

identificador_variable
Lado izquierdo (receptor)
Franco Guidi Polanco 17/11/10

valor

Lado derecho (valor a asignar)


17

dato = l d Hola
Franco Guidi Polanco 17/11/10 18

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.

Operadores aritmticos Los argumentos de los operadores aritmticos son valores numricos (nmeros o variables numricas) y generan como resultado un nmero. Operadores:
Suma: + Resta: Multiplicacin: * l l Divisin: / Divisin entera: \ Elevacin a potencia: ^

dato = 100

Franco Guidi Polanco

17/11/10

19

Franco Guidi Polanco

17/11/10

20

Operadores relacionales Los operadores relacionales permiten comparar valores en expresiones. Generan como resultado un valor lgico (verdadero o falso). Operadores relacionales:
Mayor: > Menor: < Mayor o igual: >= l Menor o igual: <= Igual: =

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

Franco Guidi Polanco

17/11/10

21

Franco Guidi Polanco

17/11/10

22

Operador de concatenacin Se utiliza para concatenar dos cadenas de caracteres:


& (ampersand)

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) ) ( ) ( )
23

Ejemplo: Hola & Mundo nombre = Hola nombre & Mundo

HolaMundo

HolaMundo

Franco Guidi Polanco

17/11/10

Instrucciones elementales Para ingreso de datos mediante un cuadro de dilogo:


InputBox( texto a desplegar )

Instrucciones elementales

Para despliegue de resultados mediante cuadro de dilogo:


MsgBox texto a desplegar

Pedro
Franco Guidi Polanco 17/11/10 25

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 evitar errores d precisin, propios de otros tipos de d de valores. Ejemplo: Ej l edad = InputBox( Ingrese edad ) edad = CInt(edad)
Franco Guidi Polanco 17/11/10 27

Instrucciones elementales Para redondear valores: Round( valor, decimales) ou d( valo , 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 lnea, se debe utilizar el guin bajo ( _ ) que indica la continuacin en la lnea siguiente.

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


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: programa que pide al usuario una nota. Si la nota es igual o superior a cuatro, escribe APROBADO, en caso contrario escribe REPROBADO. t i ib REPROBADO

Ejemplo Determinar si un nmero ingresado es o no par:

Franco Guidi Polanco

17/11/10

31

Estructuras de control: Iteracin Realiza iteraciones mientras una condicin es verdadera.

Estructuras de control: Iteracin 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 los objetos: A l bj t a) Acceso a un Libro:

Application pp (Excel) Workbooks (Libro) Worksheets (Hoja) Range (Celdas)


Franco Guidi Polanco 17/11/10 37

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

Acceso a celdas mediante Range Range permite acceder a celdas en planillas, mediante el ingreso de las coordenadas de las celdas. Ejemplo:

Si se omite l referencia Workbooks se asume Libro la f kb k b actual:


Worksheets(Ingresos).Range(C2).Value Wo ksheets(Ing esos) Range(C2) Val e

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 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)
Franco Guidi Polanco 17/11/10 47

You might also like