12
Visual Basic para Aplicaciones (VBA) en Excel: aspectos elementales Franco Guidi Polanco Escuela de Ingeniería Industrial Pontificia Universidad Católica de Valparaíso, Chile [email protected] Introducción 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: Automáticamente, “grabando” una secuencia de operaciones (más fácil, pero más limitado). Manualmente, escribiendo una a una las instrucciones (más complejo, pero más 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

Una “macro” es una secuencia de instrucciones Una macro ... · PDF fileVisual Basic para Aplicaciones (VBA) en Excel: ... comandos que realizan tareas. ... Para acceder a un valor

Embed Size (px)

Citation preview

Page 1: Una “macro” es una secuencia de instrucciones Una macro ... · PDF fileVisual Basic para Aplicaciones (VBA) en Excel: ... comandos que realizan tareas. ... Para acceder a un valor

Visual Basic para Aplicaciones (VBA) en Excel: aspectos elementales

Franco Guidi PolancoEscuela de Ingeniería Industrial

Pontificia Universidad Católica de Valparaíso, [email protected]

Introducción

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

Automáticamente, “grabando” una secuencia de operaciones (más fácil, pero más limitado).Manualmente, escribiendo una a una las instrucciones (más complejo, pero más flexible).

17/11/10Franco Guidi Polanco 2

Para iniciar (Office 2007)

Desplegar “ficha de programador” en cinta de

iopciones

17/11/10Franco Guidi Polanco 3

Barra de herramientas (Office 2007)

Ficha del programador

17/11/10Franco Guidi Polanco 4

Page 2: Una “macro” es una secuencia de instrucciones Una macro ... · PDF fileVisual Basic para Aplicaciones (VBA) en Excel: ... comandos que realizan tareas. ... Para acceder a un valor

Seguridad de macros (Office 2007)

17/11/10Franco Guidi Polanco 5

Guardado de archivos en Office 2007

El guardado de planillas que contienen macros debe hacerse en archivos “con macros habilitadas”, de extensión XLSM.

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

Escritura de código en VBA

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

El editor de VBA es otra aplicación, pero opera integradamente con Excel.

17/11/10Franco Guidi Polanco 8

Page 3: Una “macro” es una secuencia de instrucciones Una macro ... · PDF fileVisual Basic para Aplicaciones (VBA) en Excel: ... comandos que realizan tareas. ... Para acceder a un valor

Vista del Editor VBA

17/11/10Franco Guidi Polanco 9

Inserción de un módulo

Oprimir botón derecho sobre ventana de proyecto y seleccionar Insertar - Módulo

17/11/10Franco Guidi Polanco 10

Código en un módulo

17/11/10Franco Guidi Polanco 11

Sub proceduresSub procedures

17/11/10Franco Guidi Polanco 12

Page 4: Una “macro” es una secuencia de instrucciones Una macro ... · PDF fileVisual Basic para Aplicaciones (VBA) en Excel: ... comandos que realizan tareas. ... Para acceder a un valor

Identificación de Sub procedures

Comienzan con la palabra Sub y terminan con End Sub .Se identifican por un nombre (seguido de paréntesis)Ejemplo:

Paréntesis(siempre van)

Nombre Sub

procedure (siempre van)Inicio Sub procedure

procedure

Fin Sub

17/11/10Franco Guidi Polanco 13

Fin Sub procedure Instrucciones

de Sub procedure

Ejecución de Sub procedures

Botón ejecutar en editor de VBA

En Excel: Herramientas – Macro - EjecutarEn Excel: Herramientas Macro Ejecutar

Elementos básicos de cualquier programa (incluyendo Sub procedures)

Tipos de datos Estructuras datos,

variables y operadores

de control

Sub procedure

p

InstruccionesExpresiones

Instrucciones elementales

17/11/10Franco 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 símbolo, pero debe comenzar siempre por una letra.No se deben usar espacios ni comas como parte de unNo se deben usar espacios ni comas como parte de un nombre de variable, como tampoco los símbolos: #, $, %, & o !, ni operadores aritméticos.Por ejemplo:

edad, cantidad_asistentes, NivelLiquido, GASTOS

No hay distinción entre mayúsculas y minúsculas, por lo tanto los identificadores: balanceFinal, BalanceFinal y BALANCEFINAL hacen referencia a la misma variable.

17/11/10Franco Guidi Polanco 16

Page 5: Una “macro” es una secuencia de instrucciones Una macro ... · PDF fileVisual Basic para Aplicaciones (VBA) en Excel: ... comandos que realizan tareas. ... Para acceder a un valor

Variables y el operador de asignación

VBA, por omisión, crea automáticamente variables cuando encuentra en el código un identificador válido.Para asignar un valor a una variable se debe utilizar el operador de asignación.

Operador asignación

Lado izquierdo Lado derecho

identificador_variable = valor

17/11/10Franco Guidi Polanco 17

(receptor) (valor a asignar)

Variables y tipos de datos

Si las variables son creadas automáticamente, el tipo de dato que almacenan depende del valor asignado:

Si se asigna un número la variable será numérica y se d á li ll i it étipodrán realizar con ella operaciones aritméticas.

dato = 100

Si se asigna un texto (que no represente un número) no se podrán realizar operaciones numéricas Los textosse podrán realizar operaciones numéricas. Los textos deben escribirse siempre entre comillas dobles (“”).

d “ l ”

17/11/10Franco Guidi Polanco 18

dato = “Hola”

Variables y tipos de datos

Caso particular:Si una variable recibe como valor un texto que qrepresenta a un número, entonces con esa variable sí se pueden realizar operaciones aritméticas.

dato = “100”

17/11/10Franco Guidi Polanco 19

Operadores aritméticos

Los argumentos de los operadores aritméticos son valores numéricos (números o variables numéricas) y generan como resultado un número.Operadores:

Suma: +Resta: -

l l ó *Multiplicación: *División: /División entera: \División entera: \Elevación a potencia: ^

17/11/10Franco Guidi Polanco 20

Page 6: Una “macro” es una secuencia de instrucciones Una macro ... · PDF fileVisual Basic para Aplicaciones (VBA) en Excel: ... comandos que realizan tareas. ... Para acceder a un valor

Operadores relacionales

Los operadores relacionales permiten comparar valores en expresiones. Generan como resultado un valor lógico (verdadero o falso).Operadores relacionales:

Mayor: >Menor: <

lMayor o igual: >=Menor o igual: <=Igual: =Igual: =

17/11/10Franco Guidi Polanco 21

Operadores lógicos

Los argumentos de operadores lógicos son valores lógicos y generan como resultado otro valor lógico.

Operadores lógicos (existen otros):p g ( )And: conjunciónOr: disyunciónNot: negación

17/11/10Franco Guidi Polanco 22

Operador de concatenación

Se utiliza para concatenar dos cadenas de caracteres:

& (ampersand)

Ejemplo:“Hola” & “Mundo” “HolaMundo”

nombre = “Hola”nombre & “Mundo” “HolaMundo”

17/11/10Franco Guidi Polanco 23

Expresiones

Aritméticas: generan como resultado un número. Ejemplo:

(3 * 4) / 5

Lógicas: generan como resultado un valor lógico (se utilizan generalmente como condiciones). Ejemplo:

Edad > 18(Edad > 18) And (Edad < 25)

(Valor <> 8) Or (Numero = 3) Or (Numero < 0)( ) ( ) ( )

Page 7: Una “macro” es una secuencia de instrucciones Una macro ... · PDF fileVisual Basic para Aplicaciones (VBA) en Excel: ... comandos que realizan tareas. ... Para acceder a un valor

Instrucciones elementales

Para ingreso de datos mediante un cuadro de diálogo:

InputBox( texto a desplegar )

Para despliegue de resultados mediante cuadro de diálogo:

MsgBox texto a desplegar

17/11/10Franco 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 gvalores que se suponen enteros, utilizaremos CIntpara convertir el valor leído a entero, a fin de

d ó devitar errores de precisión, propios de otros tipos de valores.Ej lEjemplo:

edad = InputBox( “Ingrese edad” )edad = CInt(edad)

17/11/10Franco Guidi Polanco 27

Instrucciones elementales

Para redondear valores:Round( valor, decimales)ou d( valo , decimales)

Ejemplo:Ejemplo:Round( 1234.567 , 1) 1234.6

Page 8: Una “macro” es una secuencia de instrucciones Una macro ... · PDF fileVisual Basic para Aplicaciones (VBA) en Excel: ... comandos que realizan tareas. ... Para acceder a un valor

Estructuras de control: Secuencia

Las instrucciones se escriben línea por línea. Si se desea escribir una instrucción en más de unaSi se desea escribir una instrucción en más de una línea, se debe utilizar el guión bajo ( _ ) que indica la continuación en la línea siguiente.

17/11/10Franco Guidi Polanco 29

Estructuras de control: Decisión

Determina el curso de acción a seguir dependiendo del valor de verdad de una condición.

If condición Thenacciones si condición es verdaderaacciones si condición es verdadera

Elseacciones si condición es falsaacciones si condición es falsa

Endif

17/11/10Franco Guidi Polanco 30

Estructuras de control: Decisión

Ejemplo: programa que pide al usuario una nota. Si la nota es igual o superior a cuatro, escribe APROBADO, en caso

t i ib REPROBADOcontrario escribe REPROBADO.

17/11/10Franco Guidi Polanco 31

Ejemplo

Determinar si un número ingresado es o no par:

Page 9: Una “macro” es una secuencia de instrucciones Una macro ... · PDF fileVisual Basic para Aplicaciones (VBA) en Excel: ... comandos que realizan tareas. ... Para acceder a un valor

Estructuras de control: Iteración

Realiza iteraciones mientras una condición es verdadera.

Do While condicióninstrucción 1instrucción 1instrucción 2…

Loop

17/11/10Franco Guidi Polanco 33

Estructuras de control: Iteración

Construir un procedimiento que calcule la suma de los N primeros enteros, con N proporcionado por el usuario.

17/11/10Franco Guidi Polanco 34

Interacción entre VBA y hojas de cálculoInteracción entre VBA y hojas de cálculo

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

Page 10: Una “macro” es una secuencia de instrucciones Una macro ... · PDF fileVisual Basic para Aplicaciones (VBA) en Excel: ... comandos que realizan tareas. ... Para acceder a un valor

Principales objetos de VBA en Excel

Applicationpp

(Excel)

Workbooks

(Libro)

Worksheets

(Hoja)

Range

(Hoja)

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

Uso de referencias a objetos (por omisión)

Se puede omitir la referencia Application:Workbooks(“Ejemplo.xlsm”).Worksheets(“Ingresos”).Range(“C2”)( j p ) ( g ) g ( )

.Value

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

Wo ksheets(“Ing esos”) Range(“C2”) Val eWorksheets(“Ingresos”).Range(“C2”).Value

Si se omite la referencia Worksheets se asume HojaSi se omite la referencia Worksheets se asume Hoja de trabajo actual:

Range(“C2”).ValueRange( C2 ).Value

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

Page 11: Una “macro” es una secuencia de instrucciones Una macro ... · PDF fileVisual Basic para Aplicaciones (VBA) en Excel: ... comandos que realizan tareas. ... Para acceder a un valor

Acceso mediante Cells

Cells permite el acceso a celdas de planillas mediante la especificación 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.)

Código:

Page 12: Una “macro” es una secuencia de instrucciones Una macro ... · PDF fileVisual Basic para Aplicaciones (VBA) en Excel: ... comandos que realizan tareas. ... Para acceder a un valor

Ejemplo 2

Un programa que escribe la tabla de multiplicar correspondiente al número ingresado en la celda A1 (la tabla empieza a desplegarse desde la línea 3 en adelante)

Ejemplo 2 (cont.)

Código:

Cells y Value

Para acceder a un valor en una celda o modificar el valor existente, se puede omitir la especificación de la propiedad Value al utilizar Cells:

Es lo mismo:Cells(i,j).Value = 10

Cells(i,j) = 10Como también:

x = Cells(i,j).Valuex = Cells(i,j)x Cells(i,j)

17/11/10Franco Guidi Polanco 47